Description
A standby media recovery session may suddenly fail with
ORA-600 [krfg_mgen_coord2]
Look for all the following:
- this is a RAC standby, with more than one running standby
instance
- on the RAC standby instance performing media recovery, the
recovery session terminates with ORA-600 [krfg_mgen_coord2]
- flashback is enabled for the standby database
ie "select flashback_on from v$database" returns 'YES'.
- in the alert log of one of the other running standby instances
check the messages written for the most recent database mount
operation, the mount will have completed, but:
- the message "Successful mount of redo thread <n>" will
be there, but the following query on the standby:
select rtnum "thread#",
decode(bitand(rtsta,128), 128, 'FB_ENABLED_FOR_THREAD',
'FB_DISABLED_FOR_THREAD') "FLASHBACK"
from x$kccrt;
returns either no row for thread# <n>, or else it returns
one row for thread# <n> row showing flashback is disabled
for that thread.
Workaround
To prevent the problem, any threads mounted on the standby
instance need to already have flashback enabled for the thread.
To check this, run these 2 queries on the standby:
select thread# from gv$instance;
select rtnum "thread#",
decode(bitand(rtsta,128), 128, 'THREAD_ENABLED_FOR_FLASHBACK',
'THREAD_DISABLED_FOR_FLASHBACK') "THREAD_FLASHBACK_STATE"
from x$kccrt;
A standby media recovery session may suddenly fail with
ORA-600 [krfg_mgen_coord2]
Look for all the following:
- this is a RAC standby, with more than one running standby
instance
- on the RAC standby instance performing media recovery, the
recovery session terminates with ORA-600 [krfg_mgen_coord2]
- flashback is enabled for the standby database
ie "select flashback_on from v$database" returns 'YES'.
- in the alert log of one of the other running standby instances
check the messages written for the most recent database mount
operation, the mount will have completed, but:
- the message "Successful mount of redo thread <n>" will
be there, but the following query on the standby:
select rtnum "thread#",
decode(bitand(rtsta,128), 128, 'FB_ENABLED_FOR_THREAD',
'FB_DISABLED_FOR_THREAD') "FLASHBACK"
from x$kccrt;
returns either no row for thread# <n>, or else it returns
one row for thread# <n> row showing flashback is disabled
for that thread.
Workaround
To prevent the problem, any threads mounted on the standby
instance need to already have flashback enabled for the thread.
To check this, run these 2 queries on the standby:
select thread# from gv$instance;
select rtnum "thread#",
decode(bitand(rtsta,128), 128, 'THREAD_ENABLED_FOR_FLASHBACK',
'THREAD_DISABLED_FOR_FLASHBACK') "THREAD_FLASHBACK_STATE"
from x$kccrt;