监控索引的使用情况

从Oracle 9i 开始,可以监控Oracle 索引的使用情况,具体方法如下:

alter index . MONITORING USAGE;

例如

alter index insur_test.INDEX_BS_INSURED_NAME MONITORING USAGE;

对某个INDEX 开启监控后,就可以观察该INDEX 是否被使用:

SQL> select index_name,monitoring,used,start_monitoring,end_monitoring from v$object_usage;

INDEX_NAME                     MONITORING USED START_MONITORING    END_MONITORING

------------------------------ ---------- ---- ------------------- -------------------

INDEX_BS_INSURED_NAME          YES        NO   11/12/2012 09:10:37

如上所示该索引已被监控了,但还没被使用

下面再使用这个索引进行查询

select * from bs_insured a where a.name='丁淼';

再查询一下监控情况

SQL> select index_name,monitoring,used,start_monitoring,end_monitoring from v$object_usage;

INDEX_NAME                     MONITORING USED START_MONITORING    END_MONITORING

------------------------------ ---------- ---- ------------------- -------------------

INDEX_BS_INSURED_NAME          YES        YES  11/12/2012 09:10:37

监控的索引已经使用了

注意的是,由于V$OBJECT_USAGE 视图限制了只显示当前用户下被监控的索引的情况,

因此,通过其他用户登录数据库,将无法看到,如果要查看所有用户下的被监控的索引的情

况,使用如下SQL:

select u.name owner, io.name index_name, t.name table_name,

decode(bitand(i.flags, 65536), 0, 'NO', 'YES') monitoring,

decode(bitand(ou.flags, 1), 0, 'NO', 'YES') used,

ou.start_monitoring start_monitoring,

ou.end_monitoring end_monitoring

from sys.user$ u, sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou

where i.obj# = ou.obj#

and io.obj# = ou.obj#

and t.obj# = i.bo#

and u.user# = io.owner#

如果要取消对索引使用情况的监控,使用下列SQL:

alter index . NOMONITORING USAGE;

alter index insur_test.INDEX_BS_INSURED_NAME NOMONITORING USAGE;

再查询该索引的监控情况

SQL> select index_name,monitoring,used,start_monitoring,end_monitoring from v$object_usage;

INDEX_NAME                     MONITORING USED START_MONITORING    END_MONITORING

------------------------------ ---------- ---- ------------------- -------------------

INDEX_BS_INSURED_NAME          NO         YES  11/12/2012 09:10:37 11/12/2012 09:14:39

要注意的是:索引使用情况监控,会增加部分系统开销。

时间: 2024-11-05 12:16:45

监控索引的使用情况的相关文章

Oracle监控索引怎么使用

Oracle监控索引使用   Oracle提供一个监控索引的方法,来确定索引是否被使用.如果索引没有被使用,就可以删除它们以减少不必要的语句的开销.因为表上的大量不必要的索引可能会降低DML语句的性能,给数据库性能产生压力.所以生产环境上,以根据业务增长情况定期监控.分析数据库索引的使用,特别是一些大表上的索引,提升数据库事务提交的性能.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 --查看表上的索引 SQL> Selectindex

第七章——DMVs和DMFs(2)——用DMV和DMF监控索引性能

原文:第七章--DMVs和DMFs(2)--用DMV和DMF监控索引性能   本文继续介绍使用DMO来监控,这次讲述的是监控索引性能.索引是提高查询性能的关键性手段.即使你的表上有合适的索引,你也要时时刻刻进行索引维护任务.   SQLServer有专门的DMO来显示索引相关统计信息.能帮助你分析现有索引的性能情况.通过这些DMO,可以做到: Ø  检查索引使用模式 Ø  查找丢失索引 Ø  查找无用索引 Ø  查找索引碎片 Ø  分析索引页分配明细 本文将使用这些DMO来检查数据库的丢失索引,

