Oracleエラー対応(ORA-03135):ORA-03135発生時の調査対応について
現役DBAが解説-Oracleエラー対応
データベース接続中にORA-03135が発生する可能性があります。
本記事ではORA-03135発生時の原因および対策を解説します。
1. エラーメッセージ
ORA-03135: 接続が失われました プロセスID: XXX セッションID: XXX、シリアル番号: XXX
ORA-03135は、接続状況によってはTNS-3135やORA-03113などのエラーで出力される場合があります。
2. 原因・対策
本記事では ORA-03135が発生するケースを3つご紹介します。
2-1 サーバが予期せず終了、または強制的に終了したケース
接続中にサーバが予期せず終了した場合に発生します。
サーバ状態を確認し、正常であれば再度接続を行います。
2-2 サーバ接続中にタイムアウトで接続が切れるケース
接続タイムアウトエラーは、データベース接続中の認証フェーズで許可された時間内に完了しない場合に発生します。
データベース側の対策としては、sqlnet.oraのSQLNET.INBOUND_CONNECT_TIMEOUTパラメータの値を変更することで事象回避できます。
SQLNET.INBOUND_CONNECT_TIMEOUTは、クライアントがデータベースに接続して必要な認証情報を提供する時間を指定します。
●例(接続タイムアウトを120秒に設定):
SQLNET.INBOUND_CONNECT_TIMEOUT = 120
2-3 アイドル接続タイムアウトのケース
セッションが一定時間アイドル状態の場合で、設定されたアイドル接続時間を超過したことにより、セッションが切断された際に発生します。
アイドル時間の設定はファイアウォール(機器側やサーバ側)にあるため、切り分けが難しい場合があります。
データベース側での対策としては、sqlnet.oraのSQLNET.EXPIRE_TIMEパラメータの値を変更することで事象回避できます。
SQLNET.EXPIRE_TIMEは、接続がアクティブであることを確認する間隔(分単位)を指定します。
●例(アクティブ確認間隔を10分に設定):
SQLNET.EXPIRE_TIME=10
3. 最後に
本エラーは、サーバ接続中にORA-03135が発生したケースでは原因の範囲が広く、調査が難航し長期化する場合があります。
調査としては問題の切り分けから行うことをお勧めします。
なお、SQLNETパラメータ値の変更ですが、負荷やセキュリティ観点を考慮し、少しずつ値を調整することをお勧めします。