DBA常用的一些SQL以及视图02 [转帖]_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4435 | 回复: 1   主题: DBA常用的一些SQL以及视图02 [转帖]        下一篇 
Gavin
注册用户
等级:少校
经验:878
发帖:130
精华:1
注册:2011-7-21
状态:离线
发送短消息息给Gavin 加好友    发送短消息息给Gavin 发消息
发表于: IP:您无权察看 2011-7-21 13:23:16 | [全部帖] [楼主帖] 1  楼

--查看字典命中率

select (sum(getmisses)/sum(gets)) ratio from v$rowcache;

--查看undo段的使用情况

SELECT d.segment_name,extents,optsize,shrinks,aveshrink,aveactive,d.status

FROM v$rollname n,v$rollstat s,dba_rollback_segs d

WHERE d.segment_id=n.usn(+) and d.segment_id=s.usn(+);

--无效的对象

select owner,object_type,object_name from dba_objects where status='INVALID';

select constraint_name,table_name from dba_constraints where status='INVALID';

--求出某个进程,并对它进行跟踪

select s.sid,s.serial# from v$session s,v$process p where s.paddr=p.addr and p.spid=&1;

exec dbms_system.SET_SQL_TRACE_IN_SESSION(&1,&2,true);

exec dbms_system.SET_SQL_TRACE_IN_SESSION(&1,&2,false);

--求出锁定的对象

select do.object_name,session_id,process,locked_mode

from v$locked_object lo, dba_objects do where lo.object_id=do.object_id;

--求当前session的跟踪文件

SELECT p1.value || '/' || p2.value || '_ora_' || p.spid || '.ora' filename

FROM v$process p, v$session s, v$parameter p1, v$parameter p2

WHERE p1.name = 'user_dump_dest' AND p2.name = 'instance_name'

AND p.addr = s.paddr AND s.audsid = USERENV('SESSIONID') AND p.background is null AND instr(p.program,'CJQ') = 0;

--求对象所在的文件及块号

select segment_name,header_file,header_block

from dba_segments where segment_name like '&1';

--求对象发生事务时回退段及块号

select a.segment_name,a.header_file,a.header_block

from dba_segments a,dba_rollback_segs b

where a.segment_name=b.segment_name and b.segment_id='&1'

--9i的在线重定义表

/*如果在线重定义的表没有主键需要创建主键*/

exec dbms_redefinition.can_redef_table('cybercafe','announcement');

create table anno2 as select * from announcement

exec dbms_redefinition.start_redef_table('cybercafe','announcement','anno2');

exec dbms_redefinition.sync_interim_table('cybercafe','announcement','anno2');

exec dbms_redefinition.finish_redef_table('cybercafe','announcement','anno2');

drop table anno2

exec dbms_redefinition.abort_redef_table('cybercafe','announcement','anno2');

--常用的logmnr脚本(cybercafe)

exec sys.dbms_logmnr_d.build(dictionary_filename =>'esal',dictionary_location =>'/home/oracle/logmnr');

exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_24050.dbf', ptions=>sys.dbms_logmnr.new);

exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22912.dbf', ptions=>sys.dbms_logmnr.addfile);

exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22913.dbf', ptions=>sys.dbms_logmnr.addfile);

exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22914.dbf', ptions=>sys.dbms_logmnr.addfile);

exec sys.dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/esal.ora');

create table logmnr2 as select * from v$logmnr_contents;

死锁问题:1)查找死锁的进程:

sqlplus "/as sysdba"

SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,

l.OS_USER_NAME,l.PROCESS FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;

2)kill掉这个死锁的进程:

alter system kill session 'sid,serial#'; (其中sid=l.session_id)

3)如果还不能解决,

select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;

其中sid用死锁的sid替换。

exit

--与权限相关的字典

ALL_COL_PRIVS表示列上的授权,用户和PUBLIC是被授予者

ALL_COL_PRIVS_MADE表示列上的授权,用户是属主和被授予者

ALL_COL_RECD表示列上的授权,用户和PUBLIC是被授予者

ALL_TAB_PRIVS表示对象上的授权,用户是PUBLIC或被授予者或用户是属主

ALL_TAB_PRIVS_MADE表示对象上的权限,用户是属主或授予者

ALL_TAB_PRIVS_RECD表示对象上的权限,用户是PUBLIC或被授予者

DBA_COL_PRIVS数据库列上的所有授权

DBA_ROLE_PRIVS显示已授予用户或其他角色的角色

DBA_SYS_PRIVS已授予用户或角色的系统权限

DBA_TAB_PRIVS数据库对象上的所有权限

ROLE_ROLE_PRIVS显示已授予用户的角色

ROLE_SYS_PRIVS显示通过角色授予用户的系统权限

ROLE_TAB_PRIVS显示通过角色授予用户的对象权限

SESSION_PRIVS显示用户现在可利用的所有系统权限

USER_COL_PRIVS显示列上的权限,用户是属主、授予者或被授予者

USER_COL_PRIVS_MADE显示列上已授予的权限,用户是属主或授予者

USER_COL_PRIVS_RECD显示列上已授予的权限,用户是属主或被授予者

USER_ROLE_PRIVS显示已授予给用户的所有角色

USER_SYS_PRIVS显示已授予给用户的所有系统权限

USER_TAB_PRIVS显示已授予给用户的所有对象权限

USER_TAB_PRIVS_MADE显示已授予给其他用户的对象权限,用户是属主

