Oracle

是什麼阻止了警報日誌中出現 ORA-00376 錯誤?

  • May 14, 2017

一夜之間硬碟驅動器故障會產生各種副作用,包括留下一個需要恢復的數據文件:

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

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

現在一切都恢復正常,但仍有一個謎團:在恢復之前,當批處理作業嘗試訪問數據文件中的段時,客戶端應用程序將 ORA-00376 記錄到日誌表中。然而這個錯誤並沒有出現在警報日誌中,這怎麼會發生呢?

在 ORA-00376 錯誤發生時,警報日誌中確實出現了以下內容:

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

在原始問題發生時:

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

Oracle為該錯誤消息提供了以下資訊:

ORA-00376 文件字元串此時無法讀取

**原因:**試圖從不可讀的文件中讀取。該文件很可能處於離線狀態。

**行動:**檢查文件的狀態。把它放到網上。

他們不將此錯誤消息包含在警報日誌中的邏輯與警報日誌將顯示組成實例的後台程序收到的消息這一事實有關。使用者會話錯誤消息可能表明實例存在較大問題,但所有使用者會話錯誤消息都不是實例問題的指標。(例如 ORA-00001)

引用自:https://dba.stackexchange.com/questions/147167