oracle索引监控

oracle索引是加快查询速度,减少i/o操作的,但是如果索引无用的话
那他就是浪费资源的,尤其是在做DML操作时,这是 就需要我们查看
那些索引是无用的

相关视图:
user_indexes
user_ind_columns
v$object_usage

1. 查看表aa有哪些索引


SQL> select table_name,index_name from user_indexes
  2  where table_name='AA';

TABLE_NAME                     INDEX_NAME
------------------------------ ----------------------------
AA                             IDX_FUNC
AA                             IDX_BITM

已用时间:  00: 00: 00.09
SQL>

2. 监控制定索引

SQL> alter index  idx_func monitoring usage;

索引已更改。

已用时间:  00: 00: 00.39


SQL>select *  from aa where rownum<100;

 
3. 查看索引是否被用


SQL> select * from v$object_usage;

未选定行


SQL>

4.查完索引是否被用后,记得要关闭索引监控


SQL> alter index idx_func nomonitoring usage;

 

5.监控数据库所有的索引

等数据库运的足够多的sql语句时,查询v$object_usage


打开所有索引监控脚本

spool run_monitoring.sql

 select 'alter index  ' ||owner||'.'||  index_name|| ' monitoring usage'
    from dba_indexes;
    where owner not in ('SYS','SYSTEM')
spool off


然后运行脚本 run_monitoring.sql

@run_monitoring.sql

记得监控完关闭监控 

你可能感兴趣的:(oracle,sql,数据库,object,user,table)