【实践】对v$object_usage的内容进行检查(2011.4月份进行统计的)

本文介绍了如何使用SQL语句监控数据库中的索引使用情况,并探讨了不同类型的索引及其管理方法,包括如何区分并处理各类索引。

 

 

重温一下监控的语句:

 

alter index index_name monitoring usage; 
alter index index_name nomonitoringusage; 

====================================================================

通过对比v$object_usage以及user_indexes中的记录条数,发现少了2条:
SELECT *
  FROM user_indexes a
 WHERE NOT EXISTS (SELECT 1
                     FROM v$object_usage b
                    WHERE b.index_name = a.index_name)
 
而且这2条index的index_type都为LOB(查询user_indexes得出的,现在有的index_type为:“FUNCTION-BASED NORMAL”、“LOB”、“NORMAL”、“NORMAL/REV”)

对于LOB字段,进行alter index 。。。。monitoring usage时报错:
“ORA-22864: cannot ALTER or DROP LOB indexes”

====================================================================

对于索引需要进行以下分类:
1. 由于constraint建立的索引: 譬如: 主键、唯一键等;
2. 由于为了满足主外键因素,建立的索引,这样主键更新速度就非常快:
3. 为了配合应用,建立的索引 --- 

只有第3类索引如果无人使用,可以删除


constraint_type的类型:

Type CodeType DescriptionActs On Level
CCheck on a tableColumn
ORead Only on a viewObject
PPrimary KeyObject
RReferential AKA Foreign KeyColumn
UUnique KeyColumn
VCheck Option on a viewObject

====================================================================

如何区分上述3类索引:

第一类:
    对于user_constraints表中,constraint_type为P、U的相关索引需要保留、
   P、U的约束,都有对应的索引名字在user_constraints表中,可以直接匹配;

第二类:
   这一类最麻烦,在user_constraints中,有约束记录,但是索引不是强制建立的,在user_constraints表中的index_name中是空的,需要自己进行匹配;

第三类:
   剩下的都是属于第三类;


====================================================================

这样找出和PrimaryKey,ForeignKey、以及Unique约束无关的索引了

====================================================================

有些时候,一个表需要使用到好几条索引,而且索引最前面的有几个字段和外键的顺序一样,这样就会引起一定的问题。
这个时候就不管了,只要是没有使用到了,一律停止该索引



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值