ヘッダーをスキップ
Oracle Data Guard Broker
11gリリース1(11.1)
E05756-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

10 Data Guardのトラブルシューティング

この章では、様々なエラーとその解決方法について説明します。この章の内容は、次のとおりです。

10.1 診断情報のソース

Data Guard Brokerのアクティビティに関する情報は、次の形式で提供されます。

10.2 一般的な問題と解決策

この項では、一般的な問題と解決策について説明します。この項の内容は、次のとおりです。

10.2.1 ORA-16596: オブジェクトがData Guard Broker構成の一部ではありません

ブローカに対して要求が発行されましたが、接続に使用するデータベース・インスタンスはブローカ構成に含まれていません。ブローカが実行中のデータベースのブローカ構成プロファイルを検出できない場合に、このエラーが表示されることがあります。

解決策 ブローカ構成に含まれている他のデータベースを介して構成に再接続してください。ORA-16596エラーを戻したデータベースのdb_unique_name値と名前が一致するデータベースがブローカ構成に存在することを確認してください。

構成を有効化しようとして、そのデータベースの1つのブローカ構成ファイルが意図せずに削除されていた場合や陳腐化している場合にも、この問題が発生することがあります。その場合は、データベースをブローカ構成から削除し、(プライマリ・データベースではなく)そのスタンバイ・データベースの構成ファイルを手動で削除してから、構成の有効化を再試行してください。構成が有効化された後、前に削除したスタンバイ・データベースの新しいデータベース・プロファイルを作成するには、Enterprise Managerのスタンバイ・データベースの追加ウィザードを使用し、「既存のスタンバイ・データベースの追加」オプションを選択するか、DGMGRLコマンドライン・インタフェースを使用し、ADD DATABASEコマンドを発行します。

10.2.2 プライマリ・データベースに累積されたREDOが一部のスタンバイ・データベースに送信されない場合

Enterprise Managerの「ログ・ファイルの詳細」ページを表示すると、ログ・ファイルがプライマリ・データベースに累積され、ブローカ構成内の一部のスタンバイ・データベースにアーカイブされていないことがわかります。

解決策 問題を絞り込むには、次の操作を実行します。

  • プライマリ・データベースの状態が(TRANSPORT-OFFではなく)TRANSPORT-ONであることを確認します。

  • 問題のスタンバイ・データベースの構成可能なデータベース・プロパティLogShippingの値がONであることを確認します。

  • 監視可能なデータベース・プロパティLogXptStatusを使用して、プライマリ・データベースのREDO転送サービスのステータスをチェックします。REDO転送サービスにエラーがある場合は、エラー・メッセージを参考にして詳細なチェックおよび解決処置を判断します。次に例を示します。

    • スタンバイ・データベースが使用不可能であることをエラーが示している場合は、スタンバイ・データベースを再起動する必要があります。

    • リスナーが存在しないことをエラーが示している場合は、リスナーを再起動する必要があります。

    • スタンバイ・データベースにローカルの宛先がないことをエラーが示している場合は、プライマリ・データベースからのアーカイブREDOログ・ファイルを格納するスタンバイ位置を設定する必要があります。

10.2.3 スタンバイ・データベース上で多数のログ・ファイルが受信されるが適用されない場合

Enterprise Managerの「パフォーマンス」ページまたは「ログ・ファイルの詳細」ページを表示すると、スタンバイ・データベースに適用されないまま累積しているログ・ファイルが多すぎることがわかります。

解決策 アーカイブREDOログ・ファイルがスタンバイ・データベースに適用されない場合は、様々な原因が考えられます。ログ・ファイルが累積されている原因を調べて、妥当な理由を排除してください。

