ORACLE索引監控

2021-08-28 02:14:17 字數 2400 閱讀 2754

--對於單個索引的監控,可以使用下面的命令來完成

alter

index

monitoring usage

;--關閉索引監控

alter

index

nomonitoring usage

;--觀察監控結果(查詢v$object_usage檢視)

select

*from v$object_usage

開啟監控

執行系統一段時間,最好是做全面的系統功能測試

檢視監控結果

結合情況考慮是否刪除

比如:某個表乙個索引(包含主鍵)都未監控到是否有使用,得確認前台操作是否有相關的操作。

有些表有索引1(f1,f2),索引2(f1,f2,f3)。可能在不同的情景下都會使用到,實際索引1在一般情況下是可以考慮刪除的。

……

select t1.table_name,

t1.index_name,

nvl2(t2.owner,

'p','')

as is_pk,

index_columns,

t3.monitoring,

t3.used

from

(select table_name,

index_name,

listagg(column_name,

',')

within

group

(order

by column_position)

as index_columns

from user_ind_columns

where index_name in

(select index_name from user_indexes where index_type <>

'lob'

)group

by table_name, index_name) t1

left

join user_constraints t2

on t1.index_name = t2.constraint_name

and t2.constraint_type =

'p'left

join v$object_usage t3

on t1.index_name = t3.index_name

order

by index_owner, table_name, is_pk, index_name

select t1.index_owner,

t1.table_name,

t1.index_name,

nvl2(t2.owner,

'p','')

as is_pk,

index_columns,

t3.monitoring,

t3.used

from

(select index_owner,

table_name,

index_name,

listagg(column_name,

',')

within

group

(order

by column_position)

as index_columns

from dba_ind_columns

where

(index_owner, index_name)in(

select owner, index_name

from dba_indexes

where owner in

('user1'

,'user2'

)and index_type <>

'lob'

)group

by index_owner, table_name, index_name) t1

left

join

(select owner, constraint_name

from dba_constraints

where owner in

('user1'

,'user2'

)and constraint_type =

'p') t2

on t1.index_owner = t2.owner

and t1.index_name = t2.constraint_name

left

join v$object_usage t3

on t1.index_name = t3.index_name

order

by index_owner, table_name, is_pk, index_name

73 oracle索引的監控

最近的研究發現 oracle 資料庫所使用的索引從來沒有達到過可用索引數的1 4,或者其用法與其開始設計的意圖不相同。未用的索引浪費空間,而且還會降低 dml 的速度,尤其是 update 和 insert 語句 控資料庫索引的使用,釋放那些未被使用 的索引,從而節省維護索引的開銷,優化sql效能 ...

如何監控oracle的索引是否使用

很多軟體開發過程中,沒有注意合理規劃索引,造成乙個表上有n多個索引,為後續的維護和優化帶來麻煩。因此有時候需要監控已有的索引是否在使用,oracle提供了監控索引是否使用的工具,很簡單,簡要介紹一下。首先,我們如果是監控乙個表上的所有索引,可以這樣先生成監控的命令 然後執行這些指令碼就開始監控了,監...

如何監控oracle的索引是否使用

很多軟體開發過程中,沒有注意合理規劃索引,造成乙個表上有n多個索引,為後續的維護和優化帶來麻煩。因此有時候需要監控已有的索引是否在使用,oracle提供了監控索引是否使用的工具,很簡單,簡要介紹一下。首先,我們如果是監控乙個表上的所有索引,可以這樣先生成監控的命令 sql 然後執行這些指令碼就開始監...