當 Oracle 讀取資料區塊發現不一致時拋出此錯誤,可能源自硬體 I/O 錯誤、作業系統緩衝問題、記憶體分頁錯誤、嘗試存取未格式化系統區塊、或資料檔溢位等。
Oracle 僅在「存取」到壞塊時才報錯,實際損壞可能發生在更早時間點。
SELECT owner, segment_name, segment_type
FROM dba_extents
WHERE file_id = <錯誤檔案號>
AND <錯誤區塊號> BETWEEN block_id AND block_id + blocks - 1;
直接 REBUILD INDEX 即可修復。
ANALYZE TABLE <table_name> VALIDATE STRUCTURE CASCADE;
init<sid>.ora 加入 event="10231 trace name context forever, level 10"STARTUP RESTRICTCREATE TABLE errortemp AS SELECT * FROM error;(跳過壞塊讀取其餘資料)errortemp 改回原表名立即聯繫 Oracle Support 協助處理,切勿自行嘗試修復,以免擴大損壞範圍。
更多進階技巧(如使用 ROWID 搶救資料)請參考 Oracle 官方故障排除手冊。