RMAN-06054:メディアリカバリが不明なスレッド1シーケンス105776のアーカイブログを要求し、SCN62897768726を開始しています



Rman 06054 Media Recovery Is Requesting Archive Log Unknown Thread 1 Sequence 105776

問題の説明

異種リカバリ(RAC->シングルインスタンス)を実行すると、データベースのリカバリ時に次のエラーが報告されました。
RMAN-03002: The recover command (on 09/30/2019 08:36:48) failed
RMAN-06054: Media recovery is requesting the archive log of unknown thread 1 sequence 105776 and starting SCN 62897768726

エラーメッセージは、11gの公式ドキュメントのエラーメッセージで次のように説明されています。
RMAN-06054:シーケンスstringを含むスレッドstringの不明なアーカイブログを要求し、stringのSCNを開始するメディアリカバリ
原因:メディアリカバリが、リカバリカタログまたはターゲットデータベース制御ファイルに存在が記録されていないログを要求しています。
処置:ログのコピーが使用可能な場合は、CATALOGコマンドを使用してそれをリカバリ・カタログまたは制御ファイル、あるいはその両方に追加してから、RECOVERコマンドを再試行してください。そうでない場合は、欠落しているログまでのポイントインタイムリカバリが唯一の代替手段であり、ALTER DATABASE OPENRESETLOGSコマンドを使用してデータベースを開くことができます。



このエラーの理由は、リカバリに必要なログレコードが制御ファイルまたはリカバリディレクトリに見つからないためであることがわかります。

解決

2つの解決策があります:
1.関連するログが存在し、使用可能な場合は、このログレコードを制御ファイルまたはリカバリディレクトリに追加します。
2.関連するログが削除されているか利用できない場合は、エラープロンプトscnに従って、データベースをこのscnに復元します。つまり、現時点ではデータベースの復元は不完全であるため、データベースを開くときにデータベースを開くにはリセットログを使用する必要があります。
例:(別の環境、単一インスタンス->単一インスタンス)



unable to find archived log archived log thread=2 sequence=21316 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 05/29/2019 14:52:06 RMAN-06054: media recovery requesting unknown archived log for thread 2 with sequence 21316 and starting SCN of 2674576144 Solution: directly restore to SCN point 2674576144 RMAN> recover database until scn 2674576144 Starting recover at 2019-05-29 14:55:09 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 using channel ORA_DISK_4 starting media recovery media recovery complete, elapsed time: 00:00:04 Finished recover at 2019-05-29 14:55:16 RMAN> exit Recovery Manager complete. [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed May 29 14:55:28 2019 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options SQL> alter database open resetlogs Database altered.

しかし、別の状況があります。データベースを移行するとき、新しいデータベースにデータを復元するとき、制御ファイルに記録されている現在のシーケンスは、実際のバックアップピースのシーケンス番号よりも大きくなります。

ターゲットライブラリのシーケンス:
画像

RMAN> list archivelog all db_unique_name is the list of archive log copies of RACDB database ===================================================================== Keywords thread sequence S lower time limit ------- ---- ------- - ---------- 2315726 1 105774 A 29-September -19 Name: +FRA/racdb/archivelog/2019_09_29/thread_1_seq_105774.620.1020211243 2315728 1 105775 A 29-September -19 Name: +FRA/racdb/archivelog/2019_09_29/thread_1_seq_105775.1141.1020211261

古いデータベースはrmanによってバックアップされるため、データベースはバックアップ中に開かれます。たとえば、バックアップは10時に開始されます。バックアップが完了した後、それはすでに11時である可能性があります。次に、バックアップされる最後のファイルが最初のファイルです。バックアップファイルは時間的に異なります。したがって、回復するときは間違いなくアーカイブが見つかります。アーカイブログを使用して、最初に準備したアーカイブを最後の時点まで追跡する必要があります。
1.完全な瞬間に復元したい場合は、データファイルを書き込まない場合はデータファイルのscn番号を表示して、その瞬間への復元を指定する必要があります。これは、現在のログにアーカイブする瞬間です。 。
2.最も近い場所に復元する場合は、RMAN>アーカイブログのバックアップを一覧表示する必要があります。
見つかった最後のアーカイブログを見つけて、このログに対応するscn番号に復元します。それ以外の場合、このログが準備されていないため、rmanは現在のscnを検索し、このエラーが発生します。
最後に、ソースライブラリがターゲットライブラリに対して完全に準備された後、アーカイブされたバックアップピースをcpします。回復後、回復は成功します。