`
xitonga
  • 浏览: 590876 次
文章分类
社区版块
存档分类
最新评论

索引监控

 
阅读更多

索引监控

在某个OLTP系统中某张表上建立了10个索引,由于不确定索引是否有在各程序中被使用,不能随意删除,因此,需要监控已有的索引是否在使用,

官方文档描述:

Monitoring Index Usage

Oracle Database provides a means of monitoring indexes to determine whether they are being used. If an index is not being used, then it can be dropped, eliminating unnecessary statement overhead.

To start monitoring the usage of an index, issue this statement:

ALTER INDEX index MONITORING USAGE; //开启索引监控

Later, issue the following statement to stop the monitoring:

ALTER INDEX index NOMONITORING USAGE; //关闭索引监控


The view V$OBJECT_USAGE can be queried for the index being monitored to see if the index has been used. The view contains a USED column whose value is YES or NO, depending upon if the index has been used within the time period being monitored. The view also contains the start and stop times of the monitoring period, and a MONITORING column (YES/NO) to indicate if usage monitoring is currently active.

Each time that you specify MONITORING USAGE, the V$OBJECT_USAGE view is reset for the specified index. The previous usage information is cleared or reset, and a new start time is recorded. When you specify NOMONITORING USAGE, no further monitoring is performed, and the end time is recorded for the monitoring period. Until the next ALTER INDEX...MONITORING USAGE statement is issued, the view information is left unchanged.


开启索引监控后,可以从v$object_usage中查询到数据(即使索引还没有被使用),START_MONITORING 字段会写入开始监控的时间;当某条SQL使用了相关的索引以后,其“USED”字段就会更新为’YES‘。监控索引结束后最好关闭监控,以提高效率。

注意:v$object_usage 要去每个USERS 中查询,即使用SYS权限开启的其他USER索引的监控,也无法从SYS用户的V$OBJECT_USAGE 中插到相关的记录。 下面有验证


实验: 测试一个索引

[oracle@tyger ~]$ sqlplus / as sysdba


SQL*Plus: Release 10.2.0.1.0 - Production on Fri Mar 28 16:19:01 2014


Copyright (c) 1982, 2005, Oracle. All rights reserved.




Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options


SYS@ORCL>create user tyger identified by tyger; // 创建测试用户 tyger


User created.


SYS@ORCL>grant connect,resource to tyger; // 赋予tyger connect,resource 权限


Grant succeeded.


SYS@ORCL>grant select on dba_objects to tyger; // 授予 dba_objects 查询权限给 tyger


Grant succeeded.


SYS@ORCL>conn tyger/tyger
Connected.
TYGER@ORCL>create table test_monitor as select * from dba_objects; // 创建测试表


Table created.


TYGER@ORCL>select * from user_indexes; // 查看当前用户下的索引


no rows selected


TYGER@ORCL>create index test_monitor_idx on test_monitor(object_id); // 基于 object_id 字段创建索引


Index created.

TYGER@ORCL>col INDEX_NAME for a20
TYGER@ORCL>col TABLE_NAME for a20
TYGER@ORCL>col TABLE_OWNER for a20
TYGER@ORCL>l
1 select index_name,table_name,table_owner
2* from user_indexes
TYGER@ORCL>/ // 查看当前用户下的索引

INDEX_NAME TABLE_NAME TABLE_OWNER
-------------------- -------------------- --------------------
TEST_MONITOR_IDX TEST_MONITOR TYGER


TYGER@ORCL>

TYGER@ORCL>alter index TEST_MONITOR_IDX monitoring usage; // 开启索引监控


Index altered.


TYGER@ORCL>select * from v$object_usage; // 查看视图 object_usage 索引监控和使用情况


INDEX_NAME TABLE_NAME MON USE START_MONITORING
-------------------- -------------------- --- --- -------------------
END_MONITORING
-------------------
TEST_MONITOR_IDX TEST_MONITOR YES NO 03/28/2014 16:22:46 // MONITORING 为 'YES' 代表已经监控
// USAGE 为 ’NO‘ 代表索引未被使用

TYGER@ORCL>conn / as sysdba
Connected.
SYS@ORCL>
SYS@ORCL>select * from v$object_usage; // 无法从SYS用户的V$OBJECT_USAGE 中插到相关的记录


no rows selected


TYGER@ORCL>set autotrace on // 开启自动跟踪
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enabled // 出现这个错误,暂时可以略过,不影响接下来的实验
SP2-0611: Error enabling STATISTICS report
TYGER@ORCL>select * from TEST_MONITOR where object_id=111;


OWNER
------------------------------
OBJECT_NAME
--------------------------------------------------------------------------------
SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
------------------------------ ---------- -------------- -------------------
CREATED LAST_DDL_ TIMESTAMP STATUS T G S
--------- --------- ------------------- ------- - - -
SYS
I_ARGUMENT1
111 111 INDEX
30-JUN-05 30-JUN-05 2005-06-30:19:10:18 VALID N N N



Execution Plan
----------------------------------------------------------
Plan hash value: 2240611133


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


| Id | Operation | Name | Rows | Bytes | Cost (%
CPU)| Time |


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


| 0 | SELECT STATEMENT | | 1 | 177 | 2
(0)| 00:00:01 |


| 1 | TABLE ACCESS BY INDEX ROWID| TEST_MONITOR | 1 | 177 | 2
(0)| 00:00:01 |


|* 2 | INDEX RANGE SCAN | TEST_MONITOR_IDX | 1 | | 1 // 上面执行的语句 走的是索引 TEST_MONITOR_IDX
(0)| 00:00:01 |


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




Predicate Information (identified by operation id):
---------------------------------------------------


2 - access("OBJECT_ID"=111)


Note
-----
- dynamic sampling used for this statement


TYGER@ORCL>select * from v$object_usage;


INDEX_NAME TABLE_NAME MON USE START_MONITORING
-------------------- -------------------- --- --- -------------------
END_MONITORING
-------------------
TEST_MONITOR_IDX TEST_MONITOR YES YES 03/28/2014 16:22:46 // MONITORING 为 'YES' 代表已经监控
// USAGE 为 ’YES‘ 代表索引已经被使用








Execution Plan
----------------------------------------------------------
ERROR:
ORA-01039: insufficient privileges on underlying objects of the view




SP2-0612: Error generating AUTOTRACE EXPLAIN report
TYGER@ORCL>set autotrace off;
TYGER@ORCL>


分享到:
评论

相关推荐

    Oracle索引的监控.pdf

    Oracle索引的监控.pdfOracle索引的监控.pdfOracle索引的监控.pdfOracle索引的监控.pdf

    索引监控设置及查看所有用户的unused indexes

    首先,详细描述了索引监控的设置方法; 然后,给出了一种可以同时查看所有用户没有使用过的索引的方法。 信息全部来自metalink

    Oracle 索引监控(monitor index)

    Oracle 提供了索引监控特性来初略判断未使用到的索引。本文描述如何使用Oracle 索引的监控。  1、冗余索引的弊端  大量冗余和无用的索引导致整个数据库性能低下,耗用了大量的CPU与I/O开销,具体表现如下: ...

    如何监控索引的使用.

    如何监控索引的使用 如何监控索引的使用 如何监控索引的使用 如何监控索引的使用

    监控中心培训资料.pptx

    索引 监控中心的组网结构 监控中心功能 直放站监控原理 短信中心接入原理 直放站告警处理机制 直放站告警定义 监控中心培训资料全文共57页,当前为第2页。 —组网结构 监控中心培训资料全文共57页,当前为第3页。 ...

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

    Oracle提供了索引监控特性来判断索引是否被使用。在Oracle 10g中,收集统计信息会使得索引被监控,在Oracle 11g中该现象不复存在。尽管如此,该方式仅提供的是索引是否被使用。索引被使用的频率未能得以体现。下面的...

    Elasticsearch 技术解析与实战.zip

    56 2.5 索引监控 60 2.5.1 索引统计 60 2.5.2 索引分片 62 2.5.3 索引恢复 63 2.5.4 索引分片存储 64 2.6 状态管理 64 2.6.1 清除缓存 64 2.6.2 索引刷新 64 2.6.3 冲洗 65 2.6.4 合并索引 65 2.7 文档管理 66 2.7.1...

    实验四 存储过程、触发器与索引

    (5)将100万行网络连接监控数据Netflow导入数据库,创建多个索引,观察创建索引对数据库文件大小的影响;并设计不同的查询语句来观察索引对查询效率的影响;可以尝试将100万行记录扩展为1000万行,然后再做索引和...

    C#写的批量监控sqlserver表索引碎片监控看板工具

    程序员或者运维工作中经常会遇到表的索引碎片过多而导致的数据处理缓慢,锁表等情况,针对这种情况制作了一个监控看板,可以监控不同数据库ip下的表索引碎片情况,可以报警提示出来,上传内容包含源代码,希望C#...

    sql学习 监控失效分区索引.sql

    sql学习 监控失效分区索引.sql

    统一监控平台方案(日志监控、方法监控、调用链路监控)

    统一监控平台方案(日志监控、方法监控、调用链路监控) 包含flume采集数据、kafka缓存数据、spark计算、es索引数据

    Oracle优化日记:一个金牌DBA的故事 白鳝.扫描版

    优化流程优化小技巧 转储文件内容1:数据文件5月14日 聚会优化小技巧 系统级 优化优化小技巧 转储文件内容2:转储对象的段头5月15日 业务支撑系统出问题了今日点评优化小技巧 索引监控优化小技巧 性能 优化时常用的...

    sql学习 监控哪些外键未建索引.sql

    sql学习 监控哪些外键未建索引.sql

    如何监控Oracle索引的使用完全解析

    在oracle8i中,确定使用了那个索引的方法意味着要对存在语共享SQL区中的所有语句运行EXPLIAN PALN,然后查询计划表中的OPERATION列,从而识别有OBJECT_OWNER和OBJECT_NAME列所确定的那个索引上的索引访问。...

    北亚大华监控录像数据恢复软件 v4.0.zip

    北亚大华监控数据恢复软件是由北京北亚时代科技有限公司针对嵌入式大华监控录像而设计的数据恢复软件 1.恢复由于误操作在Windows上把监控录像硬盘初始化。 2.恢复由于误操作删除时间段的监控录像。 3.恢复由于误...

    Linux服务器多功能监控报警B/S系统

    支持监控TRSServer全文检索服务器,可以支持其检索功能,监控数据同步是否正常,监控进程存在,以及数据库索引问题。 同时可监控Linux系统的运行状态,监控磁盘使用情况,并可设定磁盘占用阈值,CPU使用情况。 该...

    华信WFS(H.264)监控录像数据恢复软件v4.0免费安装版

    HX-Recovery for WFS(H.264格式监控数据恢复软件)是由北京华信数据恢复中心专门针对嵌入式WFS文件系统监控录像而设计的数据恢复软件。...恢复由于索引损坏,造成录像机无法索引录像。 5.由于硬盘坏道造成无法索

    bleve-explorer:提供HTTPRESTJSON前端的示例应用程序

    监控系统性能 观看有关bleve-explorer的。 建造 go build -tags full -tags full是可选的,但包括bleve的所有可选组件。 跑步 mkdir data ./bleve-explorer 这将使用默认的“数据”目录来存储索引。 启动后,您...

Global site tag (gtag.js) - Google Analytics