01 May, 2025

Backup and Restore a Standby Database

 I have seen some I.T. managers that decide to backup only the Primary Database and not the Standby. The logic is "if the Storage or Server for the Standby go down, we can rebuild the database from the Primary".   OR "we haven't allocated storage  /  tape drive space at the Standby site"    OR  "our third-party backup tool does not know how to backup a Standby database and handle the warning about Archive Logs that is generated when it issues  a "PLUS ARCHIVELOG"   {see the warning below when I run the backup command)

Do they factor the time that is required to run Backup, Copy, Restore commands  OR run the Duplicate command to rebuild the Standby ?  All that while their Critical database is running without a Standby -- without a D.R. site.

Given a moderately large Database, it can be faster to restore from a "local" Backup at the Standby then to copy / duplicate across the network.  Also, this method does NOT require rebuilding DataGuard Broker configuration.

Firstly, you CAN backup a Standby even while Recovery (i.e. Redo Apply) is running.  The only catch is the "PLUS ARCHIVELOG" clause in "BACKUP ... DATABASE PLUS ARCHIVELOG" returns a minor error because a Standby cannot issue "ALTER SYSTEM ARCHIVE LOG CURRENT" (or "ALTER SYSTEM SWITCH LOGFILE")

Here's my Backup command at the Standby (while Redo Apply -- i.e. Media Recovery -- is running) without issuing a CANCEL RECOVERY.


RMAN> backup as compressed backupset
2> database
3> format '/tmp/STDBY_Backup/DB_DataFiles_%U.bak'
4> plus archivelog
5> format '/tmp/STDBY_Backup/DB_ArchLogs_%U.bak';
....
....
RMAN> backup current controlfile
2> format '/tmp/STDBY_Backup/standby_controlfile.bak';

So, when I run the Backup, it starts of with  and also ends with :
RMAN-06820: warning: failed to archive current log at primary database
cannot connect to remote database
....
....
....
RMAN-06820: warning: failed to archive current log at primary database
cannot connect to remote database
using channel ORA_DISK_1
specification does not match any archived log in the repository
backup cancelled because there are no files to backup


because it cannot issue an "ALTER DATABASE ARCHIVE LOG COMMAND" -- which can only be done at a Primary.  These warnings do not trouble me.


A LIST BACKUP command at the Standby *does* show Backups created locally (it will not show Backups at the Primary unless I connect to the same Recovery Catalog that is being used by the Primary)  ( I have excluded listing each ArchiveLog / Datafile from the output here)
RMAN> list backup;
list backup;
using target database control file instead of recovery catalog

List of Backup Sets
===================

BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
311     44.10M     DISK        00:00:02     01-MAY-25
        BP Key: 311   Status: AVAILABLE  Compressed: YES  Tag: TAG20250501T074832
        Piece Name: /tmp/STDBY_Backup/DB_ArchLogs_ad3objeg_333_1_1.bak

  List of Archived Logs in backup set 311
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    393     11126161   01-MAY-25 11126287   01-MAY-25
  1    394     11126287   01-MAY-25 11127601   01-MAY-25
