Oracle資料庫RMAN小結之恢復部分

物理狂人發表於2011-12-23

恢復分為完全恢復和不完全恢復

1)完全恢復

關閉資料庫
RMAN> shutdown immediate;

資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉

刪除users資料檔案
F:\oracle\product\10.2.0\db_1\oradata\cxjuser01.dbf

開啟資料庫,提示需要恢復資料檔案4
RMAN> startup

已連線到目標資料庫 (未啟動)
Oracle 例項已啟動
資料庫已裝載

恢復最新的資料檔案4
RMAN> restore datafile 4;

啟動 restore 於 23-12月-11
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00004恢復到F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF
通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNNDF_AAAAAAA_7H8G9K77_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNNDF_AAAAAAA_7H8G9K77_.BKP 標記 = AAAAAAA
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
完成 restore 於 23-12月-11

此時資料檔案4的scn與整個資料庫是不一致,所以需要恢復recover資料檔案4,包括恢復增量備份和之後日誌中的操作

RMAN> recover datafile 4;

啟動 recover 於 23-12月-11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163049_7H8H1STY_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163049_7H8H1STY_.BKP 標記 = TAG20111223T163049
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163054_7H8H1Z9O_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163054_7H8H1Z9O_.BKP 標記 = TAG20111223T163054
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163100_7H8H24YG_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163100_7H8H24YG_.BKP 標記 = TAG20111223T163100
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163109_7H8H2G0B_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163109_7H8H2G0B_.BKP 標記 = TAG20111223T163109
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02

正常開啟資料庫
RMAN> alter database open;

資料庫已開啟

2)不完全恢復

包含:基於scn、基於時間、基於日誌sequence三種

建立測試表t1
SQL> create table t1 as select * from dba_objects;

表已建立。

SQL> select count(*) from t1;

  COUNT(*)
----------
     50318

獲取當前資料的scn
SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     648196

刪除t1的資料
SQL> truncate table t1;

表被截斷。

關閉資料庫併到mount階段
RMAN> shutdown immediate;

資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉

RMAN> startup mount;

已連線到目標資料庫 (未啟動)
Oracle 例項已啟動
資料庫已裝載

系統全域性區域總計     612368384 位元組

Fixed Size                     1250428 位元組
Variable Size                192940932 位元組
Database Buffers             411041792 位元組
Redo Buffers                   7135232 位元組

注:此時備份有關的資訊是存放在控制檔案中的,也可以將備份資訊存放在目錄資料庫中

還原並恢復資料庫
基於scn
RMAN> run{
2> set until scn  648196;
3> restore database;
4> recover database;
5> alter database open resetlogs;}

正在執行命令: SET until clause

啟動 restore 於 23-12月-11
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\SYSTEM01.DBF
正將資料檔案00002恢復到F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\UNDOTBS01.DBF
正將資料檔案00003恢復到F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\SYSAUX01.DBF
正將資料檔案00005恢復到F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\EXAMPLE01.DBF
通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNNDF_TAG20111223T155212_7H8DSDD2_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNNDF_TAG20111223T155212_7H8DSDD2_.BKP 標記 = TAG20111223T155212
通道 ORA_DISK_1: 恢復完成, 用時: 00:01:16
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00004恢復到F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF
通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNNDF_AAAAAAA_7H8G9K77_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNNDF_AAAAAAA_7H8G9K77_.BKP 標記 = AAAAAAA
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
完成 restore 於 23-12月-11

啟動 recover 於 23-12月-11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163049_7H8H1STY_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163049_7H8H1STY_.BKP 標記 = TAG20111223T163049
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163054_7H8H1Z9O_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163054_7H8H1Z9O_.BKP 標記 = TAG20111223T163054
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163100_7H8H24YG_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163100_7H8H24YG_.BKP 標記 = TAG20111223T163100
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
通道 ORA_DISK_1: 正在開始恢復增量資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
資料檔案 00004 的恢復目標: F:\ORACLE\PRODUCT\10.2.0\DB_1\ORADATA\CXJ\USERS01.DBF

通道 ORA_DISK_1: 正在讀取備份段 F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_ARE
A\CXJ\BACKUPSET\2011_12_23\O1_MF_NNND1_TAG20111223T163109_7H8H2G0B_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\CXJ\BACKUPSET\2011_12
_23\O1_MF_NNND1_TAG20111223T163109_7H8H2G0B_.BKP 標記 = TAG20111223T163109
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:01

正在開始介質的恢復
介質恢復完成, 用時: 00:00:10

完成 recover 於 23-12月-11

資料庫已開啟

注:在9i中,resetlogs將會把線上重做日誌檔案內容清空;而10g中,resetlogs將把線上日誌歸檔,然後將重做日誌檔案清空,所以10g雖然resetlogs之後,之前的線上重做日誌並沒有丟失,只是歸檔了。

重新檢視t1表
SQL> select count(*) from t1;

  COUNT(*)
----------
     50318

基於時間的恢復
RMAN> run{
2> set until time='2011-12-23 19:40:00';
3> restore database;
4> recover database;
5> alter databae open resetlogs;}

基於日誌sequence的恢復(恢復到sequence 9,不包含10)
RMAN> run{
2> set until sequence 10;
3> restore database;
4> recover database;
5> alter database open resetlogs;}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24104518/viewspace-713887/,如需轉載,請註明出處,否則將追究法律責任。

相關文章