使用者誤刪除回滾表空間 rbs 資料檔 rbs01.dbf,導致資料庫無法正常啟動。回滾段記錄變更資訊,支援讀一致性與恢復;公用回滾段故障可暫用 SYSTEM 回滾段替代,使資料庫 MOUNT 成功。
SHUTDOWN ABORT;
-- 編輯 init<SID>.ora
rollback_segments = (system)
_corrupted_rollback_segments = (r01,r02,r03,r04)
STARTUP MOUNT;
使用隱藏參數 _corrupted_rollback_segments 標記損壞回滾段,配合 SYSTEM 回滾段啟動執行個體。
ALTER DATABASE DATAFILE '##/##/rbs01.dbf' OFFLINE DROP;
RECOVER DATABASE USING BACKUP CONTROLFILE;
-- 依序號輸入建議的線上日誌檔
ALTER DATABASE OPEN RESETLOGS;
OFFLINE DROP 將檔案從控制檔移除,RESETLOGS 重置日誌序列,適用不完整恢復。
-- 移除舊回滾段
ALTER ROLLBACK SEGMENT r01 OFFLINE DROP;
...
DROP TABLESPACE rbs INCLUDING CONTENTS;
-- 重建
CREATE ROLLBACK SEGMENT ro TABLESPACE system;
ALTER ROLLBACK SEGMENT ro ONLINE;
CREATE TABLESPACE rbs DATAFILE '##/##/rbs01.dbf' SIZE ##K;
CREATE ROLLBACK SEGMENT r01 TABLESPACE rbs;
... (r01-r04)
ALTER ROLLBACK SEGMENT r01 ONLINE;
... (r01-r04)
SHUTDOWN ABORT;
-- 編輯 init<SID>.ora
rollback_segments = (r01,r02,r03,r04)
-- 移除 _corrupted_rollback_segments
STARTUP;
ARCHIVELOG 模式下執行,具備完整歸檔日誌RESETLOGS 會導致未歸檔的重做日誌資料永久遺失