...
...
  2    338     11126158   01-MAY-25 11126290   01-MAY-25
  2    339     11126290   01-MAY-25 11127596   01-MAY-25

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
312     Full    1.07G      DISK        00:00:57     01-MAY-25
        BP Key: 312   Status: AVAILABLE  Compressed: YES  Tag: TAG20250501T074835
        Piece Name: /tmp/STDBY_Backup/DB_DataFiles_ae3objej_334_1_1.bak
  List of Datafiles in backup set 312
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
....
....

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
313     Full    831.00M    DISK        00:00:43     01-MAY-25
        BP Key: 313   Status: AVAILABLE  Compressed: YES  Tag: TAG20250501T074835
        Piece Name: /tmp/STDBY_Backup/DB_DataFiles_af3objgk_335_1_1.bak
  List of Datafiles in backup set 313
  Container ID: 3, PDB Name: PDB1
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
....
....

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
314     Full    807.77M    DISK        00:00:42     01-MAY-25
        BP Key: 314   Status: AVAILABLE  Compressed: YES  Tag: TAG20250501T074835
        Piece Name: /tmp/STDBY_Backup/DB_DataFiles_ag3obji1_336_1_1.bak
  List of Datafiles in backup set 314
  Container ID: 5, PDB Name: TSTPDB
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
....
....

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
315     Full    807.75M    DISK        00:00:43     01-MAY-25
        BP Key: 315   Status: AVAILABLE  Compressed: YES  Tag: TAG20250501T074835
        Piece Name: /tmp/STDBY_Backup/DB_DataFiles_ah3objje_337_1_1.bak
  List of Datafiles in backup set 315
  Container ID: 2, PDB Name: PDB$SEED
  File LV Type Ckp SCN    Ckp Time  Abs Fuz SCN Sparse Name
  ---- -- ---- ---------- --------- ----------- ------ ----
....
....

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
317     Full    19.58M     DISK        00:00:01     01-MAY-25
        BP Key: 317   Status: AVAILABLE  Compressed: NO  Tag: TAG20250501T075522
        Piece Name: /tmp/STDBY_Backup/standby_controlfile.bak
  Standby Control File Included: Ckp SCN: 11128626     Ckp time: 01-MAY-25

RMAN>

So I can confirm that I have *local* backups (including ArchiveLogs present at the Standby and backed up before the Datafile backup begins).  The last ArchiveLog backed up at the Standby is SEQ#394 for Thread#1 and SEQ#339 for Thread#2
Meanwhile, the Standby has already applied subsequent ArchiveLogs as Recovery had not been cancelled.

Now I simulate loss / corruption of the filesystem holding the Standby datafiles and controlfiles and attempt a Restore (if the Standby Redo Logs are also lost, I must add them again later before I resume recovery).

I do a SHUTDOWN ABORT at the Standby if he instance seems to be running.  
(not shown here)

First I stop Redo Shipping from the Primary
DGMGRL> connect sys
Password:
Connected to "RACDB"
Connected as SYSDBA.
DGMGRL> EDIT DATABASE 'RACDB' SET STATE='TRANSPORT-OFF';
Succeeded.
DGMGRL>

