原文地址:https://docs.oracle.com/cd/E11882_01/server.112/e41134/rman.htm#SBYDB00759
11.10 Using RMAN Incremental Backups to Roll Forward a Physical Standby Database
In some situations, RMAN incremental backups can be used to synchronize a physical standby database with the primary database. You can use the RMAN BACKUP INCREMENTAL FROM SCN
command to create a backup on the primary database that starts at the current SCN of the standby, which can then be used to roll the standby database forward in time.
The steps described in this section apply to situations in which RMAN incremental backups may be useful because the physical standby database either:
-
Lags far behind the primary database
-
Has widespread nologging changes
-
Has nologging changes on a subset of datafiles
Note:
Oracle recommends the use of a recovery catalog when performing this operation. These steps are possible without a recovery catalog, but great care must be taken to correct the file names in the restored control file.
See Also:
Oracle Database Backup and Recovery User's Guide for more information about RMAN incremental backups
11.10.1 Steps for Using RMAN Incremental Backups
Except where stated otherwise, the following steps apply to all three situations just listed.
-
Stop Redo Apply on the standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
-
On the standby database, compute the
FROM SCN
for the incremental backup. This is done differently depending on the situation:-
On a standby that lags far behind the primary database, query the
V$DATABASE
view and record the current SCN of the standby database:SQL> SELECT CURRENT_SCN FROM V$DATABASE; CURRENT_SCN ----------- 233995
-
On a standby that has widespread nologging changes, query the
V$DATAFILE
view to record the lowestFIRST_NONLOGGED_SCN
:SQL> SELECT MIN(FIRST_NONLOGGED_SCN) FROM V$DATAFILE - > WHERE FIRST_NONLOGGED_SCN>0; MIN(FIRST_NONLOGGED_SCN) ------------------------ 223948
-
On a standby that has nologging changes on a subset of datafiles, query the
V$DATAFILE
view, as follows:SQL> SELECT FILE#, FIRST_NONLOGGED_SCN FROM V$DATAFILE - > WHERE FIRST_NONLOGGED_SCN > 0; FILE# FIRST_NONLOGGED_SCN ---------- ------------------- 4 225979 5 230184
-
-
Connect to the primary database as the RMAN target and create an incremental backup from the current SCN (for a standby lagging far behind the primary) or from the lowest
FIRST_NONLOGGED_SCN
(for a standby with widespread nologging changes) of the standby database that was recorded in step 2:RMAN> BACKUP INCREMENTAL FROM SCN 233995 DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';
If the standby has nologging changes on a subset of datafiles, then create an incremental backup for each datafile listed in the
FIRST_NONLOGGED_SCN
column (recorded in step 2), as follows:RMAN> BACKUP INCREMENTAL FROM SCN 225979 DATAFILE 4 FORMAT '/tmp/ForStandby_%U' TAG 'FORSTANDBY'; RMAN> BACKUP INCREMENTAL FROM SCN 230184 DATAFILE 5 FORMAT '/tmp/ForStandby_%U' TAG 'FORSTANDBY';
The
BACKUP
commands shown generate datafile backups, as well as a control file backup that will be used in step 7. -
If the backup pieces are not on shared storage, then transfer all the backup pieces created on the primary to the standby:
scp /tmp/ForStandby_* standby:/tmp
-
If you had to copy the backup pieces in the previous step, or if you are not connected to the recovery catalog for the entire process, then you must catalog the new backup pieces on the standby (otherwise, go on to the next step):
RMAN> CATALOG START WITH '/tmp/ForStandby';
-
Connect to the standby database as the RMAN target and execute the
REPORT SCHEMA
statement to ensure that the standby database site is automatically registered and that the files names at the standby site are displayed:RMAN> REPORT SCHEMA;
-
Connect to the standby database as the RMAN target and apply incremental backups by executing the following commands. Note that the
RESTORE STANDBY CONTROLFILE FROM TAG
command only works if you are connected to the recovery catalog for the entire process. Otherwise, you must use theRESTORE STANDBY CONTROLFILE FROM '<control file backup filename>'
command.RMAN> STARTUP FORCE NOMOUNT; RMAN> RESTORE STANDBY CONTROLFILE FROM TAG 'FORSTANDBY'; RMAN> ALTER DATABASE MOUNT; RMAN> RECOVER DATABASE NOREDO;
Note:
If a recovery catalog is used, then the RMANRECOVER
command will fix the path names for datafiles in the standby control file. If no recovery catalog is used, then you must manually edit the file names in your standby control file or use the RMANSET NEWNAME
command to assign the datafile names. See Oracle Database Backup and Recovery Reference for more information about the RMANRECOVER
andSET NEWNAME
commands. -
On standbys that have widespread nologging changes or that have nologging changes on a subset of datafiles, query the
V$DATAFILE
view 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;
Note:
The incremental backup will become obsolete in 7 days, or you can remove it now using the RMANDELETE
command. -
Start Redo Apply on the physical standby database:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE - > USING CURRENT LOGFILE DISCONNECT FROM SESSION;