Oracle 7.x中回滾段表空間 (RBS) 數據文件被誤刪除,會導致實例無法正常Open (報ORA-01157/ORA-01110)。本文記錄經HP-UX 10.20與Solaris 2.5雙平台驗證的零數據損失恢復SOP:修改參數文件啟用System回滾段 → Mount實例 → 離線損壞文件 → 介質恢復 → 重建回滾段表空間與回滾段 → 切回正常回滾段啟動。
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/u02/oradata/rbs01.dbf'
-- 實例處於MOUNT狀態,無法OPEN
SVRMGR> SHUTDOWN ABORT
$ vi $ORACLE_HOME/dbs/init.ora
# 修改/新增參數
rollback_segments = (system)
_corrupted_rollback_segments = (r01,r02,r03,r04) -- 具體丟失的回滾段名
SVRMGR> STARTUP MOUNT
原理:System回滾段在SYSTEM表空間,隨數據庫創建自動Online,不依賴RBS表空間。通過參數強制實例僅使用System回滾段,繞過損壞的RBS表空間完成Mount。
SVRMGR> ALTER DATABASE DATAFILE '/u02/oradata/rbs01.dbf' OFFLINE DROP;
SVRMGR> RECOVER DATABASE USING BACKUP CONTROLFILE;
-- 提示指定歸檔日誌序列號,按順序應用至最新
SVRMGR> ALTER DATABASE OPEN RESETLOGS;
關鍵點:
- OFFLINE DROP 從控制文件中移除該文件引用,避免Open時檢查失敗。
- USING BACKUP CONTROLFILE 因控制文件記錄了已刪除的文件,需用備份控制文件恢復。
- RESETLOGS 重置線上日誌序列,配合控制文件重建。
SVRMGR> ALTER ROLLBACK SEGMENT r01 OFFLINE DROP;
SVRMGR> ALTER ROLLBACK SEGMENT r02 OFFLINE DROP;
SVRMGR> ALTER ROLLBACK SEGMENT r03 OFFLINE DROP;
SVRMGR> ALTER ROLLBACK SEGMENT r04 OFFLINE DROP;
SVRMGR> DROP TABLESPACE rbs INCLUDING CONTENTS;
SVRMGR> CONNECT INTERNAL
SVRMGR> CREATE ROLLBACK SEGMENT ro TABLESPACE system;
SVRMGR> ALTER ROLLBACK SEGMENT ro ONLINE;
SVRMGR> CREATE TABLESPACE rbs DATAFILE '/u02/oradata/rbs01.dbf' SIZE 100M;
SVRMGR> CREATE ROLLBACK SEGMENT r01 TABLESPACE rbs;
SVRMGR> CREATE ROLLBACK SEGMENT r02 TABLESPACE rbs;
SVRMGR> CREATE ROLLBACK SEGMENT r03 TABLESPACE rbs;
SVRMGR> CREATE ROLLBACK SEGMENT r04 TABLESPACE rbs;
SVRMGR> ALTER ROLLBACK SEGMENT r01 ONLINE;
SVRMGR> ALTER ROLLBACK SEGMENT r02 ONLINE;
SVRMGR> ALTER ROLLBACK SEGMENT r03 ONLINE;
SVRMGR> ALTER ROLLBACK SEGMENT r04 ONLINE;
SVRMGR> SHUTDOWN ABORT
$ vi $ORACLE_HOME/dbs/init.ora
# 恢復參數
rollback_segments = (r01,r02,r03,r04)
# 刪除 _corrupted_rollback_segments 行
SVRMGR> STARTUP
SELECT segment_name, status FROM dba_rollback_segs; 顯示r01-r04 ONLINE。SELECT file_name FROM dba_data_files WHERE tablespace_name='RBS'; 新文件存在。chattr +i 關鍵數據文件 (Linux) / ACL只讀權限 (Windows)。RESTORE VALIDATE DATABASE。V$RECOVER_FILE、V$DATAFILE 狀態異常即時告警。rm數據文件,遷移/重命名必須走ALTER DATABASE RENAME FILE流程。此恢復流程在歸檔模式下實現零數據損失。核心思想:用System回滾段作「拐杖」掛載實例,離線損壞文件,介質恢復後重建業務回滾段。同理可擴展至Oracle 8i/9i/10g非UNDO表空間管理模式。