技術空間

Oracle

sqlnet.oraでトレース情報を出力する設定


TOP > Oracle > sqlnet.oraでトレース情報を出力する設定



■sqlnet.oraでトレース情報を出力する設定

Oracleのクライアント側で、DBサーバとやり取りを見るためには、sqlnet.oraでトレース情報を出力させる設定を行う。 sqlnet.oraは以下の箇所に存在する。もし存在しない場合は、自分で作成する。(なお本情報はOracleバージョン11.2.0で確認)

{ORACLE_HOME}/network/admin

設定は以下のようにする(あくまで設定例)。設定は即時反映される。

設定例
TRACE_UNIQUE_CLIENT=ON <-- ONにするとプロセス毎にファイルが作成される
TRACE_LEVEL_CLIENT=8 <-- 出力レベル
TRACE_DIRECTORY_CLIENT=/tmp/traces <-- 出力ディレクトリ
TRACE_FILE_CLIENT=clientsqlnet <-- 出力ファイル名
TRACE_TIMESTAMP_CLIENT=ON <-- ファイルにタイムスタンプを出力
DIAG_ADR_ENABLED=OFF <-- ADRトレースを無効にする

TRACE_UNIQUE_CLIENT=ONにすると、ファイルはプロセス毎に出力されるので、clientsqlnet_{プロセスID}.trcのようなファイル名になる。 例えばプロセスIDが6501のプロセスがOracleとセッションを張っている場合、clientsqlnet_6501.trcとなる。 よって、どのプロセスがこのファイルを出力したかを調べるときに探しやすくなる。

出力レベルは数値が大きいほど詳細なログが出るが、あまり大きいとパフォーマンスに影響するので注意。最大値は16。

DIAG_ADR_ENABLEDは、ADRトレースという別のトレース機能が有効になっているとファイルが出力されないのでOFFにする。

■トレースファイルの内容

出力されたトレース情報を見てみても、詳しい人でないと出力内容はよくわからないかもしれない。 だが、どこのサーバやデータベースへ接続しているか(接続文字列)、どこで処理待ちが発生しているかなど、なんとなくわかるものもある。

例えば、"nsopen: opening transport..."というログの手前にはどこへ接続しているかなどが出力されている。 実際に接続したIPアドレスも"nttcni: connected on ipaddr xx.xx.xxx.xxxx"のように出力されている。 RACでSCANを使用している場合は、SCANIP、VIPなど2段階で接続していることが確認できるため、もしエラーが発生していた場合、どちらの接続でエラーが発生しているかなど確認できる。

また"nsopen: reading from transport..."というログは、サーバからの応答を待っている。この直後でログが停止している場合は、サーバから応答が戻ってきていなことを意味する。 "written=143"のようなログはClientからServer、"read=367"はServerからClientへの通信のようだ。



TOP > Oracle > sqlnet.oraでトレース情報を出力する設定

Tweet ̃Gg[͂ĂȃubN}[Nɒlj
技術空間