首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 7.x 回滾表空間資料檔誤刪除緊急恢復程序

     編輯:Oracle 資料庫相關知識

故障現象與影響

使用者誤刪除回滾表空間 rbs 資料檔 rbs01.dbf,導致資料庫無法正常啟動。回滾段記錄變更資訊,支援讀一致性與恢復;公用回滾段故障可暫用 SYSTEM 回滾段替代,使資料庫 MOUNT 成功。

四階段恢復程序

階段一:修改參數檔啟動至 MOUNT

SHUTDOWN ABORT;
-- 編輯 init<SID>.ora
rollback_segments = (system)
_corrupted_rollback_segments = (r01,r02,r03,r04)
STARTUP MOUNT;

使用隱藏參數 _corrupted_rollback_segments 標記損壞回滾段,配合 SYSTEM 回滾段啟動執行個體。

階段二:離線損壞檔案、恢復、RESETLOGS 開啟

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 模式下執行,具備完整歸檔日誌
  • 經驗證平台:HP-UX 10.20、Solaris 2.5
  • 資料遺失風險:RESETLOGS 會導致未歸檔的重做日誌資料永久遺失
  • Oracle 9i+ 環境建議改用 RMAN 區塊恢復或表空間時間點恢復 (TSPITR)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved