首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 回滾段資料檔誤刪除的完整恢復流程

     編輯:Oracle 資料庫基礎

回滾段資料檔(如 rbs01.dbf)誤刪會導致資料庫無法啟動。本文提供在歸檔模式下、利用 SYSTEM 回滾段暫時掛載、離線損壞檔案、不完整恢復、重建回滾段的完整操作步驟,已在 HP-UX 10.20 及 Solaris 2.5 驗證通過。

恢復前提

  • 資料庫運行於歸檔模式(ARCHIVELOG)。
  • 擁有有效的控制檔與線上重做日誌。

步驟 1:修改參數檔啟動至 MOUNT 階段

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

僅啟用 SYSTEM 回滾段,將損壞的公用回滾段標記為損壞,繞過其檢查。

步驟 2:離線損壞檔案、恢復並 OPEN RESETLOGS

ALTER DATABASE DATAFILE '##/##/rbs01.dbf' OFFLINE DROP;
RECOVER DATABASE USING BACKUP CONTROLFILE;
-- 依提示輸入對應 SEQUENCE# 的線上日誌路徑,或輸入 AUTO
ALTER DATABASE OPEN RESETLOGS;

OFFLINE DROP 從控制檔移除該檔案;RESETLOGS 重置日誌序列,完成不完整恢復。

步驟 3:刪除舊回滾段與表空間、重建新回滾段

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 同理)

步驟 4:切換參數檔正常啟動

SHUTDOWN ABORT;
-- 編輯 init.ora
rollback_segments = (r01,r02,r03,r04)
-- 移除 _corrupted_rollback_segments
STARTUP;

關鍵提醒

  1. 全程需在歸檔模式下操作,非歸檔模式無法執行 RECOVER DATABASE USING BACKUP CONTROLFILE。
  2. _corrupted_rollback_segments 為隱藏參數,僅供緊急恢復使用,恢復完成後必須移除。
  3. 若有備份控制檔,優先使用 RECOVER DATABASE USING BACKUP CONTROLFILE;否則需手動指定日誌。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved