【Oracle 世界一等公民视图】 认识 v$segment_statistics
在
MOS 上发了SR、问 v$segment_statistics 是如何更新的?
Oracle 答曰:v$segment_statisitcs自 9IR2 引入以来、仅用作 internal research【这回答、坑爹嘛】
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> ed
- Wrote 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 desc
- sys@ORCL> /
- OWNER TABLE_NAME TOTAL_READS
- ------------------------------ ------------------------------ ------------
- SYS WRI$_OPTSTAT_HISTGRM_HISTORY 14080
- SYS WRI$_OPTSTAT_HISTHEAD_HISTORY 4736
- SYSMAN MGMT_METRIC_COLLECTIONS 4000
- SYS HIST_HEAD$ 3936
- SYS COL_USAGE$ 3104
- SYS FIXED_OBJ$ 2912
- SYSMAN MGMT_SYSTEM_PERFORMANCE_LOG 2688