Next I Restore the *standby* controlfile at my Standby server (note that I connect to "target" and specify "standby controlfile").  Note : If my SPFILE or PFILE is not available at the Standby, I have to restore that as well before I  STARTUP NOMOUNT.
[oracle@stdby ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Thu May 1 08:27:23 2025
Version 19.25.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database (not started)

RMAN> startup nomount;
startup nomount;
Oracle instance started

Total System Global Area    2147480256 bytes

Fixed Size                     9179840 bytes
Variable Size                486539264 bytes
Database Buffers            1644167168 bytes
Redo Buffers                   7593984 bytes


RMAN> restore standby controlfile from '/tmp/STDBY_Backup/standby_controlfile.bak';
restore standby controlfile from '/tmp/STDBY_Backup/standby_controlfile.bak';
Starting restore at 01-MAY-25
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=310 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/Standby_DB/oradata/control01.ctl
output file name=/Standby_DB/FRA/control02.ctl
Finished restore at 01-MAY-25


RMAN>
I am now ready to CATALOG the Backups and RESTORE the Database
RMAN> alter database mount;
alter database mount;
released channel: ORA_DISK_1
Statement processed


RMAN> catalog start with '/tmp/STDBY_Backup';
catalog start with '/tmp/STDBY_Backup';
Starting implicit crosscheck backup at 01-MAY-25
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=11 device type=DISK
Crosschecked 13 objects
Finished implicit crosscheck backup at 01-MAY-25

Starting implicit crosscheck copy at 01-MAY-25
using channel ORA_DISK_1
Finished implicit crosscheck copy at 01-MAY-25

searching for all files in the recovery area
cataloging files...
no files cataloged

searching for all files that match the pattern /tmp/STDBY_Backup

List of Files Unknown to the Database
=====================================
File Name: /tmp/STDBY_Backup/standby_controlfile.bak

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /tmp/STDBY_Backup/standby_controlfile.bak


RMAN>

In this case, the Standby Controlfile backup was taken *after* the Datafile and ArchiveLog backups, so this Controlfile is already "aware" of the backups (they are already included in the controlfile).  Neverthless, I can do some verification : ( I have excluded listing each ArchiveLog / Datafile from the output here)
RMAN> list backup ;
list backup ;

List of Backup Sets
===================


BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
311     44.10M     DISK        00:00:02     01-MAY-25
        BP Key: 311   Status: AVAILABLE  Compressed: YES  Tag: TAG20250501T074832
        Piece Name: /tmp/STDBY_Backup/DB_ArchLogs_ad3objeg_333_1_1.bak

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
312     Full    1.07G      DISK        00:00:57     01-MAY-25

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
313     Full    831.00M    DISK        00:00:43     01-MAY-25

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
314     Full    807.77M    DISK        00:00:42     01-MAY-25

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
315     Full    807.75M    DISK        00:00:43     01-MAY-25

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
316     Full    19.61M     DISK        00:00:01     01-MAY-25

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
317     Full    19.58M     DISK        00:00:01     01-MAY-25
        BP Key: 317   Status: AVAILABLE  Compressed: NO  Tag: TAG20250501T075522
        Piece Name: /tmp/STDBY_Backup/standby_controlfile.bak
  Standby Control File Included: Ckp SCN: 11128626     Ckp time: 01-MAY-25


RMAN>

For good measure, I can also verify that this "database" is  a Standby  (only the controlfile is presently restored" is a *Standby Database* (that a database is a Primary or a Standby is information in the *Controlfile*, not in the Datafiles)
RMAN> exit
exit

RMAN Client Diagnostic Trace file : /u01/app/oracle/diag/clients/user_oracle/host_4144547424_110/trace/ora_4560_140406053321216.trc

Recovery Manager complete.
[oracle@stdby ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Thu May 1 08:37:54 2025
Version 19.25.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0

SQL> select open_mode, database_role from v$database;

OPEN_MODE            DATABASE_ROLE
-------------------- ----------------
MOUNTED              PHYSICAL STANDBY

SQL>

I can return to RMAN and RESTORE the Database. (I still invoke RMAN to connect to "target", not "auxiliary"
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.25.0.0.0
[oracle@stdby ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on Thu May 1 08:40:32 2025
Version 19.25.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

connected to target database: RACDB (DBID=1162136313, not open)

RMAN> 
RMAN> restore database;
restore database;
Starting restore at 01-MAY-25
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /Standby_DB/oradata/STDBY/datafile/o1_mf_system_m33j9fqn_.dbf
...
...
...
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00005 to /Standby_DB/oradata/STDBY/14769E258FBB5FD8E0635A38A8C09D43/datafile/o1_mf_system_m33jb79n_.dbf
channel ORA_DISK_1: restoring datafile 00006 to /Standby_DB/oradata/STDBY/14769E258FBB5FD8E0635A38A8C09D43/datafile/o1_mf_sysaux_m33jbbgz_.dbf
channel ORA_DISK_1: restoring datafile 00008 to /Standby_DB/oradata/STDBY/14769E258FBB5FD8E0635A38A8C09D43/datafile/o1_mf_undotbs1_m33jbgrs_.dbf
channel ORA_DISK_1: reading from backup piece /tmp/STDBY_Backup/DB_DataFiles_ah3objje_337_1_1.bak
channel ORA_DISK_1: piece handle=/tmp/STDBY_Backup/DB_DataFiles_ah3objje_337_1_1.bak tag=TAG20250501T074835
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:45
Finished restore at 01-MAY-25


RMAN>

Next, I restore the ArchiveLogs that I have in the local backup instead of having to wait for them to be shipped from the Primary during the Recover Phase
RMAN> restore archivelog from time "trunc(sysdate)";
restore archivelog from time "trunc(sysdate)";
Starting restore at 01-MAY-25
using channel ORA_DISK_1

channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=391
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=392
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=336
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=337
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=338
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=393
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=394
channel ORA_DISK_1: restoring archived log
archived log thread=2 sequence=339
channel ORA_DISK_1: reading from backup piece /tmp/STDBY_Backup/DB_ArchLogs_ad3objeg_333_1_1.bak
channel ORA_DISK_1: piece handle=/tmp/STDBY_Backup/DB_ArchLogs_ad3objeg_333_1_1.bak tag=TAG20250501T074832
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 01-MAY-25


RMAN>
RMAN>  list archivelog all completed after "trunc(sysdate)";
 list archivelog all completed after "trunc(sysdate)";
List of Archived Log Copies for database with db_unique_name STDBY
=====================================================================

Key     Thrd Seq     S Low Time
------- ---- ------- - ---------
675     1    391     A 27-APR-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_391_n16fcchs_.arc

667     1    391     A 27-APR-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_391_n169cng5_.arc

682     1    392     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_392_n16fcbh7_.arc

670     1    392     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_392_n169fh7s_.arc

678     1    393     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_393_n16fcckd_.arc

671     1    393     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_393_n169g77l_.arc

677     1    394     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_394_n16fccjb_.arc

674     1    394     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_1_394_n169my72_.arc

680     2    336     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_336_n16fccnv_.arc

668     2    336     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_336_n169d0fm_.arc

681     2    337     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_337_n16fcbhy_.arc

669     2    337     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_337_n169fh6j_.arc

679     2    338     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_338_n16fccm6_.arc

672     2    338     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_338_n169g790_.arc

676     2    339     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_339_n16fcchw_.arc

673     2    339     A 01-MAY-25
        Name: /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_339_n169mxfp_.arc



RMAN>
(the output shows duplicate entries if either the ArchiveLogs were already present at the Standby OR the Restore was executed twice)

So, I also have the ArchiveLogs now. 

I add Standby Logs first (Add for each Thread in the Primary, and at the same size as Online Logs at the Primary)
RMAN> exit
exit

sqlRMAN Client Diagnostic Trace file : /u01/app/oracle/diag/clients/user_oracle/host_4144547424_110/trace/ora_5380_139777366395392.trc

Recovery Manager complete.
[oracle@stdby ~]$ sqlplus / as sysdba

SQL> select thread#, group# from v$standby_log;

   THREAD#     GROUP#
---------- ----------
         1          5
         2          6
         0          7
         1          8
         1          9
         1         10
         2         11
         2         12

8 rows selected.

SQL> alter database drop standby logfile group 5;

Database altered.

SQL> alter database drop standby logfile group 6;

Database altered.

SQL> alter database drop standby logfile group 7;

Database altered.

SQL> alter database drop standby logfile group 8;
alter database drop standby logfile group 8
*
ERROR at line 1:
ORA-00313: open failed for members of log group 8 of thread 1
ORA-00312: online log 8 thread 1: '/Standby_DB/FRA/STDBY/onlinelog/o1_mf_8_mb6rdbos_.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
ORA-00312: online log 8 thread 1: '/Standby_DB/oradata/STDBY/onlinelog/o1_mf_8_mb6rd9h8_.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7


SQL> alter database drop standby logfile group 9;

Database altered.

SQL> alter database drop standby logfile group 10;

Database altered.

SQL> alter database drop standby logfile group 11;
alter database drop standby logfile group 11
*
ERROR at line 1:
ORA-00313: open failed for members of log group 11 of thread 2
ORA-00312: online log 11 thread 2: '/Standby_DB/FRA/STDBY/onlinelog/o1_mf_11_mb6rf8ob_.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
ORA-00312: online log 11 thread 2: '/Standby_DB/oradata/STDBY/onlinelog/o1_mf_11_mb6rf7hs_.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7


SQL> alter database drop standby logfile group 12;

Database altered.

SQL>
SQL> select thread#, group# from v$standby_log;

   THREAD#     GROUP#
---------- ----------
         1          8
         2         11

SQL>
SQL> alter database clear logfile group 8;

Database altered.

SQL> alter database clear logfile group 11;

Database altered.

SQL>
SQL> alter database drop standby logfile group 8;

Database altered.

SQL>  alter database drop standby logfile group 11;

Database altered.

SQL> select thread#, group# from v$standby_log;

no rows selected

SQL>
SQL> alter database add standby logfile thread 1 size 512M;

Database altered.

SQL> alter database add standby logfile thread 1 size 512M;

Database altered.

SQL> alter database add standby logfile thread 2 size 512M;

Database altered.

SQL> alter database add standby logfile thread 2 size 512M;

Database altered.

SQL> alter database add standby logfile thread 2 size 512M;

Database altered.

SQL>
SQL> select thread#, group# from v$standby_log order by 1,2;

   THREAD#     GROUP#
---------- ----------
         1          5
         1          6
         1          7
         2          8
         2          9
         2         10

6 rows selected.

SQL>
I have to clear and then drop and recreate one Standby Log of each Thread that were last being used just before all the files were lost -- so the controlfile expected Group 8 and Group 11 to be present. These were the entries in the alert log for the last set of Recover commands before the storage was lost :
2025-05-01T08:10:41.554409+00:00
Recovery of Online Redo Log: Thread 2 Group 11 Seq 343 Reading mem 0
  Mem# 0: /Standby_DB/oradata/STDBY/onlinelog/o1_mf_11_mb6rf7hs_.log
  Mem# 1: /Standby_DB/FRA/STDBY/onlinelog/o1_mf_11_mb6rf8ob_.log
2025-05-01T08:10:41.557828+00:00
ARC1 (PID:1813): Archived Log entry 680 added for B-1164519547.T-1.S-397 LOS:0x0000000000a9f8a3 NXS:0x0000000000a9f8d2 NAB:12 ID 0x46c5be03 LAD:1
2025-05-01T08:10:41.563027+00:00
 rfs (PID:1825): Selected LNO:8 for T-1.S-398 dbid 1162136313 branch 1164519547
2025-05-01T08:10:41.642227+00:00
PR00 (PID:1863): Media Recovery Waiting for T-1.S-398 (in transit)
2025-05-01T08:10:41.642508+00:00
Recovery of Online Redo Log: Thread 1 Group 8 Seq 398 Reading mem 0
  Mem# 0: /Standby_DB/oradata/STDBY/onlinelog/o1_mf_8_mb6rd9h8_.log
  Mem# 1: /Standby_DB/FRA/STDBY/onlinelog/o1_mf_8_mb6rdbos_.log
2025-05-01T08:14:02.648081+00:00
Shutting down ORACLE instance (abort) (OS id: 3584)

Now I can begin Recovery of the Standby
SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL>
SQL> shutdown immediate;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> 
SQL> startup mount;
ORACLE instance started.

Total System Global Area 2147480256 bytes
Fixed Size                  9179840 bytes
Variable Size             486539264 bytes
Database Buffers         1644167168 bytes
Redo Buffers                7593984 bytes
Database mounted.
SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL> exit



I resume Redo Shipping from the Primary
[oracle@srv1 ~]$ dgmgrl
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Thu May 1 09:11:56 2025
Version 19.25.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Welcome to DGMGRL, type "help" for information.
DGMGRL> connect sys
Password:
Connected to "RACDB"
Connected as SYSDBA.
DGMGRL> EDIT DATABASE 'RACDB' SET STATE='TRANSPORT-ON';
Succeeded.
DGMGRL>
DGMGRL> show configuration;

Configuration - racdb_dg

  Protection Mode: MaxPerformance
  Members:
  racdb - Primary database
    stdby - Physical standby database

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 34 seconds ago)

DGMGRL> show configuration lag;

Configuration - racdb_dg

  Protection Mode: MaxPerformance
  Members:
  racdb - Primary database
    stdby - Physical standby database
            Transport Lag:      0 seconds (computed 1 second ago)
            Apply Lag:          0 seconds (computed 1 second ago)

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 37 seconds ago)

DGMGRL>
Note : I have to wait for a few seconds to a few minutes for the SHOW CONFIGURATION and SHOW CONFIGURATION LAG commands to return the correct information.  Initially, they may show that there are errors but once Primary and Standby are "talking to each other", these errors would clear.

Now my Standby is syncing with the Primary
2025-05-01T09:19:30.530588+00:00
Recovery of Online Redo Log: Thread 2 Group 8 Seq 344 Reading mem 0
  Mem# 0: /Standby_DB/oradata/STDBY/onlinelog/o1_mf_8_n16gb9wm_.log
  Mem# 1: /Standby_DB/FRA/STDBY/onlinelog/o1_mf_8_n16gbb4m_.log
2025-05-01T09:19:30.611573+00:00
 rfs (PID:7642): krsr_rfs_atc: Identified database type as 'PHYSICAL': Client is ASYNC (PID:11557)
2025-05-01T09:19:30.623795+00:00
 rfs (PID:7642): Selected LNO:5 for T-1.S-399 dbid 1162136313 branch 1164519547
2025-05-01T09:19:30.631133+00:00
PR00 (PID:7486): Media Recovery Waiting for T-1.S-399 (in transit)
2025-05-01T09:19:30.631475+00:00
Recovery of Online Redo Log: Thread 1 Group 5 Seq 399 Reading mem 0
  Mem# 0: /Standby_DB/oradata/STDBY/onlinelog/o1_mf_5_n16g90qv_.log
  Mem# 1: /Standby_DB/FRA/STDBY/onlinelog/o1_mf_5_n16g910n_.log
2025-05-01T09:20:51.263052+00:00
ARC2 (PID:7470): Archived Log entry 691 added for B-1164519547.T-2.S-344 LOS:0x0000000000aa394b NXS:0x0000000000aa3b02 NAB:102 ID 0x46c5be03 LAD:1
2025-05-01T09:20:51.274060+00:00
 rfs (PID:7640): Selected LNO:8 for T-2.S-345 dbid 1162136313 branch 1164519547
2025-05-01T09:20:51.285312+00:00
PR00 (PID:7486): Media Recovery Log /Standby_DB/FRA/STDBY/archivelog/2025_05_01/o1_mf_2_344_n16h7m85_.arc
PR00 (PID:7486): Media Recovery Waiting for T-2.S-345 (in transit)
2025-05-01T09:20:51.387005+00:00
Recovery of Online Redo Log: Thread 2 Group 8 Seq 345 Reading mem 0
  Mem# 0: /Standby_DB/oradata/STDBY/onlinelog/o1_mf_8_n16gb9wm_.log
  Mem# 1: /Standby_DB/FRA/STDBY/onlinelog/o1_mf_8_n16gbb4m_.log
2025-05-01T09:20:51.433894+00:00
ARC0 (PID:7462): Archived Log entry 692 added for B-1164519547.T-1.S-399 LOS:0x0000000000aa394e NXS:0x0000000000aa3b06 NAB:265 ID 0x46c5be03 LAD:1
2025-05-01T09:20:51.445431+00:00
 rfs (PID:7642): Selected LNO:5 for T-1.S-400 dbid 1162136313 branch 1164519547
2025-05-01T09:20:51.514317+00:00
PR00 (PID:7486): Media Recovery Waiting for T-1.S-400 (in transit)
2025-05-01T09:20:51.514664+00:00
Recovery of Online Redo Log: Thread 1 Group 5 Seq 400 Reading mem 0
  Mem# 0: /Standby_DB/oradata/STDBY/onlinelog/o1_mf_5_n16g90qv_.log
  Mem# 1: /Standby_DB/FRA/STDBY/onlinelog/o1_mf_5_n16g910n_.log

 
I see that the SEQ# have already advanced to 399 and 345 for Thread 1 and 2 respectively.


No comments: