--查看字典命中率
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替换。
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');