聖誕節前夕,某公司數據庫連環崩潰:
Dec 24 13:52:13 kernel: sda5: rw=0, want=18298437640, limit=163846872
Dec 24 13:52:13 kernel: attempt to access beyond end of device
... (大量同類錯誤,want 地址遠超 limit)
判斷:文件系統/磁盤控制器故障導致邏輯地址映射錯亂,數據文件物理損壞風險極高。
DBVERIFY - Verification starting : FILE = o1_mf_system_29448mn7_.dbf
Page 40 is influx - most likely media corrupt
Corrupt block relative dba: 0x00400028 (file 1, block 40)
Fractured block found during dbv:
type: 6 format: 2 rdba: 0x00400028
last change scn: 0x0000.18990f0e
consistency value in tail: 0xbc120601
check value in block header: 0xc0cb
computed block checksum: 0xb003
... (連續多頁報 Fractured block)
FRACTURED BLOCK 表示塊頭尾一致性校驗失敗,典型的介質損壞特徵。
ALTER DATABASE MOUNT
Errors in file .../stat_ora_4630.trc:
ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [11258908], [10375171], [0x0], [], [], [], []
ORA-600 signalled during: ALTER DATABASE MOUNT...
Corrupt block 1 found during reading backup piece, file=/.../snapcf_stat.f, corr_type=2
ORA-600 [kccpb_sanity_check_2] 表明控制文件備份片讀取時校驗失敗,無法識別數據文件結構。
fsck/chkdsk 修復元數據,盡量掛載唯讀搶數據。RESTORE CONTROLFILE → RECOVER DATABASE。CREATE CONTROLFILE) → RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL → 開啟 RESETLOGS。