Oracle監控使用者索引使用情況,刪除無用索引

2021-08-06 04:47:26 字數 1099 閱讀 7607

監控當前業務使用者索引

一段時間後查詢從未被使用的索引,刪除無用索引

停止監控索引

得到監控所有索引的語句:

select

'alter index ' || index_name || ' monitoring usage;'

from user_indexes;

注意:視具體業務情況,選擇一周後,一月後,兩月後(總之要保證應用的所有sql都至少跑一遍)

select * from v$object_usage where used='no';
select

'drop index '||o.index_name||';'

from v$object_usage o join user_indexes u on o.index_name = u.index_name where o.used='no'

and u.uniqueness='nonunique';

特別注意:直接drop index操作,從未被使用的索引中,主鍵不會被刪除(會給出錯誤ora-02429),但唯一性索引會被刪掉。

所以我這裡join了user_indexes,從而判斷只刪除nonunique的索引。

得到停止監控所有索引的語句:

select

'alter index ' || index_name || ' nomonitoring usage;'

from user_indexes;每張表都是作為「段」來儲存的,可以通過user_segments檢視檢視其相應資訊。

段(segments)的定義:如果建立乙個堆組織表,則該錶就是乙個段。

sql:select segment_name as tablename,bytes from user_segments where segment_name='表名'。

解釋:segment_name 就是要查詢的表名(大寫),bytes 為表儲存所占用的位元組數。本sql的意思就是查詢出表名和表所佔的儲存空間大小。

ORACLE索引監控

對於單個索引的監控,可以使用下面的命令來完成 alter index monitoring usage 關閉索引監控 alter index nomonitoring usage 觀察監控結果 查詢v object usage檢視 select from v object usage開啟監控 執行系...

Oracle 索引的使用情況檢視

查詢使用者的索引 select index name,table name,tablespace name,index type,uniqueness status from dba indexes where owner scott 查詢使用者的索引列 select index name,tabl...

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

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