USER_TAB_PRIVS_RECD显示已授予给其他用户的对象权限,用户是被授予者

--如何用dbms_stats分析表及模式?

exec dbms_stats.gather_schema_stats(ownname=>'&USER_NAME',estimate_percent=>dbms_stats.auto_sample_size,

method_opt => 'for all columns size auto',degree=> DBMS_STATS.DEFAULT_DEGREE);

exec dbms_stats.gather_schema_stats(ownname=>'&USER_NAME',estimate_percent=>dbms_stats.auto_sample_size,cascade=>true);

/*

FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]

FOR COLUMNS [size clause] column|attribute [size_clause] [,column|attribute [size_clause]...],

where size_clause is defined as size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}

integer--Number of histogram buckets. Must be in the range [1,254].

REPEAT--Collects histograms only on the columns that already have histograms.

AUTO--Oracle determines the columns to collect histograms based on data distribution and the workload of the columns.

SKEWONLY--Oracle determines the columns to collect histograms based on the data distribution of the columns

*/

常用系统表,视图和作用

查看有关用户的信息:dba_users

查看有关角色的信息:dba_roles,dba_role_privs,role_sys_privs

查看有关系统权限的信息:dba_sys_privs

查看当前数据库表空间状况:dba_tablespaces

查看用户的系统权限:user_sys_privs

查看某个用户对另外一个用户授予的权限:user_tab_privs_made

查看某个用户对另外一个用户授予的列级权限:user_col_privs_made

查看某个用户接受的权限:user_tab_privs_recd

查看某个用户接受的列级权限:user_col_privs_recd

查看有关用户的角色信息:user_role_privs

查看有关授予某个角色的系统权限信息:role_sys_privs

查看有关授予某个角色的对象权限信息:role_tab_privs

查看当前用户所拥有的表信息:user_tables

查看当前用户有权限访问的表信息:all_tables

查看当前用户所拥有的所有表的列信息:user_tab_columns

查看当前用户可以访问的表中的列信息:all_tab_columns

查看当前用户所拥有的所有约束信息:user_constraint

查看当前用户所拥有的所有约束和列的关系:user_cons_constraint

查看表中注释内容:user_tab_comments

查看表中列注释内容:user_col_comments

提供练习的表:dual

查看相关时区的名称和简称:v$timezone_names

V$OPTION:显示已安装的Oracle选项

select * from v$option;

取得Oracle版本的详细信息

select * from v$version;

取��初始化参数的详细信息

select name,value,description from v$parameter;

取得当前例程的详细信息

select * from v$instance;

1、用户

    查看当前用户的缺省表空间

 SQL>select username,default_tablespace from user_users;

    查看当前用户的角色

 SQL>select * from user_role_privs;

    查看当前用户的系统权限和表级权限

    SQL>select * from user_sys_privs;或

select  username,  default_tablespace,  temporary_tablespace, priv granted_role,  default_role  from dba_users u,      (select grantee,granted_role priv,default_role           from dba_role_privs          union all         select grantee,privilege  priv,''           from dba_sys_privs c       ) r where u.username = r.grantee order by username ;

SQL>select * from user_tab_privs;

    显示当前会话所具有的权限

 SQL>select * from session_privs;

    显示指定用户所具有的系统权限

 SQL>select * from dba_sys_privs where grantee='GAME';

2、表

    查看用户下所有的表

 SQL>select * from user_tables;

    查看名称包含log字符的表

 SQL>select object_name,object_id from user_objects

where instr(object_name,'LOG')>0;

    查看某表的创建时间

 SQL>select object_name,created from user_objects where object_name=upper('&table_name');

    查看某表的大小

 SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

where segment_name=upper('&table_name');

    查看放在ORACLE的内存区里的表

 SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

3、索引

    查看索引个数和类别

 SQL>select index_name,index_type,table_name from user_indexes order by table_name;

    查看索引被���引的字段

 SQL>select * from user_ind_columns where index_name=upper('&index_name');

    查看索引的大小

 SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments

where segment_name=upper('&index_name');

4、序列号

    查看序列号,last_number是当前值

 SQL>select * from user_sequences;

5、视图

    查看视图的名称

 SQL>select view_name from user_views;

    查看创建视图的select语句

 SQL>set view_name,text_length from user_views;

    SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小

 SQL>select text from user_views where view_name=upper('&view_name');

6、同义词

    查看同义词的名称

 SQL>select * from user_synonyms;

7、约束条件

    查看某表的约束条件

 SQL>select constraint_name, constraint_type,search_condition, r_constraint_name

from user_constraints where table_name = upper('&table_name');

SQL>select c.constraint_name,c.constraint_type,cc.column_name

from user_constraints c,user_cons_columns cc

where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')

and c.owner = cc.owner and c.constraint_name = cc.constraint_name

order by cc.position;

8、存储函数和过程

    查看函数和过程的状态

 SQL>select object_name,status from user_objects where object_type='FUNCTION';

SQL>select object_name,status from user_objects where object_type='PROCEDURE';

    查看函数和过程的源代码

 SQL>select text from all_source where wner=user and name=upper('&plsql_name');




赞(0)    操作        顶端 
dream007
注册用户
等级:少校
经验:1086
发帖:53
精华:0
注册:2015-7-2
状态:离线
发送短消息息给dream007 加好友    发送短消息息给dream007 发消息
发表于: IP:您无权察看 2015-8-16 21:42:52 | [全部帖] [楼主帖] 2  楼

北京联动北方科技有限公司感谢楼主分享!!!



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论