Oracle 监控索引的使用率

    Oracle提供了索引监控特性来判断索引是否被使用.在Oracle 10g中,收集统计信息会使得索引被监控,在Oracle 11g中该现象不复存在.尽管如此,该方式仅提供的是索引是否被使用.索引被使用的频率未能得以体现.下面的脚本将得到索引的使用率,可以很好的度量索引的使用情况以及根据这个值来判断当前的这些索引是否可以被移除或改进.   1.索引使用频率报告 --运行环境 SQL> select * from v$version where rownum<2; BANNER -----

Oracle 监控索引使用率脚本分享_oracle

Oracle提供了索引监控特性来判断索引是否被使用.在Oracle 10g中,收集统计信息会使得索引被监控,在Oracle 11g中该现象不复存在.尽管如此,该方式仅提供的是索引是否被使用.索引被使用的频率未能得以体现.下面的脚本将得到索引的使用率,可以很好的度量索引的使用情况以及根据这个值来判断当前的这些索引是否可以被移除或改进. 1.索引使用频率报告 --运行环境 SQL> select * from v$version where rownum<2; BANNER -----------

如何监控索引的使用?

  如何监控索引的使用?     研究发现,oracle数据库使用的索引不会超过总数的25%,或者不易他们期望被使用的方式使用.通过监控数据库索引的使用,释放那些未被使用的索引,从而节省维护索引的开销,优化性能. 1.在oracle8i中,确定使用了那个索引的方法意味着要对存在语共享SQL区中的所有语句运行EXPLIAN PALN,然后查询计划表中的OPERATION列,从而识别有OBJECT_OWNER和OBJECT_NAME列所确定的那个索引上的索引访问.下面是一个监控索引使用的脚本,这个脚

java-请问大神如何监控mysql的访问情况

问题描述 请问大神如何监控mysql的访问情况 我弄了个小安卓app,客户端和服务器都是java语言写的,用的是对象关系映射操作mysql数据库服务器用的tomcat 有一个查询功能需要查询数据库并返回一段数据,但返回的 总是空内容,我在powershell手动输入命令语句是可以查询到我要的结果 请问大神如何才能看到java代码给数据库执行的命令语句,或者说数据库接收到的命令 不然都无法确定错误的原因了 另外我载了了navicat 里面有个服务器监控,结果 进程列表为空 啥都看不了,,不知道是不

SQL SERVER 监控数据文件增长情况

   在项目前期评估数据库的增长情况,然后根据数据库数据量的增长情况来规划存储的分配其实是一件比较麻烦的事情.因为项目没有上线,用什么来评估数据库的数 据增长情况呢? 如果手头没有实际的数据,我们只能从表的数量以及预计一天的数据增长情况来预估数据增长量.当然这里猜测的成分较大.这个是非常不靠谱,也是不准确的.当 然我们可以监控测试环境的数据库大小的增长情况来评估数据增长情况.我们可以监控数据库大小的变化来估计生产环境的数据增长情况.当然生产环境和测试环境 的区别还是蛮大的.但是这样比那种瞎猜式的

Shell脚本实现监控swap空间使用情况和查看占用swap的进程_linux shell

复制代码 代码如下: #!/bin/bash   echo -e `date +%y%m%d%H%M` echo -e "PID\t\tSwap\t\tProc_Name"   # 拿出/proc目录下所有以数字为名的目录(进程名是数字才是进程,其他如sys,net等存放的是其他信息) for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]` do     # 让进程释放swap的方法只有一个:就是重

如何监控Oracle索引的使用情况

一个系统,经过长期的运行.维护和版本更新后,可能会产生大量的索引,甚至索引所占空间远远大于数据所占的空间.很多索引,在初期设计时,对于系统来说是有用的.但是,经过系统的升级.数据表结构的调整.应用的改变,很多索引逐渐不被使用,成为了垃圾索引.这些索引占据了大量数据空间,增加了系统的维护量,甚至会降低系统性能.因此,DBA应该根据系统的变化,找出垃圾索引,为系统减肥. Oracle 9i后,可以通过设置对索引进行监控,来监视索引在系统中是否被使用到.语法如下: alter index <INDEX