回滾段資料檔(如 rbs01.dbf)誤刪會導致資料庫無法啟動。本文提供在歸檔模式下、利用 SYSTEM 回滾段暫時掛載、離線損壞檔案、不完整恢復、重建回滾段的完整操作步驟,已在 HP-UX 10.20 及 Solaris 2.5 驗證通過。
SHUTDOWN ABORT;
-- 編輯 init.ora
rollback_segments = (system)
_corrupted_rollback_segments = (r01,r02,r03,r04)
STARTUP MOUNT;
僅啟用 SYSTEM 回滾段,將損壞的公用回滾段標記為損壞,繞過其檢查。
ALTER DATABASE DATAFILE '##/##/rbs01.dbf' OFFLINE DROP;
RECOVER DATABASE USING BACKUP CONTROLFILE;
-- 依提示輸入對應 SEQUENCE# 的線上日誌路徑,或輸入 AUTO
ALTER DATABASE OPEN RESETLOGS;
OFFLINE DROP 從控制檔移除該檔案;RESETLOGS 重置日誌序列,完成不完整恢復。
ALTER ROLLBACK SEGMENT r01 OFFLINE DROP;
... (r02-r04 同理)
DROP TABLESPACE rbs INCLUDING CONTENTS;
CONNECT INTERNAL;
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;
... (r02-r04 同理)
ALTER ROLLBACK SEGMENT r01 ONLINE;
... (r02-r04 同理)
SHUTDOWN ABORT;
-- 編輯 init.ora
rollback_segments = (r01,r02,r03,r04)
-- 移除 _corrupted_rollback_segments
STARTUP;
RECOVER DATABASE USING BACKUP CONTROLFILE。_corrupted_rollback_segments 為隱藏參數,僅供緊急恢復使用,恢復完成後必須移除。RECOVER DATABASE USING BACKUP CONTROLFILE;否則需手動指定日誌。