RMAN學習-資料檔案損壞

abstractcyj發表於2015-01-13
在SCOTT模式下建立一個表:
  create table test01 as select rownum rn from dual connect by rownum <= 1000;

  update test01 set rn = rn*2;

然後在RMAN中使用backup database plus archivelog做一個備份之後關閉資料庫。

預設情況下test01表位於表空間USERS01。將資料檔案移動到其他位置。

啟動資料庫時,發生錯誤:
SQL> startup
ORACLE 例程已經啟動。


Total System Global Area 2488635392 bytes
Fixed Size                  2798928 bytes
Variable Size             721423024 bytes
Database Buffers         1744830464 bytes
Redo Buffers               19582976 bytes
資料庫裝載完畢。
ORA-01157: 無法標識/鎖定資料檔案 6 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 6: 'C:\ORACLE\ORADATA\ORCL\USERS01.DBF'

進入RMAN, 使用list backup檢視現有的備份

  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 191358074  13-1月 -15 C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
  2       Full 191358074  13-1月 -15 C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF
  3       Full 191358074  13-1月 -15 C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
  5       Full 191358074  13-1月 -15 C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
  6       Full 191358074  13-1月 -15 C:\ORACLE\ORADATA\ORCL\USERS01.DBF
可以看到, 缺失的資料檔案編號是6。

RMAN中輸入命令:
RMAN> restore datafile 6;


啟動 restore 於 13-1月 -15
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=62 裝置型別=DISK


通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00006 還原到 C:\ORACLE\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 正在讀取備份片段 C:\ORACLE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\20
15_01_13\O1_MF_NNNDF_TAG20150113T202605_BCB3PXYS_.BKP
通道 ORA_DISK_1: 段控制程式碼 = C:\ORACLE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\2015_01_13
\O1_MF_NNNDF_TAG20150113T202605_BCB3PXYS_.BKP 標記 = TAG20150113T202605
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
完成 restore 於 13-1月 -15


RMAN> recover datafile 6;


啟動 recover 於 13-1月 -15
使用通道 ORA_DISK_1


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


完成 recover 於 13-1月 -15

RMAN> alter database open;



至此, 資料檔案恢復完成。

我們也可以指定恢復的資料檔案為其他名字,使用如下RMAN指令碼

 set newname for datafile 6 to 'c:\users01.dbf';  --將資料檔案恢復至其他物理位置


run{
startup mount
set newname for datafile 6 to 'c:\users01.dbf'; 
restore datafile 6; 
switch datafile 6;
recover datafile 6;
alter database open;
}


RMAN> run{
2> startup mount
3> set newname for datafile 6 to 'F:\users01.dbf';
4> restore datafile 6;
5> switch datafile 6;
6> recover datafile 6;
7> alter database open;
8> }


Oracle 例項已啟動
資料庫已裝載


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


Fixed Size                     2798928 位元組
Variable Size                721423024 位元組
Database Buffers            1744830464 位元組
Redo Buffers                  19582976 位元組


正在執行命令: SET NEWNAME


啟動 restore 於 13-1月 -15
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=3 裝置型別=DISK


通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 將資料檔案 00006 還原到 F:\users01.dbf
通道 ORA_DISK_1: 正在讀取備份片段 C:\ORACLE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\20
15_01_13\O1_MF_NNNDF_TAG20150113T202605_BCB3PXYS_.BKP
通道 ORA_DISK_1: 段控制程式碼 = C:\ORACLE\FAST_RECOVERY_AREA\ORCL\BACKUPSET\2015_01_13
\O1_MF_NNNDF_TAG20150113T202605_BCB3PXYS_.BKP 標記 = TAG20150113T202605
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:01
完成 restore 於 13-1月 -15


資料檔案 6 已轉換成資料檔案副本
輸入資料檔案副本 RECID=2 STAMP=868913855 檔名=F:\USERS01.DBF


啟動 recover 於 13-1月 -15
使用通道 ORA_DISK_1


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


完成 recover 於 13-1月 -15


已處理語句

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

相關文章