--ORACLE索引监控的简单使用
-------------------------2013/11/20 说明:
    应用程序在开发时,可能会建立众多索引,但是这些索引的使用到底怎么样,是否有些索引一直都没有用到过,这需要我们对这些索引进行监控,以便确定他们的使用情况,并为是否可以清除它们给出依据。
    本文介绍两种方式:
    第一:开启监控功能;
    第二:查看历史的执行计划,进行分析;
 
环境:
    SQL> select * from v$version;
 
    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
    PL/SQL Release 10.2.0.3.0 - Production
    CORE    10.2.0.3.0      Production
    TNS for Linux: Version 10.2.0.3.0 - Production
    NLSRTL Version 10.2.0.3.0 - Production
    
测试:
    第一:
        CREATE TABLE tt
        AS
        SELECT * FROM dba_objects;
 
        DELETE FROM  tt
        WHERE object_id IS NULL;
 
        ALTER TABLE tt ADD CONSTRAINT pk_tt PRIMARY KEY(object_id);
 
        注:使用alter index <INDEX_NAME> nomonitoring usage取消监控。
 
        SELECT object_id, object_name
        FROM tt
        WHERE object_id = 333;
 
        SELECT INDEX_NAME, MONITORING, USED, START_MONITORING, END_MONITORING
          FROM V$OBJECT_USAGE;
 
        为了避免V$OBJECT_USAGE只能查询到当前用户下索引的监控情况,可以使用如下语句查询数据库中所有监控索引的使用情况:
 
        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#
 
    第二:
        1 利用library cache数据
            SELECT OBJECT_NAME
              FROM V$SQL_PLAN A, V$SQLAREA B
             WHERE A.SQL_ID = B.SQL_ID
               AND A.OBJECT_TYPE = 'INDEX'
               AND OBJECT_OWNER IN ('XXXX', 'XXXX');
 
        2 利用STATSPACK
            SELECT A.OBJECT_OWNER, A.OBJECT_NAME
              FROM STATS$SQL_PLAN A, STATS$SQL_PLAN_USAGE B
             WHERE A.PLAN_HASH_VALUE = B.PLAN_HASH_VALUE
               AND A.OBJECT_TYPE = 'INDEX';
                
        注:需要开启Statspack的快照功能,否则查不到数据;
 
        3 如果是10g以上版本的数据,可以使用AWR
            SELECT B.OBJECT_NAME
              FROM DBA_HIST_SNAPSHOT A, DBA_HIST_SQL_PLAN B, DBA_HIST_SQLSTAT C
             WHERE A.SNAP_ID = C.SNAP_ID
               AND B.SQL_ID = C.SQL_ID
               AND B.OBJECT_TYPE = 'INDEX'
               AND B.OBJECT_OWNER IN ('XXX', 'XXXX');
 
        注:可以通过如下语句查询AWR的运行情况
 
            SELECT *
            FROM DBA_HIST_WR_CONTROL; 
参考:
    http://www.hellodba.com/Doc/monitor_index.htm
     http://www.oracle.com/technology/global/cn/pub/articles/10gdba/week6_10gdba.html
 
    有待进一步学习的内容:
    http://www.remote-dba.net/oracle_10g_tuning/t_oracle_index_usage_tracking.htm
 
补充:
    关于索引监控的或者说跟踪,本文仅仅是停留在简单的理论阶段,到实践和深入还有很多内容要了解。

