I got ” ORA-10459: cannot start media recovery on standby database; conflicting state detected” error in the Oracle dataguard.
ORA-10459: cannot start media recovery on standby database; conflicting state detected
Details of error are as follows.
2021-11-29T12:28:03.835088+03:00 Errors in file /u01/app/oracle/diag/rdbms/MSDBdr/MSDBDR1/trace/MSDBDR1_mrp0_221201.trc: ORA-10459: cannot start media recovery on standby database; conflicting state detected 2021-11-29T12:28:03.835205+03:00 Background Media Recovery process shutdown (MSDBDR1) 2021-11-29T12:28:04.105572+03:00
This ORA-10459 error is related with the Standby database is configured as RAC.The server machine with a physical standby database went down due to an operating system issue.
After the servers were finally brought up, all attempts to start the MRP process failed with below error .
ORA-10459 “cannot start media recovery on standby database; conflicting state detected”:
SQL> alter database recover managed standby database (...) MRP0: Background Media Recovery terminated with error 10459 Errors in file <diagnostic_dest>/diag/rdbms/<dbname>/<instname>/trace/<db_name>_pr00_11112.trc: ORA-10459: cannot start media recovery on standby database; conflicting state detected Slave exiting with ORA-10459 exception Errors in file <diagnostic_dest>/diag/rdbms/<dbname>/<instname>/trace/<db_name>_pr00_11112.trc: ORA-10459: cannot start media recovery on standby database; conflicting state detected Recovery Slave PR00 previously exited with exception 10459 MRP0: Background Media Recovery process shutdown
The server machine with a physical standby database went down due to an operating system issue. The server was then brought up and an attempt was made to start the standby recovery.
A second instance of RAC standby database was already opened.
As described in defect 16538987 ( Bug No 16538987 closed as “Not a bug”)
Managed recovery can be run only from One instance of RAC Standby.
To check if Managed recovery is already running on a specific instance you can run the below query
Select * from gv$managed_standby;
Or
Check the alert log.
If Managed recovery is already running on a instance and you want it to be run from specific instance:
Stop the Managed recovery from the instance it is running and start managed recovery from first/specific instance.
To solve this error, Stop the Standby database instances as follows, then start standby database as One node.
srvctl stop database -d MSDBDR
Startup the Standby database on only One node ( one instance ), then start the MRP process to start Dataguard.
sqlplus / as sysdba startup mount; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
,
Do you want to learn Oracle Database for Beginners, then read the following articles.
Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )