読者です 読者をやめる 読者になる 読者になる

Gblog

おもにTips

索引の使用状況の監視

列の使用状況を監視する方法を書いたので、ついでに索引も。

 

1. 索引のモニタリング開始

ALTER INDEX ... MONITORING USAGE; を実行して監視を有効にします。

SQL> ALTER INDEX TAB1_PK MONITORING USAGE;

索引が変更されました。

SQL> select * from v$object_usage;

INDEX_NAME TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
---------- ------------------------------ --- --- ------------------- -------------------
TAB1_PK    TAB1                           YES NO  04/02/2016 01:43:15

 こんな感じ。

 

2. アプリケーションの実行

チェックしたいの処理を実行します。

 

3. 結果確認

1回以上、索引が使用されると v$object_usage.used 列が、YES になります。

SQL> select * from v$object_usage;

INDEX_NAME TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
---------- ------------------------------ --- --- ------------------- -------------------
TAB1_PK    TAB1                           YES YES 04/02/2016 01:43:15

 

4. モニタリング終了

SQL> ALTER INDEX TAB1_PK  NOMONITORING USAGE;

索引が変更されました。

SQL> select * from v$object_usage;

INDEX_NAME TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
---------- ------------------------------ --- --- ------------------- -------------------
TAB1_PK    TAB1                           NO  YES 04/02/2016 01:43:15 04/02/2016 01:45:03

v$object_usage.monitoring 列が、NO になっておしまい。

ちなみに、同じ索引のモニタリングをもう一度開始すると v$object_usage の情報がクリアされます。

・・・12.1 だと dba_object_usage に置き換わってるみたい。v$object_usage は非推奨です。知らなかった。

いまさらですが、検証はだいたい 11.2.0.4 、必要に応じて 12.1.0.2 を使ってます。