ORACLE索引监控的简单使用的更多相关文章

  1. oracle索引监控

    目的:监控oracle索引的有效性,看索引有没有被使用.然后根据监控结果删除或者调整索引. 步骤: 1.监控指定索引 命令: alter index  索引名 monitoring usage;  如 ...

  2. oracle 索引监控

           索引对于在大量数据里检索出少量数据库的查询操作来说是高效的,可是对于DML操作来说.却是负面的:①其对于insert 操作的反面影响最大.该表的索引越多,更新的索引越多,insert 操 ...

  3. oracle如何进行索引监控分析和优化

    在生产环境.我们会发现: ① 索引表空间 I/O 非常高     ② "db file sequential read" 等待事件也比较高   这种迹象表明.整个数据库系统.索引的 ...

  4. [转]Oracle 索引质量分析

    http://blog.csdn.net/leshami/article/details/23687137 索引质量的高低对数据库整体性能有着直接的影响.良好高质量的索引使得数据库性能得以数量级别的提 ...

  5. Oracle Index 索引监控

    1.冗余索引的弊端 大量冗余和无用的索引导致整个数据库性能低下,耗用了大量的CPU与I/O开销,具体表现如下: a.耗用大量的存储空间(索引段的维护与管理) b.增加了DML完成的时间 c.耗用大量统 ...

  6. SQL Tuning 基础概述05 - Oracle 索引类型及介绍

    一.B-Tree索引 三大特点:高度较低.存储列值.结构有序 1.1利用索引特性进行优化 外键上建立索引:不但可以提升查询效率,而且可以有效避免锁的竞争(外键所在表delete记录未提交,主键所在表会 ...

  7. Oracle索引重建

    一.前言 Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引.有人持不同观点,就是强烈建议不要定期重建索引.索引重建是一个争论不休被不断 ...

  8. 【转】Oracle索引HINT的使用

    转自:Oracle索引HINT的使用       存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查 ...

  9. Oracle索引——位图索引

    1.语法create bitmap index index_name on 表名(字段);2.举个例子你就能明白了:如有表 test(id,name,address)数据(1,张三,大连)(2,李四, ...

随机推荐

  1. Ext template 的使用

    Ext template 的使用 Ext.define('app.view.MyDataView', { extend: 'Ext.panel.Panel', xtype: 'myDataView', ...

  2. web前端CSS2学习2017.6.17

    CSS---表现层,修饰和表现html文档,为了解决结构层和表现层分离的问题. 通过CSS极大的提高了工作效率,方便工作人员维护和管理CSS:层叠样式表,目前用的最广泛的css版本为css2,最新版本 ...

  3. python简单实现websocket

    协议选择的是新的Hybi-10,参考文章如下: http://www.cnblogs.com/zhuweisky/p/3930780.html http://blog.mycolorway.com/2 ...

  4. echarts的部署和使用

    echarts是百度开发的一款商业级.开源免费的前端图表组件,具体可访问其主页:http://echarts.baidu.com/ echarts目前已经发布了2.0版本,使用起来非常的方便,并且效果 ...

  5. vijos1062题解

    题目: 交谊舞是2个人跳的,而且一男一女 -____-||||. 由于交谊舞之前的节目安排,所有的表演者都站成了一排.这一排人的顺序满足2点: ①对于一对舞伴男生站在女生的左边. ②任何一对舞伴之间, ...

  6. Go学习笔记(一)Let's 干吧

    加 Golang学习 QQ群共同学习进步成家立业 ^-^ 群号:96933959 简介     Go是Google开发的一种 静态强类型.编译型,并发型,并具有垃圾回收功能的编程语言.为了方便搜索和识 ...

  7. Java条形码/二维码生成和解析

    注意-本类依赖jar包文件:core.jar和zxing-javase.jar 下载jar文件,到本博客文件栏目下载. import com.google.zxing.BarcodeFormat; i ...

  8. TP3.2写提交的验证码验证

    把今天掌握的东西整理一下,要不然,我就忘干净了: 今天在做一个企业网站的时候,有一个在线留言的功能,最后提交的时候需要输入验证码.如图下: 当然,特连接的并不是我的后台 好了,开始了,首先我需要把验证 ...

  9. 新篇章之我的java学习之路上

    现在我怀着激动和兴奋的心情来写我的第一篇博客,谈谈我自己的学习java的这段历程. 我大学学的软件工程专业,学校开设过c++,数据结构,java,Android等等这类的关于开发的相关课程,但是在学校 ...

  10. java文件上传Demo

    说到文件上传我们要做到: 1.引入两个包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar 2.将form改为上传文件模式:enctype=" ...