If you got the error with "ORA-600 [3020]" or "ORA-16472" after performed failover on target standby database, you can try to perform a data-loss failover on target standby database.
As refer to the oracle document, this error is caused by the database configured the protection mode with "MaxAvailability" or "MaxPerformance" , data loss is detected during failover process.
For solve this issue, you can change the database protection mode to "Max Performance" before failover operation on target standby database or perform a data-loss failover on target standby database.
Here is the example:
Background:
1. The original protection mode of database is configured with "Max Availability".
2. The database is configured in physical standby database.
3. Oracle 12c Database on Oracle Linux
4. Both way are restored from same backup with applied the latest archive log, for plan A is unnecessary to perform a data-loss failover on target standby database.
A. Perform failover after changed the protection mode
RMAN> recover database;
Starting recover at 02-DEC-15
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=56
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=57
channel ORA_DISK_1: reading from backup piece /data_02/rman_disk/a_3045506482_20151202_151
channel ORA_DISK_1: piece handle=/data_02/rman_disk/a_3045506482_20151202_151 tag=TAG20151202T120618
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/arch/testdgbdr/1_56_896806709.dbf thread=1 sequence=56
archived log file name=/u01/app/arch/testdgbdr/1_57_896806709.dbf thread=1 sequence=57
media recovery complete, elapsed time: 00:00:02
Finished recover at 02-DEC-15
RMAN> alter database set standby database to maximize performance;
Statement processed
RMAN> exit
Recovery Manager complete.
[oracle@standby02 rman_disk]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 2 17:22:25 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select db_unique_name, protection_mode from v$database;
DB_UNIQUE_NAME PROTECTION_MODE
------------------------------ --------------------
testdgbdr MAXIMUM PERFORMANCE
SQL> alter database failover to testdgbdr;
Database altered.
SQL> select db_unique_name, database_role, protection_mode from v$database;
DB_UNIQUE_NAME DATABASE_ROLE PROTECTION_MODE
------------------------------ ---------------- --------------------
testdgbdr PRIMARY MAXIMUM PERFORMANCE
SQL> exit
Also, you can perform manual failover using DGMGRL (i.e. DG Broker).
DGMGRL> FAILOVER TO testdgdbr;
B. Perform failover without change the protection mode
RMAN> recover database;
Starting recover at 02-DEC-15
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=56
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=57
channel ORA_DISK_1: reading from backup piece /data_02/rman_disk/a_3045506482_20151202_151
channel ORA_DISK_1: piece handle=/data_02/rman_disk/a_3045506482_20151202_151 tag=TAG20151202T120618
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/arch/testdgbdr/1_56_896806709.dbf thread=1 sequence=56
archived log file name=/u01/app/arch/testdgbdr/1_57_896806709.dbf thread=1 sequence=57
media recovery complete, elapsed time: 00:00:03
Finished recover at 02-DEC-15
RMAN> exit
Recovery Manager complete.
[oracle@standby02 rman_disk]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Wed Dec 2 17:34:11 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> select db_unique_name, database_role, protection_mode from v$database;
DB_UNIQUE_NAME DATABASE_ROLE PROTECTION_MODE
------------------------------ ---------------- --------------------
testdgbdr PHYSICAL STANDBY MAXIMUM AVAILABILITY
SQL> alter database failover to testdgbdr;
alter database failover to testdgbdr
*
ERROR at line 1:
ORA-16472: failover failed due to data loss
SQL> alter database activate physical standby database;
Database altered.
SQL> exit
Also, you can perform manual failover using DGMGRL (i.e. DG Broker).
DGMGRL> FAILOVER TO testdgdbr immediate;
Reference:
https://docs.oracle.com/database/121/SBYDB/role_management.htm#SBYDB4773
https://docs.oracle.com/database/121/DGBKR/sofo.htm#DGBKR370
No comments:
Post a Comment