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.3 Oracle RACでのインスタンス固有のアラート・ファイルの使用

Oracle RACデータベースの各インスタンスには、1つのアラート・ファイルがあります。各インスタンスのアラート・ファイル(alert.SID.log)には、データベース操作中に発生したエラー・メッセージおよび例外に関する重要な情報が含まれています。インスタンスを起動するたびに、アラート・ファイルの末尾に情報が追加されます。すべての処理スレッドをインスタンスのアラート・ファイルに書き込むことができます。

alert_SID.logファイルは、DIAGNOSTIC_DEST初期化パラメータで指定されたディレクトリにあります。

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/dbcaOracle_base/cfgtoollogs/dbua内のログ・ファイルに書き込まれます。

B.5 停止保留問題の解決

SHUTDOWN IMMEDIATEが保留され、停止要求を繰り返してもOracle Databaseが迅速に応答しなくなる場合があります。これは、Oracle Clusterwareで現行の停止要求が処理中のため発生する場合があります。そのような場合は、以後の停止要求に対し、SQL*Plusを使用してSHUTDOWN ABORTを発行します。

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のデータベース・インスタンスは開始できません。

次の手順に従って、データベース・インスタンスを開始します。

  1. 次に示すように、Oracle Clusterwareスタックを2つのノードで停止します。

    crsctl stop cluster
  2. 次に示すように、Oracle Clusterwareスタックを2つのノードで開始します。

    crsctl start cluster
  3. 次に示すように、NICで障害が発生したノードAのデータベース・インスタンスを停止します。

    srvctl stop instance -db db_unique_name -node A
  4. 次のコマンドをノードで別々に実行して、2つのノードでデータベースを開始します。

    srvctl start instance -db db_unique_name -node B
    srvctl start instance -db db_unique_name -node A

    インスタンスがノードBで開始されるまで、データベース・インスタンスはノードAで開始されません。