Oracleエラー対応(ORA-03137):ORA-03137発生時の対処方法について

現役DBAが解説 ~Oracleエラー対応~

クライアントからデータベースサーバへ接続されたセッションにおいて、何かしらの要因によってORA-03137が発生することがあります。

ORA-03137はOracle内部エラーの一つで発生要因は様々なため、時にはサポートサービスへ調査を依頼する必要があります。
本記事ではORA-03137発生時のエラー調査方法を解説します。

1. エラーメッセージ

ORA-03137: クライアントからの不正な形式のTTCパケットが拒否されました: [引数1] [引数2] [引数3] [引数4]…

2. 原因

ORA-03137はOracle内部エラーの一つで、様々な要因によって発生するエラーです。
エラーメッセージの末尾に記載されている引数によって、エラーの詳細な内容が区別されます。

そのため、原因の特定が難しいケースが多く、サポートサービスを利用できる状況であれば、原因調査を依頼することをお勧めします。

なお、本エラーは発生したセッションのみに影響があり、データベース全体に影響はありません。

3. 調査方法

エラーを検知した際は、まず状況確認のための調査を実施します。
実際にどのような調査を行う必要があるのかをご紹介します。

3-1 データベース関連ログファイルの確認

まずはエラーが発生した時間帯付近の情報を、以下の各種ログファイルから確認しましょう。
エラーメッセージに付随して、どのようなクライアント接続からのセッションで本エラーが起きているのか、情報が載っている場合があります。

  • アラートログファイル
  • トレースファイル
    (エラーに関連するトレースファイルがある場合、アラートログファイルにファイルパスが記載されています)
  • インシデントファイル
    (エラーに関連するインシデントファイルがある場合、アラートログファイルにファイルパスが記載されています)
  • リスナーログファイル
    (エラー発生時間帯でデータベースサーバへどのような接続があったのか確認します)

<アラートログファイル表示例>

2022-08-01T13:00:00+09:00		
Errors in file <トレースファイルのパス>  (incident=XXXXX):
ORA-03137: クライアントからの不正な形式のTTCパケットが拒否されました: [XXXX] [XX] [] [] [] [] [] []
Incident details in: <インシデントファイルのパス>
2022-08-01T13:00:01+09:00
Session (XXXX,XXXXX): Bad TTC Packet Detected: Inbound connection from client
Session (XXXX,XXXXX): Bad TTC Packet Detected: DB Logon User: XXXXX, Remote Machine: XXXXX, Program: XXXXX, OS User: XXXXX
Session (XXXX,XXXXX): Bad TTC Packet Detected: Client IP Address: XXXXX

上記例では、どのようなセッション(接続元クライアント・接続プログラム・接続OSユーザー・接続DBユーザー)がエラーになったのかが確認できるため、エラー発生元の情報がある程度特定できます。

3-2 エラー発生元の処理を確認

3-1の調査でエラーが発生したセッション・接続元クライアントを特定できた場合、接続元のアプリケーション処理でエラーやジョブ処理の異常終了が検知されていないか、アプリケーション担当者へ確認を行い、どのような処理で発生しているエラーなのかを特定します。

発生要因の処理が特定できた場合は、どのようなSQL操作によるものなのかも合わせて確認します。

3-3 サポートサービスの利用

上述のように本エラーは原因の特定が難しい可能性が高いため、サポートサービスを利用できる場合は、3-1および3-2の調査情報を取得して問い合わせを行い、エラー原因・対処策を確認しましょう。

4. 最後に

ORA-03137が発生した場合、まずはどのようなセッションがエラーとなったか、各種ログファイルから状況を確認しましょう。

しかし、本エラーは原因の特定が難しいため、サポートサービスを適宜利用して調査依頼を行うことをお勧めします。