ORA-00600 [4194] 表示 Undo Segment 內部結構不一致,常因存儲故障、實例崩潰導致。若無可用備份,唯一自救路徑是:標記損壞 Undo Segment 為腐壞 → 強制啟動 → 建立新 Undo 表空間 → 切換並刪除舊表空間 → 清理參數重啟。本文還原實戰全過程,附 Alert 日誌關鍵標記與隱含參數用法。
Errors in file .../conner_smon_17113.trc:
ORA-00600: internal error code, arguments: [4194], [43], [46], [], [], [], [], []
Errors in file .../conner_ora_17121.trc:
ORA-00600: internal error code, arguments: [4194], [45], [44], [], [], [], [], []
Alert 關鍵行:
Undo Segment 11 Onlined
Undo Segment 12 Onlined
Undo Segment 13 Onlined
Successfully onlined Undo Tablespace 16.
對應 AUM (Auto Undo Management) 下的段名:_SYSSMU11$、_SYSSMU12$、_SYSSMU13$。
._corrupted_rollback_segments = '_SYSSMU11$', '_SYSSMU12$', '_SYSSMU13$'
注意:參數名前加 ._ 表示隱含參數,需雙引號包裹段名,逗號分隔。
SQL> STARTUP PFILE=initconner.ora
Oracle instance started.
Database mounted.
Database opened.
SMON: mark undo segment 11 as needs recovery
SMON: mark undo segment 12 as needs recovery
SMON: mark undo segment 13 as needs recovery
Created Undo Segment _SYSSMU1$
...
Completed: ALTER DATABASE OPEN
實例成功開啟,但舊 Undo 段標記為 NEEDS RECOVERY,不可用。
-- 1. 建立新 Undo 表空間
CREATE UNDO TABLESPACE undotbs1
DATAFILE '/opt/oracle/oradata/conner/undotbs1.dbf' SIZE 10M AUTOEXTEND ON;
-- 2. 切換至新 Undo 表空間
ALTER SYSTEM SET undo_tablespace = undotbs1;
-- 3. 刪除舊損壞 Undo 表空間
DROP TABLESPACE undotbs2 INCLUDING CONTENTS AND DATAFILES;
Alert 會顯示新段 _SYSSMU2$~_SYSSMU14$ 建立上線,舊表空間 16 成功切出。
._corrupted_rollback_segments,設定 *.undo_tablespace='UNDOTBS1'CREATE SPFILE FROM PFILE;SHUTDOWN IMMEDIATE; STARTUP;
Undo Segment 2 Onlined
...
Undo Segment 14 Onlined
Successfully onlined Undo Tablespace 1.
無 NEEDS RECOVERY 訊息,恢復正常。
EXPDP FULL=Y (或 EXP FULL=Y)IMPDP FULL=Y理由:強制啟動後資料庫邏輯上可能殘留未提交事務、Undo 元數據不一致,唯有邏輯重建才能獲得乾淨基線。
| 操作 | 風險 | 建議 |
|---|---|---|
| 直接修改 SPFILE 設隱含參數 | 語法錯誤導致無法啟動 | **必須用 PFILE 啟動**,驗證無誤再生成 SPFILE |
| 段名寫錯 | 跳過錯誤段、遺漏損壞段 | 從 Alert Undo Segment N Onlined 映射 _SYSSMUN$ |
| 刪除舊 Undo 表空間前未切換 | ORA-01548 / 實例崩潰 | 先 ALTER SYSTEM SET undo_tablespace 再 DROP |
| 跳過邏輯重建直接上線 | 潛在邏輯損壞後續爆發 | **強制要求 EXPDP/IMPDP 重建** |
ORA-00600 [4194] 是 Undo 段損壞的鐵證。**有備份走 RMAN 恢復;無備份走隱含參數強制啟動 → 重建 Undo → 邏輯重建** 三步曲。平時務必:UNDO_MANAGEMENT=AUTO、UNDO_RETENTION 合理、RMAN 含 VALIDATE CHECK LOGICAL 定期巡檢、多路徑存儲保護 Undo 表空間。