スタンバイ・データベースの現在のステータスが正常でない場合

  • ログ適用サービスが予期せず停止しているかどうかを判別します。詳細は、ORA-16766(フィジカル・スタンバイ・データベースの場合)またはORA-16768(ロジカル・スタンバイ・データベースの場合)のエラーの説明と解決策を参照してください。

  • これがロジカル・スタンバイ・データベースの場合は、障害トランザクションが発生したかどうかを確認します。

  • 問題の調査中にエラーを抑止する場合は、データベースのブローカ管理を一時的に無効化できます。


    関連項目:

    DGMGRLコマンドライン・インタフェースを使用してデータベースを無効化する方法の詳細は、第8章を参照してください。

スタンバイ・データベースの現在のステータスが正常な場合

  • スタンバイ・データベースの状態が(APPLY-OFFではなく)APPLY-ONであることを確認します。

  • プライマリ・データベースの状態が(TRANSPORT-OFFではなく)TRANSPORT-ONであることを確認します。


  • 関連項目:

    構成可能なデータベース・プロパティLogShippingの詳細は、第9章を参照してください。

  • ログ・ファイルが累積されている原因が、DelayMinsプロパティの設定値が大きすぎるためかどうかを調べます。(ログ適用サービスでは、スタンバイ・データベースへのアーカイブREDOログ・ファイルの適用が、指定した時間(分)だけ遅延されます。)


    関連項目:

    構成可能なデータベース・プロパティDelayMinsの詳細は、第9章を参照してください。

  • 何もエラーが表示されない場合は、Enterprise Managerの「パフォーマンス」ページでアーカイブ率を適用率と比較して、適用率がアーカイブ率より低いかどうかを調べます。

10.2.4 要求がタイムアウトしたか、Enterprise Managerのパフォーマンスが低い場合

ブローカの要求が通常のタイムアウト・パラメータ内に完了しない場合、次の処置を試行して問題を解決します。

  1. ネットワークが適切に動作しているかどうか確認します。

  2. 構成内のすべてのノードに対してpingを試行します。

  3. 他のデータベースにより再接続を試行し、操作を再試行します。

  4. 構成からVERIFYコマンドを実行し、ビジーなブローカを確認します。VERIFYコマンドからの出力には、ブローカが要求を処理できない理由(または少なくともどのデータベースで処理できないか)が示されます。

10.2.5 プライマリ・データベースがフラッシュバックされる場合

プライマリ・データベースがフラッシュバックされる場合、構成内のスタンバイ・データベースも、スイッチオーバーまたはフェイルオーバーの実行可能なターゲットとなるように、フラッシュバックまたは再有効化される必要があります。プライマリ・データベースがフラッシュバックされた場合、ブローカによりスタンバイ・データベースのエラーがレポートされます。

ブローカにより無効化されたスタンバイ・データベースの実行可能性をリストアする方法の詳細は、5.4.3項を参照してください。

10.3 スイッチオーバー操作時の問題のトラブルシューティング

構成に問題があるためにスイッチオーバーに失敗すると、ブローカにより検出された問題はアラート・ログ・ファイルまたはブローカ・ログ・ファイルでレポートされます(10.1項を参照してください)。通常は、スイッチオーバー用に別のデータベースを選択するか、または構成をスイッチオーバー前の状態にリストアしてから、スイッチオーバーを再試行できます。次の各項では、最も一般的ないくつかの問題からのリカバリ方法を説明します。

ファスト・スタート・フェイルオーバーが有効化されている場合、ブローカでは、ターゲット・スタンバイ・データベース以外のどのスタンバイ・データベースにもスイッチオーバーを実行できません。さらに、ターゲット・スタンバイ・データベースへのスイッチオーバーは、ターゲット・スタンバイ・データベースのV$DATABASEビュー内のFS_FAILOVER_STATUS列の値が、READYまたはSUSPENDEDのいずれかである場合にのみ可能です。

10.3.1 フィジカル・スタンバイ・データベースへのスイッチオーバーの失敗

元のプライマリ・データベースとターゲット・スタンバイ・データベースでアラートおよびDRCログ・ファイルを調べて、失敗した原因を確認します。次の項ではフィジカル・スタンバイ・データベースへのスイッチオーバーの失敗からリカバリする手順を、ログ・ファイルに含まれるエラーの種類に基づいて説明します。

