• Oracle Index 索引监控


    1、冗余索引的弊端   

    大量冗余和无用的索引导致整个数据库性能低下,耗用了大量的CPU与I/O开销,具体表现如下:      

    a、耗用大量的存储空间(索引段的维护与管理)      

    b、增加了DML完成的时间      

    c、耗用大量统计信息(索引)收集的时间      

    d、结构性验证时间      

    f、增加了恢复所需的时间

    2、单个索引监控        

    a、对于单个索引的监控,可以使用下面的命令来完成          

    alter index <INDEX_NAME> monitoring usage;      

    b、关闭索引监控         

    alter index <INDEX_NAME> nomonitoring usage;      

    c、观察监控结果(查询v$object_usage视图)         

    select * from v$object_usage

    3、schema级别索引监控(不含SYS用户)

    a、直接执行脚本来开启索引监控

    robin@SZDB:~/dba_scripts/custom/sql> more idx_monitor_on.sql

    SET HEADING OFF  FEEDBACK OFF  TERMOUT OFF  ECHO OFF;

    SET PAGESIZE 0;

    SPOOL /tmp/mnt_idx.sql

    SELECT 'ALTER INDEX ' || owner || '.' || index_name || ' MONITORING USAGE;'  FROM dba_indexes 

    WHERE owner IN (SELECT username FROM dba_users WHERE account_status = 'OPEN')      

    AND owner NOT IN ('SYS', 'SYSTEM', 'PERFSTAT', 'MGMT_VIEW', 'MONITOR', 'SYSMAN', 'DBSNMP');

    SPOOL OFF;

    b、禁用索引监控

    robin@SZDB:~/dba_scripts/custom/sql> more idx_monitor_off.sql

    SET HEADING OFF  FEEDBACK OFF  TERMOUT OFF  ECHO OFF;

    SET PAGESIZE 0;

    SPOOL /tmp/un_mnt_idx.sql

    SELECT 'ALTER INDEX ' || owner || '.' || index_name || ' NOMONITORING USAGE;'  FROM dba_indexes 

    WHERE owner IN (SELECT username  FROM dba_users  WHERE account_status = 'OPEN')      

    AND owner NOT IN ('SYS', 'SYSTEM', 'PERFSTAT', 'MGMT_VIEW', 'MONITOR', 'SYSMAN', 'DBSNMP');

    SPOOL OFF;

    c、查看索引监控结果

    set linesize 190

    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#      

    AND u.name=decode(upper('&input_owner'),'ALL',u.name,upper('&input_owner'));

  • 相关阅读:
    MD5中使用16进制
    关于mysql函数GROUP_CONCAT
    一个不错的源码网站
    查看jdk 线程 日志
    list 的sublist 隐藏 bug
    web 环境项目(intellj部署的tomcat) 重启时报 Exception in thread "HouseKeeper" java.lang.NullPointerException
    怎么给已有项目引入别的项目
    javascript 和 CoffeeScript 里的类
    express 与 mvc
    express的路由
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11014270.html
Copyright © 2020-2023  润新知