Oracle 11g ADRに関する検証 その1
<Oracle 11g ADRに関する検証 その1>
ペンネーム: ミラニスタ
今週から、自動診断リポジトリ(ADR:Automatic Diagnostic Repository)
の検証を行います。
▼ はじめに
11gから障害診断インフラストラクチャという仕組みが導入され、問題の防
止、検出、診断および解決に関する運用コストが削減できるそうです。
ところで、皆さんは RAC:Real Application Cluster の障害試験を行った経
験はありませんか?
例えば、2ノード RAC構成でインターコネクト障害を模擬するために、冗長
化されたケーブルを両方とも抜いてしまうようなケースにおいて、RAC がどん
な挙動を行っているのか、何を見て確認すればよいでしょうか?
ざっと必要と思われるログ・ファイル等と各々の格納場所は以下のとおりで
す。
1. データベースのアラート・ログ
初期化パラメータ BACKGROUND_DUMP_DEST に指定されたディレクトリ
2. Cluster Ready Servicesデーモン(crsd)・ログ・ファイル
$ORA_CRS_HOME/log//crsd
3. Oracle Cluster Registry(OCR)ログ・ファイル
$ORA_CRS_HOME/log//client
4. クラスタ同期化サービス(CSS)・ログ・ファイル
$ORA_CRS_HOME/log//cssd
5. イベント・マネージャ(EVM)・ログ・ファイル
$ORA_CRS_HOME/log//evmd
6. リスナー・ログ
$ORACLE_HOME/network/log
7. Syslog
/var/log (Linux)等
となっている部分は各ノード毎に存在するため、実際に障害試験
を行う際、参照すべきログ・ファイル等は多岐にわたります。
その他、ASMを使っていればASMインスタンスのアラート・ログなども確認し
なければなりません。
$ tail -f
として、ログ・ファイルをモニターしたりすることはよくありますが、狭い
ディスプレイの中でTerminal画面をいくつも開いて、どれがどのログだったか
わからなくなってしまった…なんてことは筆者の場合多々あります。
障害試験という計画された障害状態の確認でさえ面倒なのですから、実際の
障害時に限られた時間で原因を探求するというのは非常に大変な作業です。
障害診断インフラストラクチャの中で中核となる「自動診断リポジトリ(ADR)」
というのは、あちこちに存在するログ・ファイル等を一元管理してくれるそう
です。
何か運用者にとって、とても有難い機能のような気がします。
早速、検証してみましょう!
▼ ADRの概要
最初に略語の意味を確認しておきましょう。
・Diagnostic 【形】診断に用いる
・Repository 【名】貯蔵所、集積所、埋葬所(?!)
「診断」というのはちょっと興味をそそられる言葉ですが、とりあえずADR
がどんなものなのかということを押さえておきます。
Repositoryと言っても、ADRはOracleデータベースの中に情報を格納するの
ではなく、ファイルベースのリポジトリです。
つまり、障害でインスタンスが停止してしまったから情報にアクセスできま
せん、ということでは困ってしまうので、情報はあくまでもファイルとして保
持されます。
ADRでは、アラート・ログ、トレース・ファイル、ダンプ・ファイル等の情
報を「診断データ」と呼んでいます。
■ 検証環境
RedHatLinux ES4 Update 5
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0
○ ADRベースとは?
診断データを一元管理するからには、「どこに?」格納するのかが大切です。
ADRでは、ルート・ディレクトリを「ADRベース」と呼んでいます。
データベースの場合、その場所は初期化パラメータ「DIAGNOSTIC_DEST」で
指定されたディレクトリになり、デフォルトは ORACLE_BASE 環境変数の値に
なります。
例)
$ echo $ORACLE_BASE /opt/oracle
○ ADRベースを変更してみる
筆者は Unix環境でOracleを運用してきた経験が長いので、アラートログや、
リスナー・ログが /opt の下に出力されることに違和感を感じていました。
「ログの吐き先はやっぱり /var以下でしょ!!」という気がしますので、
せっかくですからADRベースを /var以下に変更してみることにします。
1) 変更前
SQL> conn / as sysdba 接続されました。 SQL> show parameter diag NAME TYPE VALUE ------------------- ----------- -------------------- diagnostic_dest string /opt/oracle
2) 出力先ディレクトリの作成
# cd /var # mkdir oracle # chown : oracle
例)
$ ls -l /var .......................................................... drwxr-xr-x 2 ora111d oinstall 4096 x月 xx xx:xx oracle .......................................................... $ ls -l /var/oracle 合計 0 ←当然何もない
3) ADRベースの変更
SQL> set timing on SQL> alter system set diagnostic_dest='/var/oracle'; システムが変更されました。 経過: 00:00:38.17 ←時間がかかっていることに注意!! SQL> show parameter diag NAME TYPE VALUE ------------------- ----------- -------------------- diagnostic_dest string /var/oracle
オンラインで変更できることに注目してください。
また、従来からある以下の初期化パラメータは、下位互換性のために残され
ていますが、実質的に ADR のディレクトリ構造の中に取り込まれています。
NAME VALUE --------------------- -------------------------------------------- background_dump_dest /var/oracle/diag/rdbms/ora111d/ora111d/trace core_dump_dest /var/oracle/diag/rdbms/ora111d/ora111d/cdump user_dump_dest /var/oracle/diag/rdbms/ora111d/ora111d/trace
○ ADRのディレクトリ構造
$ cd /var/oracle $ ls -R .: diag ./diag: rdbms ./diag/rdbms: ora111d ./diag/rdbms/ora111d: i_1.mif 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/hm: ./diag/rdbms/ora111d/ora111d/incident: ./diag/rdbms/ora111d/ora111d/incpkg: ./diag/rdbms/ora111d/ora111d/ir: ./diag/rdbms/ora111d/ora111d/lck: (省略) ./diag/rdbms/ora111d/ora111d/metadata: (省略) ./diag/rdbms/ora111d/ora111d/stage: ./diag/rdbms/ora111d/ora111d/sweep: ./diag/rdbms/ora111d/ora111d/trace: alert_ora111d.log
知らない間に、こんなに沢山のディレクトリやファイルが出来ていました。
時間がかかる訳です。
ADRのディレクトリ情報等は V$DIAG_INFO ビューを検索することによっても
確認することができます。
SQL> COL NAME FOR A23 SQL> COL VALUE FOR A70 SQL> SET LINES 110 SQL> SELECT * FROM V$DIAG_INFO; INST_ID NAME VALUE ------- ----------------------- ------------------------------------------------------------------ 1 Diag Enabled TRUE 1 ADR Base /var/oracle 1 ADR Home /var/oracle/diag/rdbms/ora111d/ora111d 1 Diag Trace /var/oracle/diag/rdbms/ora111d/ora111d/trace 1 Diag Alert /var/oracle/diag/rdbms/ora111d/ora111d/alert 1 Diag Incident /var/oracle/diag/rdbms/ora111d/ora111d/incident 1 Diag Cdump /var/oracle/diag/rdbms/ora111d/ora111d/cdump 1 Health Monitor /var/oracle/diag/rdbms/ora111d/ora111d/hm 1 Default Trace File /var/oracle/diag/rdbms/ora111d/ora111d/trace/ora111d_ora_26133.trc 1 Active Problem Count 1 1 Active Incident Count 50 11行が選択されました。
“Default Trace File”というのは、現行セッションにおけるトレース・ファ
イルのフルパスを示します。
次回は、リスナー・ログの出力先変更と、ADRをコマンド・ラインで管理す
るための ADRコマンド・インタプリタ(ADRCI)について紹介します。
今日はここまで。
低気圧のせいで電車が遅れた
恵比寿より
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・