最近スタンバイデータベースで作業しているときに、DG Brokerにアクセスしてステータスを確認し、次の情報を受け取りました。
DGMGRL> show configuration Configuration - resp_ress_config Protection Mode: MaxPerformance Databases: resp - Primary database ress - Physical standby database Error: ORA-16766: Redo Apply is stopped
うーん…スタンバイがREDOを適用していません。マネージドリカバリを開始しようとすると、スタンバイアラートログに次の情報が表示されます。
Tue Dec 31 09:52:10 2013 Managed Standby Recovery starting Real Time Apply Tue Dec 31 09:52:10 2013 MRP0: Background Media Recovery terminated with error 38868 Errors in file /u01/app/oracle/diag/rdbms/ress/ress2/trace/ress2_pr00_13905.trc: ORA-38868: warning: the control file may have incorrect data file structure Managed Standby Recovery not using Real Time Apply Slave exiting with ORA-38868 exception Errors in file /u01/app/oracle/diag/rdbms/ress/ress2/trace/ress2_pr00_13905.trc: ORA-38868: warning: the control file may have incorrect data file structure Recovery Slave PR00 previously exited with exception 38868 MRP0: Background Media Recovery process shutdown (ress2)
したがって、ORA-38868は、ディレクトリ構造が正しくないことを通知しています。私の最初の考えは、これは私が昨日ブログに書いた仕事に関連しているということでした。しかし、その作業は主要な側面でした。スタンバイアラートログを振り返ると、約2.5か月前にこのエラーが最初に発生したことがわかりました。これが本番システムだとしたら、その間この問題に気づかれないようにするのは大変なことかもしれません。しかし、許容できない期間、プロダクションスタンバイがプライマリより遅れた場合に警告するための対策を講じています。これは、必要に応じて吹き飛ばして最初から始めることができる単なるテストシステムです。しかし、それはどのような楽しみでしょうか?問題を解決できるかどうか見てみましょう。
最初に立ち寄ったのはMetalinkでした。しかし、ORA-38868エラーのヒットはゼロでした。 Web検索を実行しているときに、インスタンスを再起動してREDO適用を再起動するという解決策を提供する1つの関連するヒットがありました。私は懐疑的でしたが、簡単な修正を試みました。インスタンスを再起動するだけで問題が解決しなかったのは当然のことです。エラーは、制御ファイルに破損があることを示しています。インスタンスを再起動しても、制御ファイルの破損は修正されません。 Metalinkとインターネットは役に立たないので、これを修正するのは私次第だと思います。他のすべてが失敗した場合は、スタンバイを削除して再作成します。
私の最初の解決策は、プライマリに戻ってスタンバイ制御ファイルを作成することです。次に、スタンバイ制御ファイルを使用してスタンバイを起動します。プライマリからの新しい制御ファイルで問題が解決すると確信しています。ただし、2.5か月のやり直しを適用する必要がありますが、そのうちはもう利用できません。
RMANを使用して、増分バックアップを介してスタンバイをロールフォワードすることを調査しようとしています。しかし、これは私の優先事項のリストでは低くなっているようです。これを行う方法を知る必要がある次のプロジェクトがあり、そのプロジェクトは1か月以内に終了します。したがって、これは、次のプロジェクトでこの手法を実践し、現在の問題を修正するのに最適な時期のようです。これを行う手順は次のとおりです。
Metalink Note 836986.1 Steps to Perform for Rolling Forward a Standby Database Using RMAN Incremental Backups
このドキュメントの手順は、スタンバイをロールフォワードするだけでなく、制御ファイルを再作成して、問題を修正しました。