プライマリ・コンテンツに移動
Oracle® Data Guard Broker
12cリリース1 (12.1)
B71305-08
目次へ移動
目次
索引へ移動
索引

前
次

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

次のトピックでは、Oracle Data Guardの様々なエラーとその解決方法について説明します。

9.1 診断情報のソース

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

  • データベース・ステータス情報(「データベース・ステータス」を参照)

  • Oracleアラート・ログ・ファイル

    ブローカでは、ブローカ構成に含まれる各データベースのインスタンスごとのアラート・ログ・ファイルに重要情報が記録されます。Oracle Data Guardをトラブルシューティングする場合は、このような情報のアラート・ログ・ファイルを確認できます。

  • Oracle Data Guardのブローカ・ログ・ファイル

    ブローカ構成に含まれる各データベースのインスタンスごとに、ブローカのDMONプロセスにより重要な動作およびステータス情報がブローカ・ログ・ファイルに記録され、このファイルは、Oracle Data Guardの障害を診断する際に役立ちます。TraceLevel構成プロパティ(「TraceLevel」を参照)は、ブローカ・ログ・ファイルで報告される診断情報のレベルを指定するために使用されます。

    ブローカ・ログ・ファイルは、アラート・ログと同じディレクトリに作成され、drc<$ORACLE_SID>.logという名前が付けられます。

  • Oracle Data Guardコマンドライン(DGMGRL)ログファイル

    DGMGRLコマンドライン・インタフェースを、-logfileオプション・パラメータ(「DGMGRLのオプション・パラメータ」を参照)を付けて開始すると、結果として生じるログ・ファイルに、過去の操作、エラー条件、またはその両方に関する、役に立つ記録が含まれる場合があります。

9.2 一般的な問題と解決策

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

9.2.1 ORA-16596: データベースがOracle Data Guard Broker構成に含まれていない

ブローカに対して要求が発行されましたが、接続に使用するデータベース・インスタンスはブローカ構成に含まれていません。

解決策

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

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

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

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

解決策

問題を絞り込むには、次の手順を実行します。

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

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

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

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

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

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

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

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

解決策

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

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

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

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

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

    参照:

    DGMGRLコマンドライン・インタフェースを使用してデータベースを無効化する方法の詳細は、「Oracle Data Guardコマンドライン・インタフェース・リファレンス」を参照してください

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

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

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

    参照:

    データベース・プロパティLogShippingの詳細は、「Oracle Data Guard Brokerのプロパティ」を参照してください

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

    参照:

    データベース・プロパティDelayMinsの詳細は、「Oracle Data Guard Brokerのプロパティ」を参照してください

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

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

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

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

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

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

  4. VERIFYコマンドを実行し、ブローカが要求を処理できないデータベースを特定します。

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

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

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

9.2.6 不明なサービスのためにスタンバイが自動開始できない場合(ORA-12514)

ブローカ操作(たとえば、スイッチオーバー、回復、フィジカル・スタンバイへの変換、または保護モードの最大保護モードへのアップグレード)の後でDGMGRL CLIが自動的にインスタンスを開始できず、ORA-12514: TNS: リスナーは接続記述子でリクエストされたサービスを現在認識していませんエラーを受け取った場合、インスタンスを手動で開始してブローカ操作を完了または継続する必要があります。

次の手順を完了する前か後に、インスタンスを再起動できます。

  1. 次のDGMGRL CLIコマンドを発行して、DGMGRL CLIが再起動できなかったインスタンスの構成可能なプロパティStaticConnectIdentiferの値を確認します。(このコマンドを発行するには、実行中の別のインスタンスに接続する必要があります)

    DGMGRL> SHOW INSTANCE VERBOSE 'instance_name' ON DATABASE db_unique_name;
    
  2. StaticConnectIdentiferインスタンス・プロパティの値で指定されている静的サービス名は、プロパティ値で指定されているリスナーに登録されている必要があります。静的サービス名のデフォルト値は、次の形式をとります。

    db_unique_name_DGMGRL.db_domain
    

    ブローカを使用するための、これを含む様々な前提条件の詳細は、「前提条件」を参照してください。

  3. リスナー制御ユーティリティのステータス・コマンドを使用して、静的サービス名が、構成可能なプロパティStaticConnectIdentiferの値で指定されたリスナーに登録されていることを確認します。静的サービス名が正しくリスナーに登録されている場合、次のコマンドで生成される出力に含まれます。

    lsnrctl status
    
  4. Oracle RAC環境で作業している場合、各インスタンスに対して手順1と2を繰り返し、静的サービス名がそれぞれのリスナーに正しく登録されていることを確認することをお薦めします。

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

