誤刪Oracle數據文件的恢復方法

今天在學習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;    --數據文件在線
數據庫已更改。


此時已經恢復完成


發佈了26 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章