10.3.1.1 元のプライマリ・データベースの変換の失敗

ブローカのスイッチオーバーが失敗して、V$DATABASEビューのDATABASE_ROLE列にPRIMARYという値が含まれている場合は、次の手順に従います。

  1. ファスト・スタート・フェイルオーバーが有効化されている場合は、無効化します。

  2. 元のプライマリ・データベースがクローズされている場合は、オープンします。

  3. アラートとDRCログ・ファイルで報告されたエラーを修正します。

  4. ブローカのスイッチオーバーを再試行します。

  5. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。

V$DATABASEDATABASE_ROLE列にPHYSICAL STANDBYという値が含まれている場合は、次のどちらかの手順を実行します。

  1. ファスト・スタート・フェイルオーバーが有効化されている場合は、無効化します。

  2. 新規フィジカル・スタンバイ・データベース(元のプライマリ・データベース)に接続して、ブローカ構成を無効化します。

  3. 新規フィジカル・スタンバイ・データベースを再起動します。

  4. ALTER DATABASE SWITCHOVER TO PRIMARY DATABASE SQL文を使用して、新規フィジカル・スタンバイ・データベースを変換してプライマリ・データベースに戻します。

  5. 新規プライマリ・データベースをオープンします。

  6. ブローカ構成を再び有効化します。

  7. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。

  8. ブローカのスイッチオーバーを再試行します。

または

  1. ファスト・スタート・フェイルオーバーが有効化されている場合は、無効化します。

  2. 新規フィジカル・スタンバイ・データベース(元のプライマリ・データベース)に接続して、ブローカ構成を削除します。

  3. ターゲット・スタンバイ・データベースに接続します。

  4. ALTER DATABASE SWITCHOVER TO PRIMARY DATABASE SQL文を使用して、ターゲット・フィジカル・スタンバイ・データベースへのスイッチオーバーを完了します。

  5. 新規プライマリ・データベースをオープンします。

  6. 新規フィジカル・スタンバイ・データベースを停止して、再起動します。

  7. 新規プライマリ・データベースに接続して、ブローカ構成を再作成します。

  8. ブローカ構成を有効化します。

  9. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。

10.3.1.2 ターゲット・フィジカル・スタンバイ・データベースの変換の失敗

ブローカのスイッチオーバーが失敗して、ターゲット・フィジカル・スタンバイ・データベースのV$DATABASEビューのDATABASE_ROLE列にPHYSICAL STANDBYという値が含まれている場合は、次の手順に従います。

  1. ファスト・スタート・フェイルオーバーが有効化されている場合は、無効化します。

  2. アラートとDRCログ・ファイルを調べて、スイッチオーバーの失敗の原因を確認して修正します。問題の修正が完了したら、次のどちらかの手順を実行します。

    1. 新規フィジカル・スタンバイ・データベースに接続して、構成を無効化します。

    2. 新規フィジカル・スタンバイ・データベースを停止して、再起動します。

    3. ALTER DATABASE SWITCHOVER TO PRIMARY DATABASE SQL文を使用して、新規フィジカル・スタンバイ・データベースを変換してプライマリ・データベースに戻します。

    4. 構成を再び有効化します。

    5. スイッチオーバーを再試行します。

    または

    1. 新規フィジカル・スタンバイ・データベース(元のプライマリ・データベース)に接続して、ブローカ構成を削除します。

    2. ALTER DATABASE SWITCHOVER TO PRIMARY DATABASE SQL文を使用して、ターゲット・フィジカル・スタンバイ・データベースへのスイッチオーバーを完了します。

    3. 新規フィジカル・スタンバイ・データベースを停止して、再起動します。

    4. 新規プライマリ・データベースに接続して、ブローカ構成を再作成します。

    5. ブローカ構成を有効化します。

  3. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。

10.3.1.3 新規プライマリ・データベースのオープンの失敗

