Oracleはユーザー・インデックスの使用状況を監視し、不要なインデックスを削除します.

1099 ワード

  • 現在のビジネスユーザーインデックス
  • を監視する
  • しばらくの間、使用されていないインデックスをクエリーし、不要なインデックス
  • を削除します.
  • モニタインデックス
  • を停止
    1.現在のユーザーのすべてのインデックスを監視する
    すべてのインデックスを監視する文:
    select 'alter index ' || index_name || ' monitoring usage;' from user_indexes;

    2.しばらくしてから使用されていないインデックスをクエリーし、不要なインデックスを削除
    注意:具体的な業務状況に応じて、1週間後、1月後、2月後を選択します(つまり、アプリケーションのすべてのSQLが少なくとも1回走ることを保証します)
    2.1この期間に使用されていないインデックスを表示します.
    select * from v$object_usage where used='NO';

    2.2使用されていないインデックスを削除する文:
    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したuserindexesは,NONUNIQUEのインデックスのみを削除すると判断する.
    3.ユーザーのすべてのインデックスの監視を停止する
    すべてのインデックスの監視を停止する文を取得します.
    select 'alter index ' || index_name || ' nomonitoring usage;' from user_indexes;