解決gap 采用increapment scn 方式 操作。
###########1
1.查看備庫的scn
??如果控制文件,數據文件,數據文件頭部的scn不一致,需要根據日誌中的gap的起始sequence# 找到對應的scn
col current_scn for a999999999;
select current_scn from v$database;
2.查看主庫在斷點後是否添加數據文件
select file#,name, from v$datafile where current_change#>=備庫查得的斷電處scn;
3.備庫停止日誌應用服務
alter database recover managed standby database cancel;
4.主庫增量備份並傳輸到備庫上
RMAN> backup as compressed backupset incremental from scn 斷點處的scn database format ‘備份存放路徑’
scp
5.備庫上進行恢復
RMAN>catalog START with ‘拷貝過來的主庫的增量備份集的路徑’
?? 如果此時庫是read only,需要轉換為mount狀態。
RMAN>recover database noredo
6.主庫上創建standby controlfile 文件並scp到備庫
RMAN>backup current controlfile for standby format ‘備份路徑‘;
7.恢復備庫的控制文件
備庫重啟到nomount狀態,恢復控制文件,啟動到mount
RMAN>restore standby controlfile from ‘主庫的控制文件的rman備份文件‘
RMAN>alter database open mount
8.清空備庫日誌組(選做)
??如果dg中使用了standby log 模式,不需要此步驟,否則有幾組需要清空幾組。
alter database clear logfile group 組號;
9.備庫重設flashback(選做)
alter database flashback on/off;
10.備庫重新接收並應用日誌
alter database recover managed standby database using current logfile disconnect from session;
11.開啟備庫到redo only狀態
alter database recover managed standby database cancel;
alter database open;
alter database recover managed standby database using current logfile disconnect from session;
12.驗證修復是否成功
在主庫端執行:alter system switch logfile;
在各個備庫中執行:select max(sequence#) from v$arhcived_log;
######2
1.Rolling a Standby Forward using an RMAN Incremental Backup To Fix The Nologging Changes
STEPS
1. Follow this step-by-step procedure to roll forward a physical standby database for which nologging changes have been applied to a small subset of the database:
1. List the files that have had nologging changes applied by querying the V$DATAFILE view on the standby database. For example:
SQL> SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;
FILE# FIRST_NONLOGGED_SCN
---------- -------------------
4 225979
5 230184
2. Stop Redo Apply on the standby database:
3. On the standby database, offline the datafiles (recorded in step 0) that have had nologging changes. Taking these datafiles offline ensures redo data is not skipped for the corrupt blocks while the incremental backups are performed.
SQL> ALTER DATABASE DATAFILE 4 OFFLINE FOR DROP;
SQL> ALTER DATABASE DATAFILE 5 OFFLINE FOR DROP;
4. Start Redo Apply on the standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
5. While connected to the primary database as the RMAN target, create an incremental backup for each datafile listed in the FIRST_NONLOGGED_SCN column (recorded in step 0). For example:
RMAN> BACKUP INCREMENTAL FROM SCN 225979 DATAFILE 4 FORMAT ‘/tmp/ForStandby_%U‘ TAG ‘FOR STANDBY‘;
RMAN> BACKUP INCREMENTAL FROM SCN 230184 DATAFILE 5 FORMAT ‘/tmp/ForStandby_%U‘ TAG ‘FOR STANDBY‘;
6. Transfer all backup sets created on the primary system to the standby system. (Note that there may be more than one backup file created.)
% scp /tmp/ForStandby_* standby:/tmp
7. While connected to the physical standby database as the RMAN target, catalog all incremental backup pieces. For example:
RMAN> CATALOG START WITH ‘/tmp/ForStandby_‘;
8. Stop Redo Apply on the standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
9. Online the datafiles on the standby database
SQL> ALTER DATABASE DATAFILE 4 ONLINE;
SQL> ALTER DATABASE DATAFILE 5 ONLINE;
10. While connected to the physical standby database as the RMAN target, apply the incremental backup sets:
RMAN> RECOVER DATAFILE 4, 5 NOREDO;
11. Query the V$DATAFILE view on the standby database to verify there are no datafiles with nologged changes. The following query should return zero rows
SQL> SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;
12. Recreate the Standby Controlfile following:
Note 459411.1 Steps to recreate a Physical Standby Controlfile
13. Remove the incremental backups from the standby system:
RMAN> DELETE BACKUP TAG ‘FOR STANDBY‘;
14. Manually remove the incremental backups from the primary system. For example, the following example uses the Linux rm command:
% rm /tmp/ForStandby_*
15. Start Redo Apply on the standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
Note: Starting from 12c we can use RECOVER DATABASE...FROM SERVICE clause in RMAN to generate, transfer and apply the incremental backup in a single step. Please refer below document for examples:
Note 1987763.1 ROLLING FORWARD A PHYSICAL STANDBY USING RECOVER FROM SERVICE COMMAND IN 12C
2. Follow this step-by-step procedure to roll forward a physical standby database for which nologging changes have been applied to a large portion of the database:
1. Query the V$DATAFILE view on the standby database to record the lowest FIRST_NONLOGGED_SCN:
SQL> SELECT MIN(FIRST_NONLOGGED_SCN) FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN>0;
MIN(FIRST_NONLOGGED_SCN)
------------------------
223948
2.Stop Redo Apply on the standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
3.While connected to the primary database as the RMAN target, create an incremental backup from the lowest FIRST_NONLOGGED_SCN (recorded in step 0)
RMAN> BACKUP INCREMENTAL FROM SCN 223948 DATABASE FORMAT ‘/tmp/ForStandby_%U‘ tag ‘FOR STANDBY‘;
4.Transfer all backup sets created on the primary system to the standby system. (Note that more than one backup file may have been created.) The following example uses the scp command to copy the files:
% scp /tmp/ForStandby_* standby:/tmp
5.While connected to the standby database as the RMAN target, catalog all incremental backup piece(s)
RMAN> CATALOG START WITH ‘/tmp/ForStandby_‘;6.While connected to the standby database as the RMAN target, apply the incremental backups:
RMAN> RECOVER DATABASE NOREDO;
7.Query the V$DATAFILE view to verify there are no datafiles with nologged changes. The following query on the standby database should return zero rows:
SQL> SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE WHERE FIRST_NONLOGGED_SCN > 0;
8. Recreate the Standby Controlfile following:
Note 459411.1 Steps to recreate a Physical Standby Controlfile
9.Remove the incremental backups from the standby system:
RMAN> DELETE BACKUP TAG ‘FOR STANDBY‘;
10.Manually remove the incremental backups from the primary system. For example, the following removes the backups using the Linux rm command:
% rm /tmp/ForStandby_*
11.Start Redo Apply on the standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
Note:
If the affected files belong to a READ ONLY tablespace, those files will be ignored during backup. To bypass the issue, at Primary Database, switch the tablespace from read only to read write and back to read only again :
SQL> alter tablespace <tablespace_name> read write ;
SQL> alter tablespace <tablespace_name> read only ;
解決gap 采用increapment scn 方式 操作。