Friday 24 May 2013

ORA-00494 enqueue [CF] held for too long tips


ORA-00494 enqueue [CF] held for too long tips


Question:  I am getting an ORA-00494 error and the trace file.  This error causes my database to crash:. 
ORA-00494: enqueue [CF] held for too long

/u01/app/oracle/admin/mysid/bdump/ora_lgwr_143.trc

Killing enqueue blocker (pid=152) on resource

CF-00000000-00000000 by killing session 83.0
 
What is the cure for this ORA-00494 error?

Answer:  The oerr utility shows this on the ORA-00494
ORA-00494: enqueue string held for too long (more than string seconds) by 'inst string, osid string'

Cause:  The specified process did not release the enqueue within the maximum allowed time.

Action:  Reissue any commands that failed and contact Oracle Support Services with the incident information.
The ORA-00494 error occurs during periods of super-high stress, activity to the point there the server becomes unresponsive due to overloaded disk I/O, CPU or RAM.
  • See MOSC Note ID 779552.1 "ORA-00494 During High Load After 10.2.0.4 Upgrade" says that Oracle kills blocking processes during periods of high DML load and issues the ORA-00494 error.  In your case, it is the log writer process.
  • Also see Database Crashes With ORA-00494 [MOSC Note ID 753290.1

Solutions for ORA-00494:  

  • Resize online redo logs
  • Spread-out the DML over longer periods 
  • Adjust several hidden parameters:
Two Oracle database hidden parameters can be reconfigured to prevent further incident happens by the same cause – Oracle Kill Blocker Interface mechanism:
1) _kill_controlfile_enqueue_blocker = { TRUE | FALSE }
  • TRUE. Default value. Enables this mechanism and kills blocker process in CF enqueue.
  • FALSE. Disables this mechanism and no blocker process in CF enqueue will be killed.
2) _kill_enqueue_blocker = { 0 | 1 | 2 | 3 }
  • 0. Disables this mechanism and no foreground or background blocker process in enqueue will be killed.
  • 1. Enables this mechanism and only kills foreground blocker process in enqueue while background process is not affected.
  • 2. Enables this mechanism and only kills background blocker process in enqueue.
  • 3. Default value. Enables this mechanism and kills blocker processes in enqueue.
3) _controlfile_enqueue_timeout = { INTEGER }
  • 900. Default value.
  • 1800. Optimum value to prevent enqueue timeout.

No comments:

Post a Comment