[Oracle] 便利そうで実はそうでもないADRのPURGE機能 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

10g 以前のバージョンでは、アラート・ログ、リスナーのログ、クライアントのログ、各種トレースファイルなどの情報は蓄積される一方でした。

そのため、これらの情報が蓄積されやすい環境においては、一定のポリシーにしたがってこれらの情報を定期的に削除するなどのケアが必要でした。


しかし、11g では自動診断リポジトリ(ADR)によってこれらの情報をあらかじめ設定された削除ポリシーにしたがって一括削除できるようになっています。


自動診断リポジトリ(ADR)の削除ポリシーには、SHORTP_POLICY と LONGP_POLICY の2つが用意されており、ディレクトリごとにどちらが適用されるかが決められています。
 

SHORTP_POLICY
デフォルトでは 720 時間( 30 日 )に設定されている。trace ディレクトリや cdump ディレクトリに適用される。
LONGP_POLICY
デフォルトでは 8760 時間( 365 日 )に設定されている。alert ディレクトリなどに適用される。


この2つの削除ポリシーは ADR ホームごとに設定できるようになっており、確認・変更は ADRCI で行うことができます。


削除ポリシーの確認には、SHOW CONTROL コマンドを使用します。

 

 

adrci> show control


ADR Home = /u01/app/oracle/diag/rdbms/orcl/orcl:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                   
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
1234567890           720                  8760                 2009-08-21 18:16:47.577283 +09:00        2009-08-23 22:51:26.774672 +09:00                                                 1                    2                    65                   1                    2009-08-21 18:16:47.577283 +09:00
1 rows fetched


SHORTP_POLICY、LONGP_POLICY 列の値が現在の削除ポリシーの設定値(時間)です。



削除ポリシーの変更には、SET CONTROL コマンドを使用します。

 

 

 

 

adrci> set control (SHORTP_POLICY = 168)

 

 

 

adrci> set control (LONGP_POLICY = 720)

 


削除ポリシーにしたがってログやトレースの情報を削除するには、PURGE コマンドを使用します。

 

 

 

adrci> purge


削除ポリシーとは異なる条件を指定してログやトレースの情報を削除することもできます。

例)alert ディレクトリ配下から 1440 分( 1 日)経過した情報を削除する。

 

 

 

adrci> purge -age 1440 -type alert

 


なお、ADR ホームが複数ある場合は、上記のコマンドを実行する前に SET HOMEPATH コマンドを実行して ADR ホームを選択しておく必要があります。

 

 

 

adrci> set home <ADR_HOME>

 

 


と、非常に便利に思える機能なんですが、実は現時点では非常に中途半端であまり使い物になりません。

まず、削除ポリシーにしたがって定期的に自動削除してくれてもいいように思いますが、されません。

削除を実行するにはADRCIでPURGEコマンドを実行しなければなりません。

また、alert_<SID>.log、listener.log、sqlnet.logといったテキスト形式のログファイルは削除対象外となっています。

これらのファイルは従来どおりOSコマンドなどで削除しなければなりません。

このあたりが改善されれば、非常に便利な機能なんですがね...