B Oracle RACのトラブルシューティング
この付録では、トレース・ファイルおよびログ・ファイルを使用して、Oracle Real Application Clusters(Oracle RAC)コンポーネントの問題を診断する方法について説明します。この項には次のトピックが含まれます:
注意:
Oracle RACでのOracle Database用に生成されたファイルと同じように、トレース・ファイルおよびログ・ファイルは、Oracle Clusterwareコンポーネントでも使用できます。Oracle Clusterwareの場合、これらのファイルはOracle Databaseによって統合ディレクトリのログ構造に格納されます。
Oracle Clusterwareのトラブルシューティングの詳細は、『Oracle Clusterware管理およびデプロイメント・ガイド』を参照してください。
B.1 エラー分析に必要なファイルの場所
Oracle Databaseは、Oracle RAC環境で発生する重要なイベントに関する情報をトレース・ファイルに記録します。Oracle RACのトレース・ファイルは、非クラスタのOracle Databaseの場合と同じです。すべてのインスタンスに対してトレース・ファイルを定期的に監視およびバックアップし、将来のトラブルシューティングのための情報を保持します。
ORA-600
エラーに関する情報は、各インスタンスのalert_SID
.log
ファイルにあります。ここでSIDには、インスタンスの識別子を指定します。
バックグラウンド・プロセスおよびサーバー・プロセス用のアラート・ログ・ファイルとすべてのトレース・ファイルは、自動診断リポジトリに書き込まれます(自動診断リポジトリの位置は、DIAGNOSTIC_DEST
初期化パラメータで指定できます)。次に例を示します。
diagnostic_dest=/oracle/11.1/diag/rdbms/rac/RAC2/trace
Oracle Databaseは、各バックグラウンド・スレッドに対して別々のトレース・ファイルを作成します。Oracle RACのバックグラウンド・スレッドでは、トレース・ファイルを使用して、データベース操作およびデータベース・エラーが記録されます。これらのトレース・ログは、トラブルシューティングに有効であり、また、Oracleサポート・サービスは、これらのトレース・ログを使用して、クラスタ・データベース構成の問題をより効率的にデバッグできます。トレース・ファイル名はオペレーティング・システム固有ですが、通常、各ファイルにはそれを書き込むLGWRやRECOなどのプロセスの名前が含まれます。Linux、UNIXおよびWindowsシステムでは、バックグラウンド・プロセスのトレース・ファイル名は、SID_
process name
_process identifier
.trc
になります。
関連項目:
トレース・ファイルでのエラー監視およびアラートの詳細は、『Oracle Database管理者ガイド』および『Oracle Database 2日でReal Application Clustersガイド』を参照してください。
DIAGNOSTIC_DEST
初期化パラメータを設定した場合は、トレース・ファイルはユーザー・プロセスに対しても作成されます。ユーザー・プロセス・トレース・ファイルの名前は、SID
_ora_
process_identifier/thread_identifier
.trc
の形式です(LinuxおよびUNIXシステムの場合、process_identifier
はプロセス識別子(PID)を表す5桁の数値で、Windowsシステムの場合、thread_identifier
はスレッド識別子です)。
B.2 Oracle RACでの診断データの管理
Oracle RACインスタンス全体にわたる問題は、最も診断が難しいタイプの問題である可能性があります。
たとえば、複数のインスタンスからトレース・ファイルを相互に関連付け、マージする必要がある場合があります。Oracle Database 12c リリース2 (12.2)には、診断データの収集および管理用の高度な障害診断インフラストラクチャが含まれており、データベース診断データの格納に自動診断リポジトリ(ADR)ファイル・ベースのリポジトリが使用されます。共有ディスクにADRベースを作成すると、同じOracle RACデータベースのすべてのインスタンスのADRホームを同じADRベースに配置できます。共有記憶域を使用すると、次の処理を実行できます。
-
ADRCIコマンドライン・ツールを使用して、すべてのインスタンスの診断を相互に関連付けることができます。
ADRCIは、ADR内の診断データを確認し、Oracleサポートへの送信用に発生事象と問題の情報をzipファイルに圧縮できるコマンドライン・ツールです。診断データには、発生事象と問題の説明、トレース・ファイル、ダンプ、状態モニター・レポート、アラート・ログ・エントリなどが含まれます。
関連項目:
ADRCIの使用方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。
-
データ・リカバリ・アドバイザを使用して、破損したデータ・ブロック、破損または欠落したファイルおよびその他のデータ障害を修復できます。
データ・リカバリ・アドバイザは、永続データ障害の自動的診断、修復オプションの提示およびユーザーの要求に応じた問題の修復を行う、Oracle Databaseインフラストラクチャです。
関連項目:
診断データの管理の詳細は、『Oracle Database管理者ガイド』を参照してください。
B.4 Oracle RACでのJavaベースのツールとユーティリティに関するトレースの有効化
Oracle RACで使用可能なJavaベースのすべてのツールとユーティリティは、ツールまたはユーティリティと同じ名前のスクリプトを実行してコールします。
クラスタ検証ユーティリティ(CVU)、Database Configuration Assistant (DBCA)、Net Configuration Assistant (NETCA)、サーバー制御ユーティリティ(SRVCTL)、Global Services Daemon (GSD)などがあります。たとえば、DBCAを実行するには、コマンドdbca
を入力します。
Oracle Databaseでは、デフォルトでDBCAおよびDatabase Upgrade Assistant(DBUA)のトレースが有効になっています。CVU、GSDCTLおよびSRVCTLの場合は、SRVM_TRACE
環境変数をTRUE
に設定すると、Oracle Databaseでトレースを生成できます。トレースはログ・ファイルに書き込まれます。たとえば、DBCAとDBUAの場合、トレースはそれぞれOracle_base/cfgtoollogs/dbca
とOracle_base/cfgtoollogs/dbua
内のログ・ファイルに書き込まれます。
B.6 Oracle RACインスタンスでプライベート・ネットワークが使用されているかどうかの判別方法
この項では、Oracle RACインスタンスでプライベート・ネットワークが使用されているかどうかを手動で判別する方法について説明します。ただし、このタスクを実行する場合は、Oracle Enterprise Manager Cloud Controlのグラフィカル・ユーザー・インタフェース(GUI)を使用してインターコネクトを確認することをお薦めします。また、Oracle Enterprise Managerを使用したOracle RACの監視の詳細は、『Oracle Database 2日でReal Application Clustersガイド』を参照してください。
ほとんどのネットワーク・プロトコルで、oradebug ipc
コマンドを発行し、データベースで使用されているインターコネクトを確認できます。次に例を示します。
oradebug setmypid
oradebug ipc
これらのコマンドは、DIAGNOSTIC_DEST
初期化パラメータによって指定された場所にトレース・ファイルをダンプします。出力は次のようになる場合があります。
SSKGXPT 0x1a2932c flags SSKGXPT_READPENDING info for network 0 socket no 10 IP 172.16.193.1 UDP 43749 sflags SSKGXPT_WRITESSKGXPT_UP info for network 1 socket no 0 IP 0.0.0.0 UDP 0...
この例では、データベースがユーザー・データグラム・プロトコル(UDP)プロトコルでIP 172.16.193.1を使用していることを確認できます。oradebug tracefile_name
コマンドを発行して、出力が書き込まれるトレースの場所を出力することもできます。
また、V$CLUSTER_INTERCONNECTS
ビューを問い合せて、プライベート・インターコネクトに関する情報を確認できます。次に例を示します。
SQL> SELECT * FROM V$CLUSTER_INTERCONNECTS; NAME IP_ADDRESS IS_ SOURCE ----- -------------------------- --- ------------------------------- eth0 138.2.236.114 NO Oracle Cluster Repository
B.7 プライベートNIC障害が発生した後、データベースの起動が失敗する
2ノード・クラスタで、グリッド・プロセス間通信(GIPC)を使用せず、プライベート・ネットワーク・インタフェース・カード(NIC)を1つだけ持つとします。Oracle Grid Infrastructure Management Repository database (mgmtdb)を実行しているノード(たとえばノードA)で、もう1つのノード(ノードB)が削除された後に、NICで障害が発生した場合、プライベート・ネットワークがノードAで再確立されると、ノードBはクラスタに参加するものの、ノードAのデータベース・インスタンスは開始できません。
次の手順に従って、データベース・インスタンスを開始します。
-
次に示すように、Oracle Clusterwareスタックを2つのノードで停止します。
crsctl stop cluster
-
次に示すように、Oracle Clusterwareスタックを2つのノードで開始します。
crsctl start cluster
-
次に示すように、NICで障害が発生したノードAのデータベース・インスタンスを停止します。
srvctl stop instance -db db_unique_name -node A
-
次のコマンドをノードで別々に実行して、2つのノードでデータベースを開始します。
srvctl start instance -db db_unique_name -node B srvctl start instance -db db_unique_name -node A
インスタンスがノードBで開始されるまで、データベース・インスタンスはノードAで開始されません。