ORA-00494: enqueue held for too long by 'inst N, osid M'('inst N, osid M' がエンキューを長時間保持)
Oracle意味
重要なリソースのエンキュー (例: CF - 制御ファイルのエンキュー) がプロセスによって許容時間をはるかに超えて保持されたため、システムのハングを防ぐために Oracle がそのプロセスを強制終了した。alert.log に 'killing enqueue blocker' のエントリとともに記録される。
原因
I/O のボトルネック、高い CPU 負荷、または OS の停滞 (スワッピング、遅いディスク) のため、バックグラウンドまたはユーザープロセスが重要なエンキューを許容時間を超えて保持した。制御ファイル (CF) のエンキューでは、この時間は _controlfile_enqueue_timeout で設定される (デフォルト 900 s)。隠し (アンダースコア) パラメータは Oracle サポートの指示がある場合にのみ変更すべきである。通常、ストレージの遅延や LGWR/CKPT などの遅いプロセスがきっかけとなる。
対処方法
alert.log と強制終了されたプロセスのトレースファイルを確認し、どのエンキュー (通常は制御ファイル) とどのバックグラウンドプロセスが関与しているかを特定する。真の原因は通常ストレージ/I/O の遅延である: ディスクの応答時間、マルチパス、コントローラの健全性を確認する。CPU/メモリの逼迫とスワップ使用量を減らす。再発する場合は、トレースの分析結果を Oracle サポートと共有する。
同じデータベースの他の項目
- ORA-01102cannot mount database in EXCLUSIVE mode(EXCLUSIVE モードでデータベースをマウントできない)
- ORA-29913error in executing ODCIEXTTABLEOPEN callout(ODCIEXTTABLEOPEN コールアウトの実行エラー)
- ORA-19804cannot reclaim N bytes disk space from M bytes limit(M バイトの上限から N バイトのディスク領域を再利用できない)
- ORA-04021timeout occurred while waiting to lock object(オブジェクトのロック待機中にタイムアウト発生)
- ORA-04061existing state of package/procedure has been invalidated(パッケージ/プロシージャの既存の状態が無効化された)
- ORA-01466unable to read data - table definition has changed(データを読み取れない - 表定義が変更された)
- ORA-08176consistent read failure; rollback data not available(読み取り一貫性の失敗。ロールバックデータが利用できない)