新規プライマリ・データベースをオープンできないためにブローカのスイッチオーバーが失敗した場合は、次の手順に従います。

  1. ファスト・スタート・フェイルオーバーが有効化されている場合は、無効化します。

  2. 新規フィジカル・スタンバイ・データベース(元のプライマリ・データベース)に接続して、ブローカ構成を削除します。

  3. 新規プライマリ・データベースのアラート・ログ・ファイルでデータベースをオープンできない原因を調べて、それを修正してからデータベースをオープンします。

  4. 新規フィジカル・スタンバイ・データベースを停止して、再起動します。

  5. 新規プライマリ・データベースに接続して、ブローカ構成を再作成します。

  6. ブローカ構成を有効化します。

  7. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。

10.3.2 ロジカル・スタンバイ・データベースへのスイッチオーバーの失敗

元のプライマリ・データベースとターゲット・スタンバイ・データベースでアラートおよびDRCログ・ファイルを調べて、失敗した原因を確認します。次の項ではロジカル・スタンバイ・データベースへのスイッチオーバーの失敗からリカバリする手順を、ログ・ファイルに含まれるエラーの種類に基づいて説明します。

10.3.2.1 元のプライマリ・データベースの変換の失敗

プライマリ・データベースの変換時のエラーのためにブローカのスイッチオーバーが失敗した場合は、次の手順に従います。

  1. ファスト・スタート・フェイルオーバーが有効化されている場合は、無効化します。

  2. ブローカ構成を無効化します。

  3. 『Oracle Data Guard概要および管理』に記載されている修正処理を実行します。

    修正処理の実行後の場合は、次のどちらかの状況に応じて対処します。

    • 元のプライマリ・データベースをプライマリ・ロールにリストアしている場合は、次の手順に従います。

      1. ブローカ構成を再び有効化します。

      2. ブローカのスイッチオーバーを再試行します。

    • ターゲット・ロジカル・スタンバイ・データベースを手動でプライマリ・データベースにスイッチオーバーしている場合は、次の手順に従います。

      1. 元のプライマリ・データベースに接続して、ブローカ構成を削除します。

      2. ターゲット・ロジカル・スタンバイ・データベースに接続して、ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY SQL文を使用してそれをプライマリ・データベースに変換します。

      3. 新規プライマリ・データベースに接続して、ブローカ構成を再作成します。

      4. ブローカ構成を有効化します。

  4. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、有効化します。

10.3.2.2 ターゲット・ロジカル・スタンバイ・データベースの変換の失敗

ブローカのスイッチオーバーが失敗してV$DATABASEビューのDATABASE_ROLE列にPRIMARYという値が含まれている場合、もしくは列にLOGICAL STANDBYという値が含まれていてスイッチオーバーを完了する場合は、次の手順に従います。

  1. ファスト・スタート・フェイルオーバーが有効化されている場合は、無効化します。

  2. ターゲット・ロジカル・スタンバイ・データベースに接続して、ブローカ構成を無効化します。

  3. 『Oracle Data Guard概要および管理』に記載されている修正処理を実行します。

  4. ブローカ構成を再び有効化します。

  5. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、有効化します。

10.3.3 スイッチオーバー操作時に発生するその他の問題

問題: REDO転送サービスの問題が原因でブローカのスイッチオーバーに失敗します。

解決策: Data Guardの「概要」ページの情報を参照するか、DGMGRL CLI SHOW DATABASEコマンドを使用して、プライマリ・データベースおよびスタンバイ・データベースの状態とステータスを検証します。

次にスイッチオーバー完了後に検証操作を実行して、新しいプライマリ・データベースのアラート・ログ・ファイルを検査し、構成のステータスを検証します。


関連項目:

  • Data Guardの「概要」ページの詳細は、第6章を参照してください。

  • 構成の検証方法の詳細は、6.8.1項を参照してください。


