ORA-00494: enqueue [CF] held for too long crashes the database when the enqueue blocker is LGWR

Problem

 
The Database crashed
 
This is what was found in the alert_SID.log

Mon Feb 24 14:35:49 2014
Errors in file /u01/app/oracle/diag/rdbms/oradb/oradb/trace/oradb_j002_30015710.trc  (incident=57308):
ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by ‘inst 1, osid 40304748’


Incident details in: /u01/app/oracle/diag/rdbms/oradb/oradb/incident/incdir_57308/oradb_j002_30015710_i57308.trc
Mon Feb 24 14:36:19 2014
Killing enqueue blocker (pid=40304748) on resource CF-00000000-00000000 by (pid=30015710)
 by killing session 294.1
Killing enqueue blocker (pid=40304748) on resource CF-00000000-00000000 by (pid=30015710)
 by terminating the process
USER (ospid: 30015710): terminating the instance due to error 2103

osid 40304748 was the LGWR (the log writer)
The LGWR was blocking enqueue for too long, the instance killed it.

Solution

Set the hidden parameter _kill_enqueue_blocker=1.
A value of 1 will make sure the instance does not kill background parameters when they time out holding an enqueue block.

sqlplus / as sysdba
SQL>ALTER SYSTEM SET “_kill_enqueue_blocker”=1 scope=spfile;

Then restart database


Reference

Doc ID 1457867.1  from Oracle support

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s