今天在學習rman的時候想到一個實例,誤刪Oracle數據文件的恢復方法。
再看過程之前我們先使用RMAN 對數據庫進行一次全量備份
RMAN> backup database;
啓動 backup 於 26-4月 -13
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=135 devtype=DISK
通道 ORA_DISK_1: 啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集中的數據文件
輸入數據文件 fno=00001 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
輸入數據文件 fno=00003 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
輸入數據文件 fno=00005 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
輸入數據文件 fno=00006 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER01.DBF
輸入數據文件 fno=00002 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
輸入數據文件 fno=00007 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER02.DBF
輸入數據文件 fno=00008 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER03.DBF
輸入數據文件 fno=00004 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 正在啓動段 1 於 26-4月 -13
通道 ORA_DISK_1: 已完成段 1 於 26-4月 -13
段句柄=F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_04_26\O1
_MF_NNNDF_TAG20130426T213057_8QO0DM1G_.BKP 標記=TAG20130426T213057 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:02:05
通道 ORA_DISK_1: 啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集中的數據文件
備份集中包括當前控制文件
在備份集中包含當前的 SPFILE
通道 ORA_DISK_1: 正在啓動段 1 於 26-4月 -13
通道 ORA_DISK_1: 已完成段 1 於 26-4月 -13
段句柄=F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_04_26\O1
_MF_NCSNF_TAG20130426T213057_8QO0JZNJ_.BKP 標記=TAG20130426T213057 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:28
完成 backup 於 26-4月 -13
SQL> shutdown immediate;
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
接下來我們刪掉一個數據文件
SQL> startup
ORACLE 例程已經啓動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 184552324 bytes
Database Buffers 419430400 bytes
Redo Buffers 7135232 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 6 - 請參閱 DBWR 跟蹤文
ORA-01110: 數據文件 6: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER01.DBF'
此時數據庫是打不開的,我們先讓這個數據文件離線。
SQL> alter database datafile 6 offline;
數據庫已更改。
SQL> alter database open;
數據庫已更改。
接下來我們使RMAN進行恢復
RMAN> restore datafile 6;
啓動 restore 於 26-4月 -13
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=129 devtype=DISK
通道 ORA_DISK_1: 正在開始恢復數據文件備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的數據文件
正將數據文件00006恢復到F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER01.DBF
通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_ARE
L\BACKUPSET\2013_04_26\O1_MF_NNNDF_TAG20130426T213057_8QO0DM1G_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段句柄 = F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_0
O1_MF_NNNDF_TAG20130426T213057_8QO0DM1G_.BKP 標記 = TAG20130426T213057
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:16
完成 restore 於 26-4月 -13
SQL> select file_name from dba_data_files;
FILE_NAME
----------------------------------------------------------------------
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER01.DBF --此時數據文件已經恢復
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER02.DBF
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER03.DBF
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出現錯誤:
ORA-01113: 文件 6 需要介質恢復
ORA-01110: 數據文件 6: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FOUNDER01.DBF'
SQL> recover datafile 6;
完成介質恢復。
SQL> alter database datafile 6 online; --數據文件在線
數據庫已更改。
此時已經恢復完成