問題: Data Guard Brokerによる検証チェック中にスイッチオーバーに失敗する場合があります(スイッチオーバーに関係するデータベース上でREDO転送サービスがエラーを戻す場合など)。

解決策: スイッチオーバー用に別のデータベースを選択するか、アーカイブREDOログ・ファイルを転送して問題を修正してください。

10.4 フェイルオーバー操作時の問題のトラブルシューティング

フェイルオーバーを停止することは可能ですが、これはお薦めしません。ほとんどのエラーは、スタンバイ・データベースがプライマリ・ロールに推移しているときに発生します。次のガイドラインに従って問題を修正し、ブローカのフェイルオーバーを続行します。

10.4.1 フィジカル・スタンバイ・データベースへのフェイルオーバーの失敗

フィジカル・スタンバイ・データベースへのブローカのフェイルオーバーの失敗からリカバリする手順は、次のとおりです。

10.4.1.1 ブローカの完全フィジカル・フェイルオーバーの失敗

ターゲット・スタンバイ・データベースでアラートおよびDRCログ・ファイルを調べて、失敗した原因を確認し、それを修正します。ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH SQL文でエラーが返された場合、もしくはSQL文は正常に実行されたのにデータベースがプライマリ・データベースに変換されなかった場合は、次の手順に従います。

  1. ターゲット・スタンバイ・データベースに接続し、ファスト・スタート・フェイルオーバーが有効な場合はFORCEオプションを使用して無効化します。

  2. 次のどちらかの操作を実行します。

    • 別のフィジカル・スタンバイ・データベースに接続して、ブローカの完全フェイルオーバーを実行します。

    • ターゲット・フィジカル・スタンバイ・データベースへのブローカの即時フェイルオーバーを実行します。

  3. 元のプライマリ・データベースと、回復を要求するステータス(ORA-16661)を持つその他の無効なフィジカル・スタンバイ・データベースを回復します。

  4. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。

10.4.1.2 ブローカの即時フィジカル・フェイルオーバーの失敗

ターゲット・スタンバイ・データベースでアラートおよびDRCログ・ファイルを調べて、失敗した原因を確認し、それを修正します。問題が修正可能な場合は、ブローカの即時フェイルオーバーを再試行します。それ以外の場合は、別のフィジカル・スタンバイ・データベースに接続して、ブローカの完全フェイルオーバーまたは即時フェイルオーバーを実行します。

10.4.2 ロジカル・スタンバイ・データベースへのフェイルオーバーの失敗

  1. ターゲット・スタンバイ・データベースでアラートおよびDRCログ・ファイルを調べて、失敗した原因を確認し、それを修正します。

  2. ターゲット・スタンバイ・データベースに接続し、ファスト・スタート・フェイルオーバーが有効な場合はFORCEオプションを使用して無効化します。

  3. ブローカのフェイルオーバーを再試行します。

  4. 元のプライマリ・データベースを回復します。その他のスタンバイ・データベースはすべて、新規プライマリ・データベースのコピーから再作成されます。

  5. ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。

ブローカのフェイルオーバーが引き続き失敗する場合は、Data Guard構成ですべてのデータベース上のブローカを停止します(DG_BROKER_START初期化パラメータをFALSEに設定します)。すべてのデータベースからData Guardブローカ構成ファイルを削除します。『Oracle Data Guard概要および管理』のロール推移に関するガイドラインを使用して、手動フェイルオーバーを実行します。


注意:

DGMGRLのENABLE CONFIGURATIONおよびDISABLE CONFIGURATIONコマンドを使用すると、ブローカ構成を有効化または無効化できます。Enterprise Managerを使用して構成を無効化することはできません。前にDGMGRLを使用して無効化した構成は、Enterprise Managerを使用した場合のみ有効化できます。

10.5 オブザーバに関する問題のトラブルシューティング

オブザーバは、継続的にファスト・スタート・フェイルオーバー環境を監視して、プライマリ・データベースが使用可能であることを確認します。オブザーバのインストールおよび起動は、ファスト・スタート・フェイルオーバーの使用における必須部分です。次の各項で、オブザーバのトラブルシューティング方法について説明します。

