做restore時用datafilecopy恢復時,影響資料檔案的大小

趙宇發表於2008-05-21


SQL> alter tablespace test read write;

表空間已更改。

SQL> alter database datafile 6 offline;

資料庫已更改。

SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出現錯誤:
ORA-01113: 檔案 6 需要介質恢復
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'

我們預先看一下恢復使用以前大小的資料拷貝檔案:

RMAN> restore preview from datafilecopy until scn 725421 datafile 6;

啟動 restore 於 2008-05-21 15:28:16
使用通道 ORA_DISK_1


資料檔案副本列表
關鍵字     檔案 S 完成時間            Ckp SCN    Ckp 時間            名稱
------- ---- - ------------------- ---------- ------------------- ----
499     6    A 2008-05-05 15:32:16 725421     2008-05-05 14:07:38 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 05/21/2008 15:26:45 上) 失敗
RMAN-06021: FROM DATAFILECCOPY/BACKUPSET 可能未使用存檔日誌指定

用以前大小的datafilecopy 做恢復:


RMAN> restore from datafilecopy until scn 725421 datafile 6;

啟動 restore 於 2008-05-21 15:28:31
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在還原資料檔案00006
輸入資料檔案副本 recid=3 stamp=653931136 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1
資料檔案 00006 的還原目標: D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF

故障轉移到上一個備份

建立資料檔案 fno = 6 名稱 = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 05/21/2008 15:28:33 上) 失敗
ORA-01119: 建立資料庫檔案 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF' 時出錯
ORA-27038: 所建立的檔案已存在
OSD-04010: 指定了 選項, 但檔案已經存在

我們看到不能用以前的datafilecopy還原

我們看RMAN選擇的還原方式,用當前的datafilecopy和歸檔進行:


RMAN> restore preview datafile 6;

啟動 restore 於 2008-05-21 15:30:45
使用通道 ORA_DISK_1


資料檔案副本列表
關鍵字     檔案 S 完成時間            Ckp SCN    Ckp 時間            名稱
------- ---- - ------------------- ---------- ------------------- ----
661     6    A 2008-05-21 14:18:29 903795     2008-05-15 15:23:14 +DISK_GROUP2/devdb/datafile/test.313.655309109


已存檔的日誌副本列表
關鍵字     Thrd Seq     S 時間下限            名稱
------- ---- ------- - ------------------- ----
441     1    14      A 2008-05-15 15:04:48 +DISK_GROUP2/devdb/archivelog/2008_05_19/thread_1_seq_14.305.655117381
442     1    15      A 2008-05-19 09:03:00 +DISK_GROUP2/devdb/archivelog/2008_05_20/thread_1_seq_15.304.655220939
443     1    16      A 2008-05-20 13:48:58 +DISK_GROUP2/devdb/archivelog/2008_05_20/thread_1_seq_16.287.655232693
介質恢復啟動 SCN 是 903795
恢復範圍必須超出 SCN 903795 才能清除資料檔案模糊性
完成 restore 於 2008-05-21 15:30:45

RMAN> restore  datafile 6;

啟動 restore 於 2008-05-21 15:32:10
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在還原資料檔案00006
輸入資料檔案副本 recid=9 stamp=655309109 檔名=+DISK_GROUP2/devdb/datafile/test.313.655309109
資料檔案 00006 的還原目標: D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF

故障轉移到上一個備份

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
正將資料檔案00006還原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
通道 ORA_DISK_1: 正在讀取備份片段 F:\RMAN\DB_0DJGS3HU_DEVDB_13

故障轉移到上一個備份

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
正將資料檔案00006還原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
通道 ORA_DISK_1: 正在讀取備份片段 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST_COPY.DBF

故障轉移到上一個備份

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
正將資料檔案00006還原到D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
通道 ORA_DISK_1: 正在讀取備份片段 +DISK_GROUP2/devdb/backupset/2008_05_06/nnndf0_tag20080506t163654_0.303.654021415

故障轉移到上一個備份

通道 ORA_DISK_1: 正在還原資料檔案00006
輸入資料檔案副本 recid=3 stamp=653931136 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1
資料檔案 00006 的還原目標: D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF

故障轉移到上一個備份


建立資料檔案 fno = 6 名稱 = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 05/21/2008 15:32:20 上) 失敗
ORA-01119: 建立資料庫檔案 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF' 時出錯
ORA-27038: 所建立的檔案已存在
OSD-04010: 指定了 選項, 但檔案已經存在

也不能還原,但我們發現datafile大小發生了變化.


SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出現錯誤:
ORA-01122: 資料庫檔案 6 驗證失敗
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'
ORA-01200: 638 的實際檔案大小小於 1280 塊的正確大小

實際上已經還原了datafilecopy中的資料塊大小,這個是之前499的datafilecopy.


RMAN> restore from datafilecopy datafile 6;

啟動 restore 於 2008-05-21 15:40:13
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在還原資料檔案00006
輸入資料檔案副本 recid=9 stamp=655309109 檔名=+DISK_GROUP2/devdb/datafile/test.313.655309109
資料檔案 00006 的還原目標: D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF

故障轉移到上一個備份

建立資料檔案 fno = 6 名稱 = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: restore 命令 (在 05/21/2008 15:40:14 上) 失敗
ORA-01119: 建立資料庫檔案 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF' 時出錯
ORA-27038: 所建立的檔案已存在
OSD-04010: 指定了 選項, 但檔案已經存在

我們再用當前的datafilecopy還原一次,我們發現資料塊和當前一樣,只是報需要介質恢復的錯誤.

SQL> l
  1* alter database datafile 6 online
SQL> /
alter database datafile 6 online
*
第 1 行出現錯誤:
ORA-01113: 檔案 6 需要介質恢復
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'

 

SQL> recover datafile 6;
完成介質恢復。

 

SQL> alter tablespace test online;

表空間已更改。

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

相關文章