--對於單個索引的監控,可以使用下面的命令來完成
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 然後執行這些指令碼就開始監...