在 MOS 上發了SR、問 v$segment_statistics 是如何更新的?
Oracle 答曰:v$segment_statisitcs自 9IR2 引入以來、僅用作 internal research【這回答、坑爹嘛】
㈠ 先看錶結構:
sys@ORCL> 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 #統計項值、單位是 訪問次數
㈡ 接著談適用情境
可用於監測段級(segment_level)統計項、評鑑效能問題源於表或者索引
我們就可以據此分析資料庫中是否有部分對象的訪問過於集中、等待過於頻繁
例如、對於ITL等待較高的對象、則可以考慮為其增加更多的事務槽
㈢ 然後瞧個例子
使用 v$segment_statistics 找到最經常訪問的表
sys@ORCL> edWrote file afiedt.buf 1 SELECT t.owner,t.table_name,lr.value+pr.value AS total_reads 2 FROM 3 (SELECT owner,object_name,value FROM v$segment_statistics WHERE statistic_name='logical reads') lr, 4 (SELECT owner,object_name,value FROM v$segment_statistics WHERE statistic_name='logical reads') pr, dba_tables t 5 WHERE lr.owner=pr.owner AND 6 lr.object_name=pr.object_name AND 7 lr.owner=t.owner AND 8 lr.object_name=t.table_name 9* ORDER BY 3 descsys@ORCL> /OWNER TABLE_NAME TOTAL_READS------------------------------ ------------------------------ ------------SYS WRI$_OPTSTAT_HISTGRM_HISTORY 14080SYS WRI$_OPTSTAT_HISTHEAD_HISTORY 4736SYSMAN MGMT_METRIC_COLLECTIONS 4000SYS HIST_HEAD$ 3936SYS COL_USAGE$ 3104SYS FIXED_OBJ$ 2912SYSMAN MGMT_SYSTEM_PERFORMANCE_LOG 2688