Oracle 11g ADRに関する検証 その3
<Oracle 11g ADRに関する検証 その3>
ペンネーム: ミラニスタ
自動診断リポジトリ(ADR:Automatic Diagnostic Repository)の検証を行っ
ています。
▼ 前回のおさらい
前回は、リスナーの ADRベースを変更してみました。また、ADRコマンド・
インタプリタ(ADRCI)の使い方を簡単にご説明しました。
▼ インシデントとは?
実は前回少しだけ触れたのですが、ORA-600 のようなクリティカルなエラー
が発生すると ADRでは「インシデント」という単位で管理されます。
インシデントとなるような場合は、アラート・ログに該当エラーメッセージ
が出力されると共に、トレース・ファイル等が出力されます。
▼ クリティカル・エラーとは?
インシデントとなるエラーについては、KROWN #126440 に記述がありますが
上に挙げた ORA-600 以外にも ORA-07445(OS例外)や ORA-04031(共有プール
のメモリー不足)などがあります。
この情報を読むと、Oracle社がどのようなエラーを重大としているかうかが
い知ることができ興味深いです。
▼ インシデントを発生させてみる!
任意のORAエラーを発生させるストアド・プロシージャ(PROC_EXCPT)を作
成してみました。
======================================================================
注意:本番環境などで実行すると混乱の原因となりますので、コードの全文は
公開しませんが、ヒントとして「pragma exception_init」というのを使うこ
とだけ紹介しておきます。
例:
err4031 exception;
pragma exception_init (err4031, -4031);
…………………………………
raise err4031;
======================================================================
実行例:共有メモリー割当失敗(ORA-4031)を発生させる(実際はさせたフリ)
SQL> execute PROC_EXCPT(4031); BEGIN PROC_EXCPT(4031); END; * ERROR at line 1: ORA-04031: unable to allocate bytes of shared memory ("","","","") ORA-06512: at "ADR_TEST.PROC_EXCPT", line 15 ORA-06512: at line 1
エラーが発生した時のアラート・ログは次のようになります。(ADRCIで確認)
................................................................. 2008-xx-xx xx:27:35.740000 +09:00 Errors in file /var/oracle/diag/rdbms/ora111d/ora111d/trace/ora111d_ora_25387.trc (incident=56614): ORA-04031: unable to allocate bytes of shared memory ("","","","") Incident details in: /var/oracle/diag/rdbms/ora111d/ora111d/incident/incdir_56614/ora111d_ora_25387_i56614.trc 2008-xx-xx xx:27:37.570000 +09:00 Trace dumping is performing id=[cdmp_20080602152737] 2008-xx-xx xx:27:38.974000 +09:00 Sweep Incident[56614]: completed ^^^^^ .................................................................
インシデントID(Incident[56614])というのが確認できます。
▼ インシデント一覧の表示
ADRCIからインシデント一覧を表示させることができます。
adrci> SHOW INCIDENT ADR Home = /var/oracle/diag/rdbms/ora111d/ora111d: ************************************************************************* INCIDENT_ID PROBLEM_KEY CREATE_TIME ------------ ------------------ ---------------------------------------- 56614 ORA 4031 2008-xx-xx xx:27:35.740621 +09:00 ← 56613 ORA 600 2008-xx-xx xx:10:13.431071 +09:00 56612 ORA 700 [kgerev1] 2008-xx-xx xx:10:11.526567 +09:00 56580 ORA 4031 2008-xx-xx xx:04:03.638581 +09:00 52288 ORA 4030 2008-xx-xx xx:07:49.201133 +09:00 ..................................................................
さらに、Incident[56614]を詳細に表示させるためには以下のようにします。
adrci> SHOW INCIDENT -MODE DETAIL -P "INCIDENT_ID=56614" ADR Home = /var/oracle/diag/rdbms/ora111d/ora111d: ************************************************************************* ********************************************************** INCIDENT INFO RECORD 1 ********************************************************** INCIDENT_ID 56614 STATUS ready CREATE_TIME 2008-xx-xx xx:27:35.740621 +09:00 PROBLEM_ID 1 CLOSE_TIME FLOOD_CONTROLLED none ERROR_FACILITY ORA ERROR_NUMBER 4031 ERROR_ARG1 (中略) ERROR_ARG8 SIGNALLING_COMPONENT SIGNALLING_SUBCOMPONENT SUSPECT_COMPONENT SUSPECT_SUBCOMPONENT ECID IMPACTS 0 PROBLEM_KEY ORA 4031 FIRST_INCIDENT 633 FIRSTINC_TIME 2008-03-19 19:27:43.675205 +09:00 LAST_INCIDENT 56614 LASTINC_TIME 2008-xx-xx xx:27:35.740621 +09:00 IMPACT1 34668547 IMPACT2 34668546 IMPACT3 0 IMPACT4 0 KEY_NAME ProcId KEY_VALUE 37.38 KEY_NAME PQ KEY_VALUE (16777217, 1212388054) KEY_NAME SID KEY_VALUE 65.28540 KEY_NAME Client ProcId KEY_VALUE oracle@server132 (TNS V1-V3).25387_46912511425632 OWNER_ID 1 INCIDENT_FILE /var/oracle/diag/rdbms/ora111d/ora111d/incident/incdir_56614/ora111d_ora_25387_i56614.trc OWNER_ID 1 INCIDENT_FILE /var/oracle/diag/rdbms/ora111d/ora111d/trace/ora111d_ora_25387.trc 1 rows fetched
▼ インシデント・パッケージング・サービス(IPS)とは?
障害の発生原因について Oracleサポートに分析を依頼する場合、アラート・
ログや該当するトレース・ファイルを送らなければならないことがよくありま
す。
この場合
1. アラート・ログの場所を確認する
2. アラート・ログの障害発生に関する部分を確認する
3. 関連するトレース・ファイル等が出力されていないか確認する
4. トレース・ファイル等を送付する
というような作業を行わなければなりません。
これらに要する時間は、Oracleの経験によって個人差が大きいのではないか
と思います。
インシデント・パッケージング・サービス(IPS)とは、必要な情報を、簡
単な操作で ZIPファイルにパッケージ化することができる機能です。
IPS(機能)は ADRCIから利用することができます。
▼ 論理インシデント・パッケージの作成
あるインシデントに基づく診断データ(第1回参照)の情報をまとめたもの
を論理インシデント・パッケージと呼びます。
論理パッケージは実体がなく、最終的な ZIPファイルを作るための情報で
す。
Incident[56614]に基づく論理インシデント・パッケージは、以下の要領で
作成します。
adrci> IPS CREATE PACKAGE INCIDENT 56614 ←インシデント番号を指定 Created package 2 based on incident id 56614, correlation level typical ^^
このパッケージ番号「2」は IPSにより自動的に採番されますが、次のステッ
プで必要になるので、メモっておきましょう。
▼ 物理インシデント・パッケージの生成
以下の要領で、論理インシデント・パッケージから物理インシデント・パッ
ケージを生成し、最終的な ZIPファイルを作ります。
生成先のディレクトリを指定する必要があるので、ここでは /var/oracle
を指定します。
adrci> IPS GENERATE PACKAGE 2 IN /var/oracle ^^パッケージ番号を指定 Generated package 2 in file /var/oracle/ORA4031_2008xxxxxx5152_COM_1.zip, mode complete
ファイル名は __.zip となります。
・PackageName:問題キー(この場合 ORA-4031)の一部とタイムスタンプの組 み合わせになります。 ・Mode :COM(完全)または INC(増分)のいずれかです。(詳細は 「11g ユーティリティ」のマニュアルを参照してください。) ・Seq :順序番号
Oracleサポートにはこのファイルを送るだけでよいのです。
▼ 物理インシデント・パッケージの内容
物理インシデント・パッケージを解凍し、内容を確認してみましょう。
ORA4031_2008xxxxxx5152_COM_1.zip ↓解凍結果 diag ./diag: rdbms ./diag/rdbms: ora111d ./diag/rdbms/ora111d: ora111d ./diag/rdbms/ora111d/ora111d: alert cdump hm incident incpkg ir lck metadata stage sweep trace ./diag/rdbms/ora111d/ora111d/alert: log.xml ← 新しい形式のアラート・ログ ./diag/rdbms/ora111d/ora111d/cdump: (省略) ./diag/rdbms/ora111d/ora111d/incident: incdir_56614 ← Incident[56614]のディレクトリ ./diag/rdbms/ora111d/ora111d/incident/incdir_56614: ora111d_ora_25387_i56614.trc ora111d_ora_25387_i56614.trm ./diag/rdbms/ora111d/ora111d/incpkg: pkg_2 ← パッケージ番号=2 のディレクトリ ./diag/rdbms/ora111d/ora111d/incpkg/pkg_2: seq_1 ← 順序番号=1 のディレクトリ ★./diag/rdbms/ora111d/ora111d/incpkg/pkg_2/seq_1: manifest_2_1.html manifest_2_1.txt manifest_2_1.xml metadata.xml (その他省略) ./diag/rdbms/ora111d/ora111d/ir: (省略) ./diag/rdbms/ora111d/ora111d/trace: alert_ora111d.log ← 下位互換性のための従来型アラート・ログ ora111d_ora_25387_i56614.trc ora111d_ora_25387_i56614.trm (その他トレース・ファイル多数) 注目は★のディレクトリ配下にある、manifest_2_1.* です。 試しに ./diag/rdbms/ora111d/ora111d/incpkg/pkg_2/seq_1/manifest_2_1.txt の中を見てみましょう。
====================================== Manifest for package 2 Manifest details ------------------------------------------------------ | Package ID | 2 | ------------------------------------------------------ | Creation time | 2008-xx-xx xx:51:52.781809 +09:00 | ------------------------------------------------------ | Archive time | 2008-xx-xx xx:59:13.809799 +09:00 | ------------------------------------------------------ | Sequence | 1 | ------------------------------------------------------ | Package mode | Complete | ------------------------------------------------------ | Package status | Generating | ------------------------------------------------------ | Package flags | Flags: (No flags set) | ------------------------------------------------------ (中略) Files ----------------------------------------------------------------------------- | File name | Location | Size | File time | ----------------------------------------------------------------------------- | ora111d_ora_25387_i | /incident | 5374446 | 2008-06-02 | | 56614.trc | /incdir_56614 | | 15:27:37.000000 | | | | | +09:00 | ----------------------------------------------------------------------------- | ora111d_ora_25387_i | /incident | 24633 | 2008-06-02 | | 56614.trm | /incdir_56614 | | 15:27:37.000000 | | | | | +09:00 | (後略) ======================================
物理インシデント・パッケージの内容をまとめた manifest(管理票)となっ
ています。
manifest_2_1.html、manifest_2_1.xml にも同様の情報が記載されています。
いかがでしょうか。このように ADRCI の ISP機能を使えば、面倒なトレー
ス・ファイルの収集や圧縮を非常に簡単に行うことができます。
来週は最終回です。今までのおさらいと、ADR によってどれくらい運用が効
率化できるかを考察してみます。
今日はここまで。
関東地方は梅雨入りしたらしい
恵比寿より