構成に問題があるためにスイッチオーバーに失敗すると、ブローカにより検出された問題はアラート・ログ・ファイルまたはブローカ・ログ・ファイルでレポートされます(「診断情報のソース」を参照してください)。報告された問題が修正できる場合、スイッチオーバー操作を再試行でき、それは通常成功します。報告された問題が修正できないか、修正した後でもスイッチオーバー操作が失敗する場合、スイッチオーバー用に別のデータベースを選択するか、または構成をスイッチオーバー前の状態にリストアしてから、スイッチオーバーを再試行できます。

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

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

フェイルオーバー操作を停止することは可能ですが、これはお薦めしません。エラーが発生した場合、次のサブセクションに記載のガイドラインを使用して問題を修正し、ブローカ・フェイルオーバーを再試行します。

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

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

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

ターゲット・スタンバイ・データベースでアラート・ログ・ファイルおよびブローカ・ログ・ファイル(drc*.log)を調べて、失敗した原因を確認し、それを修正します。報告された問題が修正できる場合、スイッチオーバー操作を再試行します。報告された問題が修正できないか、報告された問題を修正した後でもフェイルオーバー操作がまだ失敗する場合、次の手順を実行します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

注意:

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

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

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

9.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 - DRSolution
 
  Protection Mode: MaxAvailability
  Databases:
  North_Sales- Primary database
  South_Sales- Physical standby database
 
Properties:
  FastStartFailoverThreshold     = '30'
  OperationTimeout               = '30'
  TraceLevel                     = 'USER'
  FastStartFailoverLagLimit      = '30
  CommunicationTimeout           = '180'
  ObserverReconnect              = '0'
  FastStartFailoverAutoReinstate = 'TRUE'
  FastStartFailoverPmyShutdown   = 'TRUE'
  BystandersFollowRoleChange     = 'ALL'
  ObserverOverride               = 'FALSE'
  ExternalDestination1           = ''ExternalDestination2             = ''PrimaryLostWriteAction           = 'CONTINUE'
 
Fast-Start Failover: ENABLED
 
  Threshold: 30 seconds
  Target: South_Sales
  Observer: observer.example.com
  Lag Limit: 30 seconds (not in use)
  Shutdown Primary: TRUE
  Auto-reinstate: TRUE
  Observer Reconnect: (none)
  Observer Override: FALSE
 
Configuration Status:
SUCCESS

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

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

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

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

    DGMGRL> SHOW CONFIGURATION VERBOSE;
     
    Configuration - DRSolution
     
      Protection Mode: MaxAvailability
      Databases:
        North_Sales - Primary database
        Warning: ORA-16819: fast-start failover observer not started
     
        South_Sales - (*) Physical standby database
        Warning: ORA-16819: fast-start failover observer not started
     
    (*) Fast-Start Failover target
     
    Properties:
      FastStartFailoverThreshold     = '30'
      OperationTimeout               = '30'
      TraceLevel                     = 'USER'
      FastStartFailoverLagLimit      = '30'
      CommunicationTimeout           = '180'
      ObserverReconnect              = '0'
      FastStartFailoverAutoReinstate = 'TRUE'
      FastStartFailoverPmyShutdown   = 'TRUE'
      BystandersFollowRoleChange     = 'ALL'
      ObserverOverride               = 'FALSE'
      ExternalDestination1           = ''
      ExternalDestination2           = ''  PrimaryLostWriteAction         = 'CONTINUE'
     
    Fast-Start Failover: ENABLED
     
      Threshold: 30 seconds
      Target: South_Sales
      Observer: observer.example.com
      Lag Limit: 30 seconds (not in use)
      Shutdown Primary: TRUE
      Auto-reinstate: TRUE
      Observer Reconnect: (none)
      Observer Override: FALSE
     
    Configuration Status:
    WARNING
    
  3. オブザーバが実際に停止していることを確認する際に、DGMGRLのSHOW CONFIGURATIONコマンドを発行する必要はないので注意してください。DGMGRLのSTOP OBSERVERコマンドを正常に完了すると、新規オブザーバを構成に関連付けることが可能になります。

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

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

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

オブザーバの出力はすべて、DGMGRLコマンドを発行した現在の作業ディレクトリ内のobserver.logファイルに記録されます。指定したログにアクセスできない場合、ログ・ファイルが指定されていない場合と同様に、オブザーバーの出力が標準出力に送信されます。

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