[Oracle] listener.log、sqlnet.logはどこへ消えた? | Archive Redo Blog

Archive Redo Blog

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

リスナーのログ(listener.log)、Oracle Net クライアントのログ(sqlnet.log)は、10g までは >ORACLE_HOME</network/log で示される場所に出力されていました。

例えば ORACLE_HOME 環境変数が "/u01/app/oracle/product/11.1.0/db_1" の場合、出力先は、

/u01/app/oracle/product/11.1.0/db_1/network/log

となります。


しかし、11g からはアラート・ログと同様に、自動診断リポジトリ(ADR)の構造にしたがって出力先が変更されています。

リスナーのログ(listener.log)の出力先
listener.ora の ADR_BASE_ パラメータ、ORACLE_BASE 環境変数によって出力先が変わります。

ADR_BASE_<LISTENER_NAME> ORACLE_BASE 出力先
× × <ORACLE_HOME>/log/diag/tnslsnr/trace/
× <ORACLE_BASE>/diag/tnslsnr/trace/
× <ADR_BASE_<ListenerName>>/diag/tnslsnr/trace/


Oracle Net クライアントログ(sqlnet.log)の出力先
sqlnet.ora の ADR_BASE パラメータ、ORACLE_BASE 環境変数によって出力先が変わります。

ADR_BASE ORACLE_BASE 出力先
× × /home/<OS_USERNAME>/oradiag_<OS_USERNAME>/diag/clients/user_<OS_USERNAME>/host_<MASHINE_HASH_VALUE>_<ADR_VERSION>/trace/
× <ORACLE_BASE>/diag/clients/user_<OS_USERNAME>/host_<MASHINE_HASH_VALUE>_<ADR_VERSION>/trace/
× <ADR_BASE>/oradiag_<OS_USERNAME>/diag/clients/user_<OS_USERNAME>/host_<MASHINE_HASH_VALUE>_<ADR_VERSION>/trace/


(ついでに)アラート・ログ(alert_.log)の出力先
初期化パラメータ DIAGNOSTIC_DEST、ORACLE_BASE 環境変数によって出力先が変わります。

DIAGNOSTIC_DEST ORACLE_BASE 出力先
× × <ORACLE_HOME>/log/diag/rdbms/trace/
× <ORACLE_BASE>/diag/rdbms/trace/
× <BASE>/diag/rdbms/trace/


ちなみに、上記の出力先のディレクトリ構造の中で、diag ディレクトリの上位ディレクトリのことは ADR ベース、diag ディレクトリの下位ディレクトリのことは ADR ホームと呼ばれます。

ADR ベースは ADR が管理するファイル群のルート・ディレクトリ、ADR ホームは各製品ごとのルート・ディレクトリということになります。


listener.ora の ADR_BASE_ パラメータ、sqlnet.ora の ADR_BASE パラメータ、初期化パラメータ DIAGNOSTIC_DEST はいずれも ADRベースを設定するパラメータで、それぞれ任意のディレクトリ・パスを指定できますが、これらのログやトレースはできれば一箇所で集中管理したいものです。

しかし、ADR ベースを一箇所にまとめたい場合はこれらのパラメータを設定せずに ORACLE_BASE 環境変数が示す場所=ADR ベースになるようにしなければならないようです。

listener.ora の ADR_BASE_ パラメータ、sqlnet.ora の ADR_BASE パラメータ、初期化パラメータ DIAGNOSTIC_DEST に同じディレクトリ・パスを設定してもいいように思われますが、実際にやってみると Oracle Net クライアントの ADR ベースだけが /oradiag_ となってしまい同じ ADR ベースにまとめることができません。

(この辺の仕様がちょっと納得できないところです...)


これらのログやトレースを操作する ADRCI では、SET BASE コマンドを実行することによって ADR ベースを変更することができます。

adrci> SET BASE /u01/app/oracle

そのため、製品ごとに ADR ベースが異なっていても、その配下にあるログやトレースを参照できないわけではないのですが、いちいち切り替なくて済むに越したことはありません。

ということで、現状、ADR ベースは個々の製品のパラメータで設定するのではなく、ORACLE_BASE 環境変数が示す場所にまとめたほうがよさそうです。