この質問の範囲外の理由により、論理スタンバイデータベース(VMレベル))を前日にフラッシュバックする必要がありました。
だから、今私はプライマリとロジカルスタンバイデータベースの間の失われたアーカイブログのギャップを解決しようとしています。
待機する:
SQL> select * from gv$logstdby_process where status_code != 16116;
READER ORA-16240: Waiting for log file (thread# 1, sequence# 54888)
シーケンス54888は(フラッシュバックにより)ロジカルスタンバイに存在しなくなりました。夜間にアーカイブログのバックアップを取るため、このシーケンスはアーカイブログとしてプライマリに存在しなくなりました。ただし、このシーケンスがプライマリのアーカイブログバックアップにあることを確認しました。
プライマリ:
RMAN> list backup of archivelog sequence 54888;
List of Archived Logs in backup set 6236
Thrd Seq Low SCN Low Time Next SCN Next Time
1 54888 42289020451 30-MAR-16 42290599951 30-MAR-16
そのため、アーカイブログのバックアップをロジカルスタンバイにコピーし、ロジカルスタンバイデータベースに次のコマンドを発行しました。
RMAN> catalog start with 'L:\Oracle\backups';
RMAN> shutdown immediate;
RMAN> startup mount;
RMAN> recover database;
RMAN> alter database open;
RMAN> list backup of archivelog scn between 42289020451 and 42289020451;
Thrd Seq Low SCN Low Time Next SCN Next Time
1 54888 42289020451 30-MAR-16 42290599951 30-MAR-16
RMAN> list backup of archivelog sequence 54888;
specification does not match any backup in the repository
SQL> alter database start logical standby apply immediate;
SQL> select * from gv$logstdby_process where status_code != 16116;
READER ORA-16240: Waiting for log file (thread# 1, sequence# 54888)
だから私は2つの質問があります:
1)アーカイブログscnのリストバックアップを実行すると、ロジカルスタンバイデータベースでシーケンス54888のアーカイブログバックアップが表示されますが、アーカイブログシーケンス54888のリストバックアップがレコードを返さないのはなぜですか?
2)ログ適用プロセスで、アーカイブログバックアップからシーケンス54888を取得するにはどうすればよいですか?
ディレクトリにバックアップファイルが表示される場合は、カタログ化してみてください。
RMAN> catalog starts with '/path/to/archive/directory';
バックアップがリストされ、カタログ化するかどうかを尋ねられます。その後、ギャップの回復を続行できます。
alter database recover managed standby database cancel;
recover standby database;
#after all existing logs are applied put standby database to recover managed
mode
recover managed standby database
アーカイブログがなくなった場合は、次のコマンドで増分バックアップを実行できます。
"backup incremental <from scn> until scn"