四、indx cluster_factor(CF)
如果集群因子接近于表中的块数量,则表示索引适当排序;但是,如果集群因子接近于表中的行数量,则表示索引没有适当排序。集群因子的计算简要介绍如下:
(1) 按顺序扫描索引。
(2) 将当前索引值指向的ROWID的块部分与以前的索引值进行比较(比较索引中的邻近行)。
(3) 如果ROWID指向不同的TABLE块,则增加集群因子(对整个索引执行该操作)。
Clustering_Factor列位于USER_INDEXES视图中,该列反映了数据相对于已索引的列是否显得有序。如果Clustering_Factor列的值接近于索引中的树叶块(leaf block)的数目,表中的数据就是有序的。索引的树叶块存储索引值以及它们指向的ROWID。
例如,CUSTOMERS表上Customer_Id列的值可以由序列生成器产生,而且是表CUSTOMERS上的主键。Customer_Id的索引的集群因子就有可能非常接近于树叶块数(表示 有序)。当往数据库中添加客户数据时,它们就按照序列产生器所产生的序列值有序地存储在表中。然而,因为整个表的客户名字排列是随机的,所以 customer_name上的索引会有一个很高的集群因子。
集群因子对执行范围扫描的SQL语句有一定的影响。如果集群因子很低(相对于树叶块的数量),需要读取的表中块的数量就可以减少很多。这样也增加了相同的数据 块已经存在于内存中的可能性。一个较高的集群因子(相对于树叶块的数量)会增加满足基于索引列的范围查询所需的数据块数目。
五、sql最坏查询
select a.sql_id,a.ADDRESS,substr(a.SQL_TEXT,1,20),a.BUFFER_GETS,a.EXECUTIONS,a.BUFFER_GETS/a.EXECUTIONS avg from v$sqlarea a
where a.EXECUTIONS>0
and a.BUFFER_GETS<100000 order by 5
sql最频繁查询
select * from v$sqlarea a where a.EXECUTIONS=(select max(executions) from v$sqlarea )
六、检查点
(一)
1。什么时候发生checkpoint?
我们知道了checkpoint会刷新脏数据,但什么时候会发生checkpoint呢?以下几种情况会触发checkpoint。
1.当发生日志组切换的时候
2.当符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target参数设置的时候
3.当运行ALTER SYSTEM SWITCH LOGFILE的时候
4.当运行ALTER SYSTEM CHECKPOINT的时候
5.当运行alter tablespace XXX begin backup,end backup的时候
6.当运行alter tablespace ,datafile offline的时候;
(二):增量检查点(incremental checkpoint)
oracle8以后推出了incremental checkpoint的机制,在以前的版本里每次checkpoint时都会做一个full thread checkpoint,这样的话所有脏数据会被写到磁盘, 巨大的i/o对系统性能带来很大影响。为了解决这个问题,oracle引入了checkpoint queue机制,每一个脏块会被移到检查点队列里面去,按照low rdb(第一次对 此块修改对应的redo block address)来排列,靠近检查点队列尾端的数据块的low rba值是最小的,而且如果这些赃块被再次修改后它在检查点队列里的顺序也不 会改变,这样就保证了越早修改的块越早写入磁盘。每隔3秒钟ckpt会去更新控制文件和数据文件,记录checkpoint执行的情况
增量检查点并不去更新数据文件头,只是在控制文件中记录了checkpoint progress record这个区域,记下low rba,on-disk rba等信息。这些信息就可以用来快速 恢复。
完全检查点
完全检查点
select * from X$KCCRT where indx=0;
SQL> select * from X$KCCRT where indx=0;
ADDR INDX INST_ID RTNUM RTSTA RTCKP_SCN RTCKP_TIM RTCKP_THR RTCKP_RBA_SEQ RTCKP_RBA_BNO RTCKP_RBA_BOF RTCKP_ETB RTOTF RTOTB RTNLF RTLFH RTLFT RTCLN RTSEQ RTENB RTETS RTDIS RTDIT RTLHP RTSID RTOTS
-------- ---------- ---------- ---------- ---------- ---------------- -------------------- ---------- ------------- ------------- ------------- -------------------------------------------------------------------------------- ---------- ---------- ---------- ---------- ---------- ------ ---- ---------- ---------------- -------------------- ---------------- -------------------- ---------- ---------------- --------------------
B72E8EA0 0 1 1 15 670360 07/12/2009 23:00:01 1 55 2 16 02000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 5 1 5 3 55 1 06/30/2009 22:12:56 0 54 fsxybak 07/12/2009 23:00:01
增量检查点
SQL> select * from X$KCCCP where indx=0;
select * from X$KCCCP where indx=0;
ADDR INDX INST_ID CPTNO CPSTA CPFLG CPDRT CPRDB CPLRBA_SEQ CPLRBA_BNO CPLRBA_BOF CPODR_SEQ CPODR_BNO CPODR_BOF CPODS CPODT CPODT_I CPHBT CPRLS CPRLC CPMID CPSDR_SEQ CPSDR_BNO CPSDR_ADB
-------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- - --------- ---------------- -------------------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- ----------
B72E8E68 0 1 1 2 0 1445 22234 55 3 0 55 22238 0 673975 07/12/2009 23:03:32 692060612 692109879 1 690934373 1515281323 55 1 0
七、全表扫描
select * from v$sql_plan p where p.operation='TABLE ACCESS' and p.options='FULL';
ADDRESS HASH_VALUE SQL_ID PLAN_HASH_VALUE CHILD_ADDRESS CHILD_NUMBER TIMESTAMP OPERATION OPTIONS OBJECT_NODE OBJECT# OBJECT_OWNER OBJECT_NAME OBJECT_ALIAS OBJECT_TYPE OPTIMIZER ID PARENT_ID DEPTH POSITION SEARCH_COLUMNS COST CARDINALITY BYTES OTHER_TAG PARTITION_START PARTITION_STOP PARTITION_ID OTHER DISTRIBUTION CPU_COST IO_COST TEMP_SPACE ACCESS_PREDICATES FILTER_PREDICATES PROJECTION TIME QBLOCK_NAME REMARKS OTHER_XML
-------- ---------- ------------- --------------- ------------- ------------ ----------- ----------------------------------------------------- ------- ------------------------------------------------------------ ------------------------------------------------------------------------- ------- ---------- ------------------------------ ------------------------------ ------------------------------------------------------------- ---- ---------------------------------------- ---------------------------------------- ---------- ---------- ---------- ---------- ----------- --- ---------- ----------- ---------- ---------------------------------------------------------------------- --------------- -------------- -- ---------- -------------------------------------------------------------------------------- ---------------------------------------- ---------- ---------- ---------- -------------------------------------------------------------------------------- --------------------------------------- ----------------------------------------- -------------------------------------------------------------------------------- ---------- -------- ---------------------- -------------------------------------------------------------------------------- -------------------------------------- ------------------------------------------
31138A58 1396966618 6k825qt9n816u 3641933560 310FDA94 0 2009-7-20 1 TABLE ACCESS FULL 41241 SYSMAN MGMT_PERFORMANCE_NAMES MGMT_PERFORMANCE_NAMES@SEL$1 TABLE 2 1 2 1 0 3 1 30 51087 3 ("IS_DBMSJOB"='Y' AND :B1 LIKE "DBMS_JOBNAME"||'%') "DISPLAY_NAME"[VARCHAR2,128] 1 SEL$1
311E8988 2261912911 7mvdhsu3d43ag 1161810204 311E8628 0 2009-7-20 1 TABLE ACCESS FULL 5055 SYS SCHEDULER$_CLASS B@SEL$2 TABLE 4 3 4 1 0 2 1 41 7727 2 ("B"."AFFINITY"=:5 AND BITAND("B"."FLAGS",:4)<>0) "B"."OBJ#"[NUMBER,22] 1 SEL$5DA710D3
31136820 3616542262 89qyn4bbt03jq 3321895608 310D39F8 0 2009-7-20 1 TABLE ACCESS FULL 14 SYS SEG$ S@SEL$3 CLUSTER 31 30 7 1 0 20 2883 31713 1145971 20 "S"."TS#"[NUMBER,22], "S"."FILE#"[NUMBER,22], "S"."BLOCK#"[NUMBER,22] 1 SEL$335DD26A
31136820 3616542262 89qyn4bbt03jq 3321895608 310D39F8 0 2009-7-20 1 TABLE ACCESS FULL 16 SYS TS$ TS@SEL$3 CLUSTER 33 32 8 1 0 4 9 81 86987 4 "TS"."TS#"[NUMBER,22], "TS"."NAME"[VARCHAR2,30] 1 SEL$335DD26A
31136820 3616542262 89qyn4bbt03jq 3321895608 310D39F8 0 2009-7-20 1 TABLE ACCESS FULL
九.查询无效的对象(invalid)
select object_name,object_id from dba_objects where owner='scott' and status='INVALID';
查询invalid的procedure,invalud表示在named类型下创建时编译出错导致在p_code生成时候给的缀INVALID
SQL> select object_id,object_name,status from dba_objects where owner='TOM' and object_type='PROCEDURE';
OBJECT_ID OBJECT_NAME STATUS
---------- -------------------------------------------------------------------------------- -------
42120 P_BIND INVALID
42824 PROC_XX INVALID
43015 P_TEST VALID