Skip to main content

dataguard gap resolve using incremental backup


https://docs.google.com/document/d/16jLzBuLu6gTBN7UpL51oXp3rKgvZWZfzyMY0rhdv4i4/edit?hl=en


Using RMAN Incremental Backups to Roll Forward a Physical Standby Database

 

Case Details:

Suppose network is down between primary server and standby server or standby server is down due to some hardware failure for long time.

 

In between down time, you have remove archive log file from primary server without taking backup of archive log files.

 

In above scenario, how to synchronies your standby database without archive logs.

 

Solution:

We can use RMAN incremental backups to synchronize a physical standby database with the primary database. Using the RMAN BACKUP INCREMENTAL FROM SCN command, we can create a backup on the primary database that starts at the standby database’s current SCN, which can then be used to roll the standby database forward in time.

 

Step 1 On the standby database, stop the managed recovery process (MRP):

 

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

 

Step 2 On the standby database, find the SCN which will be used for the incremental backup at the primary database:

 

SQL> SELECT CURRENT_SCN FROM V$DATABASE;

 

Step 3 In RMAN, connect to the primary database and create an incremental backup from the SCN derived in the previous step:

 

RMAN> BACKUP INCREMENTAL FROM SCN <SCN from step 2>

DATABASE FORMAT '/tmp/ForStandby_%U' tag 'FORSTANDBY';

 

Step 4 Transfer all backup sets created on the primary system to the standby system

 

SCP /tmp/ForStandby_* standby:/tmp

 

Step 5 Connect to the standby database as the RMAN target, and catalog all incremental backup pieces:

 

RMAN> CATALOG START WITH '/tmp/ForStandby';

 

Step 6 Recover the standby database with the cataloged incremental backup:

 

RMAN> RECOVER DATABASE NOREDO;

 

Step 7 In RMAN, connect to the primary database and create a standby control file backup:

 

RMAN> BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/tmp/ForStandbyCTRL.bck';

 

Step 8 Copy the standby control file backup to the standby system. For example:

 

SCP /tmp/ForStandbyCTRL.bck standby:/tmp

 

Step 9 Shut down the standby database and startup nomount:

 

RMAN> SHUTDOWN;

RMAN> STARTUP NOMOUNT;

 

Step 10 In RMAN, connect to standby database and restore the standby control file:

 

RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/ForStandbyCTRL.bck';

 

Step 11 Shut down the standby database and startup mount:

 

RMAN> SHUTDOWN;

RMAN> STARTUP MOUNT;

 

Step 12 If the primary and standby database data file directories are identical, skip to step13.

 

If the primary and standby database data file directories are different, then in

RMAN, connect to the standby database, catalog the standby data files, and switch the standby database to use the just-cataloged data files. For example:

 

RMAN> CATALOG START WITH '+DATA_1/CHICAGO/DATAFILE/';

RMAN> SWITCH DATABASE TO COPY;

 

Step 13 If the primary and standby database redo log directories are identical, skip to step 14.

 

Otherwise, on the standby database, use an OS utility or the asmcmd utility (if

it is an ASM-managed database) to remove all online and standby redo logs from

the standby directories and ensure that the LOG_FILE_NAME_CONVERT parameter is properly defined to translate log directory paths. For example, LOG_FILE_NAME_CONVERT=’/BOSTON/’,’/CHICAGO/’.

 

Step 14 On the standby database, clear all standby redo log groups (there may be more than 3):

 

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 1;

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2;

SQL> ALTER DATABASE CLEAR LOGFILE GROUP 3;

 

Step 15 On the standby database, restart Flashback Database (Optional):

SQL> ALTER DATABASE FLASHBACK OFF;

SQL> ALTER DATABASE FLASHBACK ON;

 

Step 16 On the standby database, restart MRP:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

Comments

Post a Comment

Popular posts from this blog

Opatch apply/lsinventory error: oneoff is corrupted or does not exist

I am applying the quarterly patch for 19c RDBMS, I tried using napply but failed, but somehow it corrupted the inventory though nothing applied. further apply and lsinventory command ran into error like this: $ ./OPatch/opatch lsinventory Oracle Interim Patch Installer version 12.2.0.1.21 Copyright (c) 2020, Oracle Corporation.  All rights reserved. Oracle Home       : /u02/app/oracle/19.0.0 Central Inventory : /u01/app/oraInventory    from           : /u02/app/oracle/19.0.0/oraInst.loc OPatch version    : 12.2.0.1.21 OUI version       : 12.2.0.7.0 Log file location : /u02/app/oracle/19.0.0/cfgtoollogs/opatch/opatch2020-09-08_13-35-59PM_1.log Lsinventory Output file location : /u02/app/oracle/19.0.0/cfgtoollogs/opatch/lsinv/lsinventory2020-09-08_13-35-59PM.txt -------------------------------------------------------------------------------- Inventory load failed... OPatch cannot load inventory for the given Oracle Home. LsInventorySession failed: Unable to create patchObject Possible ca

non-existent process lock port on windows server

I have a database link created between oracle and sqlserver using oracle tg4odbc, the product is installed on windows server and run as service "OracleOraGtw11g_home1TNSListener", but sometime the service cannot started, the root cause of this problem is that the port number 1521 is used by an non-existent process. The first step is to use netstat -bano|find "1521" to get the process id, in my case it's 5844, which shows the connection is from my oracle server 10.8.0.169 H:\>netstat -bano|find "1521"   TCP    0.0.0.0:1521           0.0.0.0:0              LISTENING       5844   TCP    10.14.45.33:1521       10.8.0.169:42987       ESTABLISHED     5844 however the process id does not show in either task manager or process explorer. The next step is to run tcpview, which shows non-existent under process column, there are three rows, two show status as "listening", the other one shows status "established", right click and k

shell script to clean up oracle dumpfile

https://github.com/iacosta/personal/blob/master/shells/cleanhouse.sh #!/bin/ksh # # Script used to cleanup any Oracle environment. # # Cleans:      audit_file_dest #              background_dump_dest #              core_dump_dest #              user_dump_dest #              Clusterware logs # # Rotates:     Alert Logs #              Listener Logs # # Scheduling:  00 00 * * * /networkdrive/dba/scripts/purge/cleanup.sh -d 7 > /u01/dba/bin/cleanup.log 2>&1 # # Created By:  Lei Dao # # # RM="rm -f" RMDIR="rm -rf" LS="ls -l" MV="mv" TOUCH="touch" TESTTOUCH="echo touch" TESTMV="echo mv" TESTRM=$LS TESTRMDIR=$LS SUCCESS=0 FAILURE=1 TEST=0 HOSTNAME=`hostname` ORAENV="oraenv" TODAY=`date +%Y%m%d` ORIGPATH=/usr/local/bin:$PATH ORIGLD=$LD_LIBRARY_PATH export PATH=$ORIGPATH # Usage function. f_usage(){   echo "Usage: `basename $0` -d DAYS [-a DAYS] [-b DAYS] [