====================V$SEGMENT_STATISTICS====================这个视图的作用:它能实时监控段级别统计项,可用于鉴定性能问题源于表或者索引。可用于展示段的使用情况,及对象的统计信息。比如,哪些表和索引被经常使用,哪些对象上存在频繁的逻辑读和物理读。这个视图对优化有很好的作用。视图结构SQL> desc v$segment_statistics  Name                                                              Null?    Type ----------------------------------------------------------------- -------- --------------------- OWNER                                                                      VARCHAR2(30) OBJECT_NAME                                                                VARCHAR2(30) SUBOBJECT_NAME                                                             VARCHAR2(30) TABLESPACE_NAME                                                            VARCHAR2(30) TS# (表空间标识)                                                         NUMBER OBJ# (字典标识)                                                          NUMBER DATAOBJ#  (数据对象标识)                                                 NUMBER OBJECT_TYPE                                                                VARCHAR2(18) STATISTIC_NAME (统计项名称)                                              VARCHAR2(64) STATISTIC#  (统计项标识)                                                 NUMBER VALUE (统计项值)                                                         NUMBER统计项名称,V$SEGMENT_STATISTICS会对这些统计项采样SQL> select distinct(STATISTIC_NAME) from v$segment_statistics;STATISTIC_NAME----------------------------------------------------------------gc buffer busydb block changesoptimized physical readsspace usedsegment scansgc cr blocks receivedgc current blocks receivedrow lock waitsbuffer busy waitsphysical readsphysical reads directphysical writesphysical write requestsspace allocatedlogical readsphysical read requestsphysical writes directITL waits18 rows selected. 该视图的用法:1.通过该性能视图找出gc buffer busy等待事件前10的对象with stats as (select owner,object_name,statistic_name,valuefrom v$segment_statisticswhere statistic_name='gc buffer busy'order by value desc)select * from stats where rownum/     OWNER                          OBJECT_NAME                    STATISTIC_NAME            VALUE------------------------------ ------------------------------ -------------------- ----------SYS                            WRH$_SEG_STAT_PK               gc buffer busy                0DBSNMP                         BSLN_TIMEGROUPS_PK             gc buffer busy                0SYS                            IND$                           gc buffer busy                0DBSNMP                         BSLN_BASELINES                 gc buffer busy                0SYS                            I_OBJ#                         gc buffer busy                0SYS                            WRH$_DLM_MISC                  gc buffer busy                0DBSNMP                         BSLN_BASELINES_PK2             gc buffer busy                0SYS                            WRH$_DLM_MISC_PK               gc buffer busy                0SYS                            TS$                            gc buffer busy                0SYS                            I_TS#                          gc buffer busy                010 rows selected.2.查出索引自启动来是否被使用。如果physical reads 统计项为0,说明这个索引从来没有使用过。相对于监控索引,这个方法更方便快捷,同时减轻了数据库不必要的监控索引负担。SELECT owner,object_name,statistic_name,valuefrom v$segment_statisticsWHERE STATISTIC_NAME='physical reads'and object_name='PK_EMP';OWNER                          OBJECT_NAME                    STATISTIC_NAME            VALUE------------------------------ ------------------------------ -------------------- ----------SCOTT                          PK_EMP                         physical reads                3在查v$segment_statistics资料时,有人说明明索引用了好几次了,但是physical reads和logical reads的value都不增加。详见itpub:http://www.itpub.net/thread-1407139-1-1.html我通过实验得出的结论是:    如果session 1执行一条固定SQL,A索引第一次使用,那么肯定A索引的physical reads的value肯定会增加,这时A索引的logical reads的value是0。而后,session 1继续执行该SQL,A索引的physical reads的value不变,logical reads的value增加。但是session 1继续执行该SQL,physical reads和logical reads的value都不会变化。这是因为A索引已经缓存到了pga中,所以无需继续读BUFFER_CACHE中的A索引缓存,故logical reads也不会增加。但是,如果打开一个新session去执行session 1 执行的SQL,那么A索引的physical reads values不变,logical reads的value增加。3.物理IO最多的10个表select table_name,total_phys_iofrom ( select owner||'.'||object_name as table_name,sum(value) as total_phys_iofrom v$segment_statisticswhere owner!='SYS' and object_type='TABLE'and statistic_name in ('physical reads','physical reads direct','physical writes','physical writes direct')group by owner||'.'||object_nameorder by total_phys_io desc)where rownumTABLE_NAME                                                    TOTAL_PHYS_IO------------------------------------------------------------- -------------SCOTT.EMP                                                                22DBSNMP.BSLN_BASELINES                                                     6XDB.XDB$ROOT_INFO                                                         6APEX_030200.WWV_FLOW_PLATFORM_PREFS                                       3SYSTEM.SQLPLUS_PRODUCT_PROFILE                                            2SYSTEM.AQ$_QUEUES                                                         2SYSMAN.AQ$_MGMT_NOTIFY_QTABLE_L                                           1SYSMAN.AQ$_MGMT_LOADER_QTABLE_L                                           1SYSTEM.REPCAT$_REPPROP                                                    1WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_L                                          110 rows selected.4.逻辑读最高的10个对象col OBJECT_TYPE for a10col OBJECT_NAME for a60select *  from (select object_type,owner||'.'||object_name as object_name, statistic_name, value  from V$SEGMENT_STATISTICS  where statistic_name = 'logical reads' and owner not in ('SYS','SYSMAN','DBSNMP','SYSTEM')order by 3 desc)  where rownumOBJECT_TYP OBJECT_NAME                                                  STATISTIC_NAME            VALUE---------- ------------------------------------------------------------ -------------------- ----------INDEX      XDB.XDB$SCHEMA_URL                                           logical reads                 0INDEX      EXFSYS.RLM$SCHACTIONORDER                                    logical reads                 0INDEX      EXFSYS.RLM$JOINQKEY                                          logical reads                 0TABLE      XDB.XDB$ROOT_INFO                                            logical reads                16TABLE      WMSYS.AQ$_WM$EVENT_QUEUE_TABLE_L                             logical reads                16INDEX      WMSYS.SYS_IOT_TOP_13792                                      logical reads                 0TABLE      SCOTT.EMP                                                    logical reads                 0INDEX      SCOTT.PK_EMP                                                 logical reads                48INDEX      APEX_030200.WWV_FLOW_PLATFORM_PREFS_FKIDX                    logical reads                 0TABLE      APEX_030200.WWV_FLOW_PLATFORM_PREFS                          logical reads                 010 rows selected.参考资料:http://book.51cto.com/art/201108/288152.htmhttp://blog.sina.com.cn/s/blog_5d3da3280100n313.html
10-22 16:53