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のオプション・パラメータ」を参照)を付けて開始すると、結果として生じるログ・ファイルに、過去の操作、エラー条件、またはその両方に関する、役に立つ記録が含まれる場合があります。
この項では、一般的な問題と解決策について説明します。この項の内容は、次のとおりです。
ブローカに対して要求が発行されましたが、接続に使用するデータベース・インスタンスはブローカ構成に含まれていません。
解決策
ブローカ構成に含まれている他のデータベースを介して構成に再接続してください。ORA-16596エラーを戻したデータベースのdb_unique_name
値と名前が一致するデータベースがブローカ構成に存在することを確認してください。
構成を有効化しようとして、そのデータベースの1つのブローカ構成ファイルが意図せずに削除されていた場合や陳腐化している場合にも、この問題が発生することがあります。その場合は、データベースをブローカ構成から削除し、(プライマリ・データベースではなく)そのスタンバイ・データベースの構成ファイルを手動で削除してから、構成の有効化を再試行してください。構成が有効化された後は、Cloud Controlのスタンバイ・データベースの追加ウィザードを使用して「既存のスタンバイ・データベースの追加」オプションを選択するか、DGMGRLコマンドライン・インタフェースを使用してADD DATABASE
コマンドを発行できます。
Cloud Controlの「ログ・ファイルの詳細」ページを表示すると、ログ・ファイルがプライマリ・データベースに累積され、ブローカ構成内の一部のスタンバイ・データベースにアーカイブされていないことがわかります。
解決策
問題を絞り込むには、次の手順を実行します。
プライマリ・データベースの状態が(TRANSPORT-OFF
ではなく)TRANSPORT-ON
であることを確認します。
問題のスタンバイ・データベースのデータベース・プロパティLogShipping
の値がON
であることを確認します。
監視可能なプロパティLogXptStatus
を使用して、プライマリ・データベースのREDO転送サービスのステータスをチェックします。REDO転送サービスにエラーがある場合は、エラー・メッセージを参考にして詳細なチェックおよび解決処置を判断します。次に例を示します。
スタンバイ・データベースが使用不可能であることをエラーが示している場合は、スタンバイ・データベースを再起動する必要があります。
リスナーが存在しないことをエラーが示している場合は、リスナーを再起動する必要があります。
スタンバイ・データベースにローカルの宛先がないことをエラーが示している場合は、プライマリ・データベースからのアーカイブREDOログ・ファイルを格納するスタンバイ位置を設定する必要があります。
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の「パフォーマンス」ページでアーカイブ率を適用率と比較して、適用率がアーカイブ率より低いかどうかを調べます。
ブローカの要求が通常のタイムアウト・パラメータ内に完了しない場合、次の処置を試行して問題を解決します。
ネットワークが適切に動作しているかどうか確認します。
構成内のすべてのノードに対してpingを試行します。
他のデータベースにより再接続を試行し、操作を再試行します。
VERIFY
コマンドを実行し、ブローカが要求を処理できないデータベースを特定します。
プライマリ・データベースがフラッシュバックされる場合、構成内のスタンバイ・データベースも、スイッチオーバーまたはフェイルオーバーの実行可能なターゲットとなるように、フラッシュバックまたは再作成される必要があります。プライマリ・データベースがフラッシュバックされた場合、ブローカによりスタンバイ・データベースのエラーがレポートされます。
ブローカにより無効化されたスタンバイ・データベースの実行可能性をリストアする方法の詳細は、「ロール変更後の無効化されたデータベースの再有効化」を参照してください。
ブローカ操作(たとえば、スイッチオーバー、回復、フィジカル・スタンバイへの変換、または保護モードの最大保護モードへのアップグレード)の後でDGMGRL CLIが自動的にインスタンスを開始できず、ORA-12514: TNS: リスナーは接続記述子でリクエストされたサービスを現在認識していません
エラーを受け取った場合、インスタンスを手動で開始してブローカ操作を完了または継続する必要があります。
次の手順を完了する前か後に、インスタンスを再起動できます。
次のDGMGRL CLIコマンドを発行して、DGMGRL CLIが再起動できなかったインスタンスの構成可能なプロパティStaticConnectIdentifer
の値を確認します。(このコマンドを発行するには、実行中の別のインスタンスに接続する必要があります)
DGMGRL> SHOW INSTANCE VERBOSE 'instance_name' ON DATABASE db_unique_name;
StaticConnectIdentifer
インスタンス・プロパティの値で指定されている静的サービス名は、プロパティ値で指定されているリスナーに登録されている必要があります。静的サービス名のデフォルト値は、次の形式をとります。
db_unique_name_DGMGRL.db_domain
ブローカを使用するための、これを含む様々な前提条件の詳細は、「前提条件」を参照してください。
リスナー制御ユーティリティのステータス・コマンドを使用して、静的サービス名が、構成可能なプロパティStaticConnectIdentifer
の値で指定されたリスナーに登録されていることを確認します。静的サービス名が正しくリスナーに登録されている場合、次のコマンドで生成される出力に含まれます。
lsnrctl status
Oracle RAC環境で作業している場合、各インスタンスに対して手順1と2を繰り返し、静的サービス名がそれぞれのリスナーに正しく登録されていることを確認することをお薦めします。
構成に問題があるためにスイッチオーバーに失敗すると、ブローカにより検出された問題はアラート・ログ・ファイルまたはブローカ・ログ・ファイルでレポートされます(「診断情報のソース」を参照してください)。報告された問題が修正できる場合、スイッチオーバー操作を再試行でき、それは通常成功します。報告された問題が修正できないか、修正した後でもスイッチオーバー操作が失敗する場合、スイッチオーバー用に別のデータベースを選択するか、または構成をスイッチオーバー前の状態にリストアしてから、スイッチオーバーを再試行できます。
ファスト・スタート・フェイルオーバーが有効化されている場合、ブローカでは、ターゲット・スタンバイ・データベース以外のどのスタンバイ・データベースにもスイッチオーバーを実行できません。さらに、ターゲット・スタンバイ・データベースへのスイッチオーバーは、ターゲット・スタンバイ・データベースのV$DATABASE
ビュー内のFS_FAILOVER_STATUS
列の値が、READY
またはSUSPENDED
のいずれかである場合にのみ可能です。
フェイルオーバー操作を停止することは可能ですが、これはお薦めしません。エラーが発生した場合、次のサブセクションに記載のガイドラインを使用して問題を修正し、ブローカ・フェイルオーバーを再試行します。
フィジカル・スタンバイ・データベースへのブローカのフェイルオーバーの失敗からリカバリする手順は、次のとおりです。
ターゲット・スタンバイ・データベースでアラート・ログ・ファイルおよびブローカ・ログ・ファイル(drc*.log)を調べて、失敗した原因を確認し、それを修正します。報告された問題が修正できる場合、スイッチオーバー操作を再試行します。報告された問題が修正できないか、報告された問題を修正した後でもフェイルオーバー操作がまだ失敗する場合、次の手順を実行します。
ターゲット・スタンバイ・データベースに接続し、ファスト・スタート・フェイルオーバーが有効な場合はFORCE
オプションを使用して無効化します。
次のどちらかの操作を実行します。
別のフィジカル・スタンバイ・データベースに接続して、ブローカの完全フェイルオーバーを実行します。
ターゲット・フィジカル・スタンバイ・データベースへのブローカの即時フェイルオーバーを実行します。
元のプライマリ・データベースと、回復を要求するステータス(ORA-16661
)を持つその他の無効なフィジカル・スタンバイ・データベースを回復します。
ファスト・スタート・フェイルオーバーが手順1で無効化された場合は、再び有効化します。
ターゲット・スタンバイ・データベースでアラート・ログ・ファイルおよびブローカ・ログ・ファイル(drc*.log)を調べて、失敗した原因を確認し、それを修正します。
ターゲット・スタンバイ・データベースに接続し、ファスト・スタート・フェイルオーバーが有効な場合はFORCE
オプションを使用して無効化します。
ブローカのフェイルオーバーを再試行します。
元のプライマリ・データベースを回復します。その他のスタンバイ・データベースはすべて、新規プライマリ・データベースのコピーから再作成されます。
ファスト・スタート・フェイルオーバーが手順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を使用してのみ有効化できます。
オブザーバは、継続的にファスト・スタート・フェイルオーバー環境を監視して、プライマリ・データベースが使用可能であることを確認します。オブザーバのインストールおよび起動は、ファスト・スタート・フェイルオーバーの使用における必須部分です。次の各項で、オブザーバのトラブルシューティング方法について説明します。
一度に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
オブザーバのホスト・マシンがクラッシュした場合、ブローカ構成は監視されなくなり、ファスト・スタート・フェイルオーバーは実行できなくなります。この場合、元のホスト・マシンを適時に修復できないときは、オブザーバを新しいホストに移動する必要があります。オブザーバを移動するには、最初のオブザーバがこのブローカ構成を監視できないようにしてから、別のホストで新規オブザーバを起動する必要があります。
DGMGRLのSTOP OBSERVER
コマンドを発行し、元のオブザーバとブローカ構成の間のリンクを切り離します。
DGMGRL> STOP OBSERVER; Done.
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
オブザーバが実際に停止していることを確認する際に、DGMGRLのSHOW CONFIGURATION
コマンドを発行する必要はないので注意してください。DGMGRLのSTOP OBSERVER
コマンドを正常に完了すると、新規オブザーバを構成に関連付けることが可能になります。
DGMGRLの-logfile
オプションを使用してオブザーバを起動できます。これにより、「オブザーバの起動に関する問題」で実行したトラブルシューティング処理をすべてファイルに取得できます。次に例を示します。
% dgmgrl -logfile observer.log / "start observer"
オブザーバの出力はすべて、DGMGRLコマンドを発行した現在の作業ディレクトリ内のobserver.log
ファイルに記録されます。指定したログにアクセスできない場合、ログ・ファイルが指定されていない場合と同様に、オブザーバーの出力が標準出力に送信されます。
これはオブザーバの問題のトラブルシューティングに役立つだけではなく、ファスト・スタート・フェイルオーバー全般の問題のトラブルシューティングにも役立ちます。