Rebuild SB (Data ReSync of Existing SB)
๐น Before Refresh (Disable Standby)
On PRIMARY (d2-orasolo-p01):
1. Defer redo transport to prevent archivelog sync buildup: ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER SCOPE=BOTH; 2. (Optional but recommended) Run RMAN full backup # RMAN shell CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY; BACKUP DATABASE PLUS ARCHIVELOG; 3. (Optional) Document log sequence# at time of cutover SELECT MAX(SEQUENCE#) FROM V$ARCHIVED_LOG WHERE DEST_ID=1; 4. On STANDBY (d1-orasolo-p01): Cancel managed recovery: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 5. Shutdown the standby: SHUTDOWN IMMEDIATE; 6. (Optional Cleanup) Free up space: rm -rf /u01/app/oracle/oradata/dnasolo/* rm -rf /u02/fra/dnasolo/* rm -rf /u03/controlfiles/dnasolo/* rm -f $ORACLE_HOME/dbs/orapwdnasolo
At this point, the standby is offline and clean. Now proceed with your schema/data refresh on the primary.
๐น After Refresh (Rebuild the Standby)
1. On STANDBY, create fresh initdnasolo.ora:
cat <<EOF > $ORACLE_HOME/dbs/initdnasolo.ora DB_NAME=dnasolo DB_UNIQUE_NAME=dnasolo_sb CONTROL_FILES='/u03/controlfiles/dnasolo/control01.ctl' DB_CREATE_FILE_DEST='/u01/app/oracle/oradata/dnasolo' DB_RECOVERY_FILE_DEST='/u02/fra/dnasolo' DB_RECOVERY_FILE_DEST_SIZE=7000G FAL_SERVER=dnasolo FAL_CLIENT=dnasolo_sb LOG_ARCHIVE_CONFIG='DG_CONFIG=(dnasolo,dnasolo_sb)' LOG_ARCHIVE_DEST_2='SERVICE=dnasolo LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dnasolo' EOF
2. Start NOMOUNT using the PFILE:
export ORACLE_SID=dnasolo sqlplus / as sysdba STARTUP NOMOUNT PFILE='$ORACLE_HOME/dbs/initdnasolo.ora';
3. Ensure directory structure exists:
mkdir -p /u01/app/oracle/oradata/dnasolo mkdir -p /u02/fra/dnasolo mkdir -p /u03/controlfiles/dnasolo mkdir -p /u01/app/oracle/admin/dnasolo/adump chown -R oracle:oinstall /u01 /u02 /u03
4. Recreate or copy password file:
Option A (preferred): Copy from primary scp /u01/app/oracle/product/19.3.0.0.0/dbhome_1/dbs/orapwdnasolo oracle@d1-orasolo-p01:$ORACLE_HOME/dbs/orapwdnasolo Option B: Recreate orapwd file=$ORACLE_HOME/dbs/orapwdnasolo password=*** format=12
5. On PRIMARY, run RMAN DUPLICATE:
rman target sys/***@dnasolo auxiliary sys/***@dnasolo_sb
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE DORECOVER SPFILE SET DB_UNIQUE_NAME='dnasolo_sb' SET DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/dnasolo','/u01/app/oracle/oradata/dnasolo' SET LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/dnasolo','/u01/app/oracle/oradata/dnasolo' SET DB_RECOVERY_FILE_DEST='/u02/fra/dnasolo' SET CONTROL_FILES='/u03/controlfiles/dnasolo/control01.ctl' NOFILENAMECHECK;
6. Enable Flashback (if needed):
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; ALTER DATABASE FLASHBACK ON; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
7. Resume redo transport on PRIMARY:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;
8. Post-Validation
Confirm redo apply: SELECT PROCESS, STATUS, THREAD#, SEQUENCE# FROM V$MANAGED_STANDBY; Confirm archive apply and role: SELECT DEST_ID, STATUS, APPLIED_SEQ# FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID > 1; SELECT NAME, OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS FROM V$DATABASE; Confirm flashback: SELECT FLASHBACK_ON FROM V$DATABASE
๐งพ Summary: Key Rebuild Notes Phase Action Pre-Refresh Stop MRP, shutdown SB, DEFER transport During Perform schema/data refresh on Primary Post-Refresh Recreate SB via RMAN DUPLICATE Finalize Re-enable flashback, redo apply, transport
Would you like this turned into a shell script or PDF runbook? @]