Tuesday, February 21, 2023

Copy Archivelogs From Standby DR to Primary

You may think the title of this article is wrong; what is the scenario that requires copying archivelogs from Standby to Primary?

I ran into a situation on a primary RAC DB data guarded by a standby RAC DB, where dozens of archivelogs were needed for goldengate replication got deleted by Oracle because of space pressure on Flash Recovery Area FRA. For my good luck, those archivelogs were still available on the Standby DB and hence in this article I'll demonstrate how to restore them back on the primary DB.

Note: Both Primary and Standby DBs are two nodes RAC, this explains why I've to specify the thread in most of RMAN commands.

Backup the Archivelogs on the Standby:

I managed to figure out the archivelogs sequence numbers I need to copy from the Standby DB and hence I used the following RMAN command to back up the needed Archivelogs on the Standby DB:

RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch4 DEVICE TYPE DISK ;
backup as compressed backupset
archivelog sequence between 112700 and 112902 thread 1
format '/backup/archives/%d_%s_%p_%c_%t.arc.bkp'
archivelog sequence between 102590 and 102669 thread 2 format '/backup/archives/%d_%s_%p_%c_%t.arc.bkp';
}

Note: Using "as compressed backupset" option will shrink the backup file size, and it doesn't require a license.

Then, Copy the backed up Archivelogs from the Standby to one of the Primary DB nodes:
# scp /backup/archives/* oracle@primary_n1:/backup/archives


Restore the Archivelogs on the Primary:

On the Primary DB node where the backupfiles are copied, use the following command to Catalog the backup files, so they will be aware of by the Restore command:

RMAN> catalog start with '/backup/archives/';

On the same Primary Node I used the following RMAN command to restore the archives logs to their default location which is +RECO ASM diskgroup in my case:

RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch4 DEVICE TYPE DISK ;
restore
archivelog from logseq=112700 until logseq=112902 thread 1
archivelog from logseq=102590 until logseq=102669 thread 2;
}

In case you want to restore the archivelogs to a non-default location i.e. /backup/archives/restored you can use "set archivelog destination" command as follows:

RUN{
ALLOCATE CHANNEL ch1 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch2 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch3 DEVICE TYPE DISK ;
ALLOCATE CHANNEL ch4 DEVICE TYPE DISK ;
set archivelog destination to '/backup/archives/restored';
restore
archivelog from logseq=112700 until logseq=112902 thread 1
archivelog from logseq=102590 until logseq=102669 thread 2;
}

 

Monday, February 20, 2023

DBA BUNDLE 7.4 Release is Now Available For Download

 

The DBA Bundle release of Feb 2023 is now available, use this download link:

https://www.dropbox.com/s/le5pxctq0w6v49u/DBA_BUNDLE7.tar?dl=0

Once you click on the link, first close this Window:



Then, click on the Download button at the most upper right side of the page:

 If you are new to the DBA Bundle, this link will go you through its features and how to use it:
http://dba-tips.blogspot.com/2014/02/oracle-database-administration-scripts.html


DISCLAIMER: THIS BUNDLE IS AN OPEN SOURCE PROJECT, IT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY WARRANTY. IT IS PROVIDED "AS IS". TO BE USED BY DBAs.