Preventing ORA-00376 Errors in Oracle Alert Log

alertsoracleoracle-9i

An overnight hard drive failure had various side-effects, including leaving a single datafile needing recovery:

SQL> select count(*) from v$datafile where status='RECOVER';

  COUNT(*)
----------
         1

Everything is now back to normal but one mystery remains: before recovery, the client application logged an ORA-00376 to a logging table when a batch job tried to access a segment in the datafile. However this error did not appear in the alert log, how can this happen?

At the time of the ORA-00376 error, the following did appear in the alert log:

Errors in file /app/oracle/admin/live33/bdump/live33_j002_938224.trc:
ORA-12012: error on auto execute of job 24760001
ORA-20001: Error during batch run
ORA-06512: at "*******.***_*****", line 266
ORA-06512: at "*******.***_***_***_*****", line 355
ORA-06512: at line 1

And at the time of the original issue:

KCF: write/open error block=0x2fb23 online=1
     file=177 /data/ora9i/live/db3b/nsbme.dbf
     error=27072 txt: 'IBM AIX RISC System/6000 Error: 5: I/O error
Additional information: 195363'
Automatic datafile offline due to write error on
file 177: /data/ora9i/live/db3b/nsbme.dbf

Best Answer

Oracle provides the following information for this error message:

ORA-00376 file string cannot be read at this time

Cause: An attempt was made to read from a file that is not readable. Most likely the file is offline.

Action: Check the state of the file. Bring it online.

Their logic for not including this error message into the alert log is related to the fact that the alert log is to show messages received by the background processes that make up the instance. User session error messages could indicate larger problems with the instance, but all user session error messages are not indicators of instance problems. (ORA-00001, for example)