概要
オラクルデータベースのトラブル発生時には、複数のログを確認して原因を特定し、適切な対応を取ることが重要です。本記事では、主要なログの種類や保存場所、よく見られるエラーメッセージと対処方法を詳しく解説します。
リンク
リンク
リンク
1. アラートログ (Alert Log)
アラートログは、データベース内の重大なイベントを記録するファイルです。エラーの発生やシステムの異常が生じた場合、まずアラートログを確認することから始めましょう。
保存場所
- デフォルト:
$ORACLE_BASE/diag/rdbms/データベース名/インスタンス名/trace
- ファイル名:
alert_データベース名.log
代表的なエラーメッセージと対処法
- エラー例1: ORA-00600 (内部エラー)
Tue Nov 7 12:35:01 2023 ORA-00600: internal error code, arguments: [kghfrf_free_1], [], [], [], [], [], [], []
解説
ORA-00600はOracle内部のエラーで、原因は多岐にわたります。エラーコードに含まれる引数から、サポートにエスカレーションする際に役立つ情報を得られます。
対処法- Oracleサポートの「ORA-600ツール」を使用してエラー内容を分析します。
- アラートログやトレースファイルで該当のプロセスやSQL文を確認し、原因を特定します。
- エラー例2: ORA-04031 (メモリ不足)
Wed Nov 8 09:12:33 2023 ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","kkscs")
解説
メモリ管理領域 (shared pool) の割り当てができない場合に発生します。メモリ設定が不足していることが原因です。
対処法ALTER SYSTEM FLUSH SHARED_POOL;
コマンドでメモリを解放します。- SGAパラメータの調整やメモリ拡張を検討します。
2. トレースファイル (Trace File)
トレースファイルには、特定のセッションやプロセスに関連する詳細なエラーメッセージが記録されます。アラートログに記載されたエラーの詳細を深掘りするために利用します。
保存場所
- デフォルト:
$ORACLE_BASE/diag/rdbms/データベース名/インスタンス名/trace
代表的なエラーメッセージと対処法
- エラー例1: SQL実行エラー
*** 2023-11-07 12:36:03.456 ORA-00600: internal error code, arguments: [kghfrf_free_1], [], [], [], [], [], [], [] Current SQL statement for this session: SELECT * FROM employees WHERE employee_id = 100
対処法- エラーメッセージに含まれるSQL文を確認し、問題の発生タイミングやSQL文に誤りがないかチェックします。
- 必要に応じて、インデックスの再構築やSQLのチューニングを検討します。
- エラー例2: ORA-07445 (プロセス関連エラー)
*** 2023-11-08 15:05:22.789 ORA-07445: exception encountered: core dump [kghalf()+84]
解説
Oracleが特定のプロセスで予期せぬ例外に遭遇した場合に発生するエラーです。
対処法- トレースファイルを参照し、エラー発生箇所(関数名、メモリアドレス)を確認します。
- Oracleサポートの指示に従い、必要に応じてパッチ適用を検討します。
3. 自動診断リポジトリ (Automatic Diagnostic Repository: ADR)
ADRは、オラクル11g以降で導入されたエラーログやトレースファイルの一元管理機能です。adrci
コマンドで各種情報を整理して表示できます。
保存場所
- デフォルト:
$ORACLE_BASE/diag/rdbms/データベース名/インスタンス名
代表的なエラーメッセージと対処法
- ADRの出力例
adrci> show incident -last 5 INCIDENT_ID PROBLEM_KEY CREATE_TIME 1 ORA 600 [kghfrf_free_1] 2023-11-07 12:36:03 2 ORA 4031 [sga heap(1,0)] 2023-11-08 15:05:22
対処法show incident
コマンドを活用し、インシデント一覧からエラー内容を確認します。- 必要に応じて、詳細なトレースを追い、問題解決に取り組みます。
- リカバリ関連のADRエラー例
adrci> show alert -tail 50 2023-11-08 18:02:10.123000 +00:00 ORA-01555: snapshot too old: rollback segment number 9 with name "_SYSSMU9$" too small
解説
スナップショットが古くなりすぎたことにより、データの一貫性が損なわれる場合に発生します。対処法- UNDOテーブルスペースの設定を見直し、サイズを増やすことで問題解消を図ります。
4. リスナーログ (Listener Log)
リスナーログには、クライアント接続やエラーが記録されています。接続関連のトラブル発生時には、リスナーログを確認することで原因特定に役立ちます。
保存場所
- デフォルト:
$ORACLE_BASE/diag/tnslsnr/ホスト名/リスナー名/trace
- ファイル名:
listener.log
代表的なエラーメッセージと対処法
- エラー例1: TNS-12541 (リスナーの不在)
07-NOV-2023 12:40:12 * (CONNECT_DATA=(SERVICE_NAME=orcl)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=1521)) * establish * orcl * 12541 TNS-12541: TNS:no listener
対処法lsnrctl status
でリスナーが起動しているか確認します。- リスナーを再起動し、設定を確認することで解決できる場合があります。
- エラー例2: TNS-12514 (サービス名不明)
08-NOV-2023 13:02:00 * (CONNECT_DATA=(SERVICE_NAME=orcl)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.15)(PORT=1521)) * establish * orcl * 12514 TNS-12514: TNS:listener does not currently know of service requested in connect descriptor
対処法- リスナー設定ファイル(
listener.ora
)とデータベースのサービス名を再確認します。
- リスナー設定ファイル(
5. オペレーティングシステムログ
オラクルがシステム資源(CPU、メモリ、ディスク)関連の問題でエラーを起こしている場合、OSログを確認することで原因の特定が可能です。
保存場所
- Linuxでは「
/var/log/messages
」や「/var/log/syslog
」
代表的なエラーメッセージと対処法
- エラー例1: ディスクエラー
Nov 7 12:45:22 server-name kernel: [12345.678901] EXT4-fs error (device sda1): ext4_find_entry:1452: inode #1234567: comm oracle: reading directory lblock 0
対処法- ディスクの使用状況を確認し、不要ファイルの削除やディスク容量の拡張を検討します。
- ハードウェアの障害が疑われる場合は、システム管理者に相談します。
まとめ
各ログの保存場所、代表的なエラーメッセージ、原因の解説と対処法を把握しておくことは、迅速なトラブルシューティングの鍵です。まずはアラートログを確認し、さらに必要に応じてトレースファイル、ADR、リスナーログなどの情報を参照することで、効率的に問題を解決しましょう。
[参考]
データベース・エラー・メッセージ
コメント