oracle 索引利用率,Oracle 监控索引的使用率

--该脚本作者为Damir Vadas,感谢Damir Vadas的贡献

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

/* ---------------------------------------------------------------------------

CR/TR#  :

Purpose : Shows index usage by execution (find problematic indexes)

Date    : 22.01.2008.

Author  : Damir Vadas, damir.vadas@gmail.com

Remarks : run as privileged user

Must have AWR run because sql joins data from there

works on 10g >

@index_usage SCHEMA MIN_INDEX_SIZE

Changes (DD.MM.YYYY, Name, CR/TR#):

25.11.2010, Damir Vadas

added index size as parameter

30.11.2010, Damir Vadas

fixed bug in query

--------------------------------------------------------------------------- */

set linesize 140

set pagesize 160

clear breaks

clear computes

break on TABLE_NAME skip 2 ON INDEX_NAME ON INDEX_TYPE ON MB

compute sum of NR_EXEC on TABLE_NAME SKIP 2

compute sum of MB on TABLE_NAME SKIP 2

SET TIMI OFF

set linesize 140

set pagesize 10000

set verify off

col OWNER noprint

col TABLE_NAME for a30 heading 'Table name'

col INDEX_NAME for a30 heading 'Index name'

col INDEX_TYPE for a15 heading 'Index type'

col INDEX_OPERATION for a21 Heading 'Index operation'

col NR_EXEC for 9G999G990 heading 'Executions'

col MB for 999G990D90 Heading 'Index|Size MB' justify  right

WITH Q AS (

SELECT

S.OWNER                  A_OWNER,

TABLE_NAME               A_TABLE_NAME,

INDEX_NAME               A_INDEX_NAME,

INDEX_TYPE               A_INDEX_TYPE,

SUM(S.bytes) / 1048576   A_MB

FROM DBA_SEGMENTS S,

DBA_INDEXES  I

WHERE S.OWNER =  '&&1'

AND I.OWNER =  '&&1'

AND INDEX_NAME = SEGMENT_NAME

GROUP BY S.OWNER, TABLE_NAME, INDEX_NAME, INDEX_TYPE

HAVING SUM(S.BYTES) > 1048576 * &&2

)

SELECT /*+ NO_QUERY_TRANSFORMATION(S) */

A_OWNER                                    OWNER,

A_TABLE_NAME                               TABLE_NAME,

A_INDEX_NAME                               INDEX_NAME,

A_INDEX_TYPE                               INDEX_TYPE,

A_MB                                       MB,

DECODE (OPTIONS, null, '       -',OPTIONS) INDEX_OPERATION,

COUNT(OPERATION)                           NR_EXEC

FROM  Q,

DBA_HIST_SQL_PLAN d

WHERE

D.OBJECT_OWNER(+)= q.A_OWNER AND

D.OBJECT_NAME(+) = q.A_INDEX_NAME

GROUP BY

A_OWNER,

A_TABLE_NAME,

A_INDEX_NAME,

A_INDEX_TYPE,

A_MB,

DECODE (OPTIONS, null, '       -',OPTIONS)

ORDER BY

A_OWNER,

A_TABLE_NAME,

A_INDEX_NAME,

A_INDEX_TYPE,

A_MB DESC,

NR_EXEC DESC

;

PROMPT "Showed only indexes in &&1 schema whose size > &&2 MB in period:"

SET HEAD OFF;

select to_char (min(BEGIN_INTERVAL_TIME), 'DD.MM.YYYY')

|| '-' ||

to_char (max(END_INTERVAL_TIME), 'DD.MM.YYYY')

from dba_hist_snapshot;

SET HEAD ON

SET TIMI ON

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值