首先要保证在系统比较空闲的时间做:
注意:以下所有操作都是以sys身份
1、如要监控tm_im_work_data表中的全部索引,首先通过以下sql查出该表所有的索引以及索引所对于的列。
select b.owner,b.index_name,b.index_type,a.column_name,b.UNIQUENESS
from DBA_ind_columns a,dba_indexes b
where a.index_name=b.index_name and a.table_owner=b.owner
and b.table_name=upper('&TABLENAME')
2、再使用以下sql生成脚本:
select 'alter index '||b.owner||'.'||b.index_name||' monitoring usage'
from DBA_ind_columns a,dba_indexes b
where a.index_name=b.index_name and a.table_owner=b.owner
and b.table_name= upper('&TABLENAME')
运行此SQL以后会生成类似如下的脚本:
alter index ibss.PK_IM_LBAS_QUE monitoring usage;
3、执行alter index ibss.PK_IM_LBAS_QUE monitoring usage;脚本,有几个执行几个。
4、监控:
当以上的alter脚本执行完以后,可以从object_usage表中查看监控结果。此表会生成类似于以下的结果:
SQL> select * from object_usage;
OBJ# FLAGS START_MONITORING END_MONITORING
---------- ---------- ------------------- -------------------
29899 0 03/19/2007 15:27:09
29967 0 03/29/2007 23:18:06
SQL>
其中obj#列对应的是object_id, 可通过与dba_objects中的object_id来查到该对象名,flag列为是否使用了索引,如值为1,那表示使用了索引,
如值为0,则表示未使用索引,START_MONITORING:表示启用监控的时间,END_MONITORING为结束监控时间。
5、结束监控,如不想再监控的话,可使用以下语句来结束对某个索引的监控,如:
alter index ibss.PK_IM_LBAS_QUE nomonitoring usage;
再次查看object_usage时,会有如下结果:
SQL> select * from object_usage;
OBJ# FLAGS START_MONITORING END_MONITORING
---------- ---------- ------------------- -------------------
29899 0 03/19/2007 15:27:09
29967 0 03/29/2007 23:18:06 03/29/2007 23:27:08
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/104152/viewspace-140001/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/104152/viewspace-140001/