10.5.1 オブザーバの起動に関する問題

一度に1つのオブザーバのみブローカ構成を監視できます。2つ目のオブザーバを起動しようとすると、次のいずれかのエラーが戻されます。

ORA-16647: could not start more than one observer
DGM-16954: Unable to open and lock the Observer configuration file

現在ブローカ構成に関連付けられているオブザーバの位置を判別するには、DGMGRLのSHOW CONFIGURATION VERBOSEコマンドを使用します。

DGMGRL> SHOW CONFIGURATION VERBOSE;
Configuration
 Name:                DRSolution
 Enabled:             YES
 Protection Mode:     MaxAvailability
 Databases:
   North_Sales  - Primary database
   DR_Sales     - Physical standby database
                - Fast-Start Failover target

Fast-Start Failover: ENABLED
 Threshold:           30 seconds
 Target:              DR_Sales
 Observer:            o_host
 Lag Limit:           30 seconds (not in use)
 Shutdown Primary:    TRUE
 Auto-reinstate:      TRUE

Current status for "DRSolution":
SUCCESS

10.5.2 オブザーバが停止したことによる問題

オブザーバのホスト・マシンがクラッシュした場合、ブローカ構成は監視されなくなり、ファスト・スタート・フェイルオーバーは実行できなくなります。この場合、元のホスト・マシンを適時に修復できないときは、オブザーバを新しいホストに移動する必要があります。オブザーバを移動するには、最初のオブザーバがこのブローカ構成を監視できないようにしてから、別のホストで新規オブザーバを起動する必要があります。

  1. DGMGRLのSTOP OBSERVERコマンドを発行し、元のオブザーバとブローカ構成の間のリンクを切り離します。

    DGMGRL> STOP OBSERVER;
    Done.
    
  2. DGMGRLのSHOW CONFIGURATION VERBOSEおよびSHOW DATABASEコマンドを発行し、構成が監視されていないことを確認します。

    DGMGRL> SHOW CONFIGURATION VERBOSE;
    Configuration
     Name:                DRSolution
     Enabled:             YES
     Protection Mode:     MaxAvailability
     Databases:
       North_Sales  - Primary database
       DR_Sales     - Physical standby database
                    - Fast-Start Failover target
    
    Fast-Start Failover: ENABLED
     Threshold:           30 seconds
     Target:              DR_Sales
     Observer:            (none)
     Lag Limit:           30 seconds (not in use)
     Shutdown Primary:    TRUE
     Auto-reinstate:      TRUE
    
    Current status for "DRSolution":
    Warning: ORA-16608: one or more databases have warnings
    
    DGMGRL> SHOW DATABASE 'North_Sales';
    
    Database
     Name:            North_Sales
     Role:            PRIMARY
     Enabled:         YES
     Intended State:  TRANSPORT-ON
     Instance(s):
       sales1
    
    Current status for "DR_Sales"
    Error: ORA-16658: unobserved fast-start failover configuration
    
  3. オブザーバが実際に停止していることを確認する際に、DGMGRLのSHOWコマンドを発行する必要はないので注意してください。DGMGRLのSTOP OBSERVERコマンドを正常に完了すると、新規オブザーバを構成に関連付けることが可能になります。

10.5.3 オブザーバ・ログ・ファイルでのオブザーバの処理の取得

DGMGRLの-logfileオプションを使用してオブザーバを起動できます。これにより、10.5.1項で実行したトラブルシューティング処理をすべてファイルに取得できます。次に例を示します。

% dgmgrl -logfile observer.log / "start observer"

オブザーバの出力はすべて、DGMGRLコマンドを発行した現在の作業ディレクトリ内のobserver.logファイルに記録されます。

これはオブザーバの問題のトラブルシューティングに役立つだけではなく、ファスト・スタート・フェイルオーバー全般の問題のトラブルシューティングにも役立ちます。