情境:控制檔備份完成後,新增了表空間 INDX 並建立測試表,隨後所有控制檔遺失。需使用備份控制檔恢復,並正確處理備份後新增的資料檔(File#6)。
RMAN TARGET / CATALOG RC_ADMIN/RC_ADMIN@prod3
BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
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;
RM -RF /u01/app/oracle/oradata/PROD2/control*
-- Alert Log 回報 ORA-00210/ORA-00202
SHUTDOWN ABORT;
STARTUP NOMOUNT;
RMAN TARGET / CATALOG RC_ADMIN/RC_ADMIN@prod3
RESTORE CONTROLFILE;
ALTER DATABASE MOUNT;
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。
-- 在 SQL*Plus 執行(勿用 RMAN)
ALTER DATABASE CREATE DATAFILE 6 AS '/u01/app/oracle/oradata/PROD2/indx01.dbf';
ALTER DATABASE DATAFILE 6 ONLINE;
RECOVER DATABASE USING BACKUP CONTROLFILE;
-- 提示指定歸檔日誌,輸入 AUTO 或具體路徑
-- 若所需歸檔尚未產生(如 sequence#5 為當前 Redo),指定線上 Redo:
/u01/app/oracle/oradata/PROD2/redo02.log
ALTER DATABASE OPEN RESETLOGS;
SELECT * FROM test;
-- 8 筆資料正常,恢復成功
ALTER DATABASE CREATE DATAFILE n AS 'path' 指定正確路徑。ALTER DATABASE DATAFILE n ONLINE,否則 RECOVER 仍報 ORA-01245。RECOVER DATABASE USING BACKUP CONTROLFILE 以便互動指定日誌。OPEN RESETLOGS,會重置日誌序號。此流程適用於「控制檔全毀、備份控制檔較舊、中間有新增資料檔」的典型災難恢復場景。