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

Oracle 使用備份控制檔恢復,並處理備份後新增表空間

     編輯:Oracle 教學

Oracle 使用備份控制檔恢復,並處理備份後新增表空間

情境:控制檔備份完成後,新增了表空間 INDX 並建立測試表,隨後所有控制檔遺失。需使用備份控制檔恢復,並正確處理備份後新增的資料檔(File#6)。

完整恢復步驟實錄

1. 完整備份(含歸檔)


RMAN TARGET / CATALOG RC_ADMIN/RC_ADMIN@prod3
BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

2. 備份後新增表空間與測試資料


CREATE TABLESPACE indx
DATAFILE '/u01/app/oracle/oradata/PROD2/indx01.dbf' SIZE 10M;

CREATE TABLE test TABLESPACE indx AS SELECT * FROM scott.emp;
-- 刪除部份資料模擬損毀
DELETE test WHERE deptno=30; COMMIT;
ALTER SYSTEM SWITCH LOGFILE;

3. 刪除所有控制檔模擬災難


RM -RF /u01/app/oracle/oradata/PROD2/control*
-- Alert Log 回報 ORA-00210/ORA-00202

4. 關閉資料庫至 NOMOUNT,還原控制檔


SHUTDOWN ABORT;
STARTUP NOMOUNT;

RMAN TARGET / CATALOG RC_ADMIN/RC_ADMIN@prod3
RESTORE CONTROLFILE;
ALTER DATABASE MOUNT;

5. 嘗試 RECOVER DATABASE 遇到 File#6 未知


RMAN> RECOVER DATABASE;
ORA-01111: name for data file 6 is unknown - rename to correct file
ORA-01110: data file 6: '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00006'

控制檔備份時尚無 File#6,故還原後顯示 UNKNOWN。

6. 重建 File#6 並上線


-- 在 SQL*Plus 執行(勿用 RMAN)
ALTER DATABASE CREATE DATAFILE 6 AS '/u01/app/oracle/oradata/PROD2/indx01.dbf';
ALTER DATABASE DATAFILE 6 ONLINE;

7. 使用備份控制檔進行介質恢復


RECOVER DATABASE USING BACKUP CONTROLFILE;
-- 提示指定歸檔日誌,輸入 AUTO 或具體路徑
-- 若所需歸檔尚未產生(如 sequence#5 為當前 Redo),指定線上 Redo:
/u01/app/oracle/oradata/PROD2/redo02.log

8. 開啟資料庫並驗證


ALTER DATABASE OPEN RESETLOGS;
SELECT * FROM test;
-- 8 筆資料正常,恢復成功

關鍵注意事項

  1. 重新建立資料檔:ALTER DATABASE CREATE DATAFILE n AS 'path' 指定正確路徑。
  2. 上線資料檔:ALTER DATABASE DATAFILE n ONLINE,否則 RECOVER 仍報 ORA-01245。
  3. 使用備份控制檔恢復時,勿用 RMAN RECOVER,需在 SQL*Plus 執行 RECOVER DATABASE USING BACKUP CONTROLFILE 以便互動指定日誌。
  4. RESETLOGS 開啟:使用備份控制檔恢復後,必須 OPEN RESETLOGS,會重置日誌序號。

此流程適用於「控制檔全毀、備份控制檔較舊、中間有新增資料檔」的典型災難恢復場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved