RMAN備份與恢復(新舊控制檔案及歸檔日誌)測試

gaopengtttt發表於2009-06-07

(我的實驗)

一直知道我們公司使用的
backup format='G:\20090607rman\datafile\data_%s_%p_%T_%t.bak'
database plus archivelog  delete all input
format 'G:\20090607rman\archivelog\arc_%s_%p_%T_%t.bak';
來進行備份的,當然是LINUX系統,但是由於在家中沒有LINUX環境,就改用WINDOWS環境來做,理論是一樣的。該語句是進行RMAN的全備加上歸檔日誌的備份,當然也會備份控制檔案和SPFILE,但是我有時候就在想如果某一天公司的資料庫完全消失了(我說的消失的是某種原因下,資料庫完全不存在了,就像被解除安裝了一樣,也許是伺服器硬碟完全壞掉了),連DG都不能恢復的情況下,只留下了RMAN的備份(每天公司都會去用系統的TAR進行把所有的備份檔案壓縮然後ftp到其他地方)
然後需要如何去做那?
很可以確定的可以恢復,但是可以恢復到那個程度?完全恢復是肯定不可能的,因為當前的日誌組已經消失了,裡面記錄的所有操作資訊也就沒有了,所以資料丟失是肯定的。
現在的疑惑是:1、如果恢復是使用最新的控制檔案還是比較就的控制檔案,也許很多人會說最新的控制檔案,這個確實是對的,但是為了加深印象還是做一次實驗。
              2、如果我使用比較舊的控制檔案,裡面並沒有記錄新的歸檔備份集,ORACLE是否可以跨越歸檔備份集,然後進行恢復?
              3、如果我沒有使用delete all input,歸檔備份到備份集,而且在檔案系統中沒有刪除,是否可以找到?
              4、在RMAN自動全備的時候,控制檔案是在資料檔案備份前進行,還是之後,這個很重要,涉及到是否能記錄當前我們當前備份的資料檔案的備份資訊。
我就做了這一系列發散,然後開始做實驗來解答這一切。(用紅色標記試驗過程,用粉色標記重點
OK 開始
首先看看當前的日誌檔案序列
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1        359   52428800          1 NO       CURRENT               10863283 2009-6-7 19
         2          1        357   52428800          1 YES      INACTIVE              10863116 2009-6-7 19
         3          1        358   52428800          1 YES      ACTIVE                10863119 2009-6-7 19
359是當前日誌組,然後進行4次切換使用ALTER SYSTEM SWITCH LOGFILE,來模擬真實系統中的日誌滿後的切換
切換後的日誌組為
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1        362   52428800          1 YES      INACTIVE              10863613 2009-6-7 19
         2          1        363   52428800          1 NO       CURRENT               10863615 2009-6-7 19
         3          1        361   52428800          1 YES      INACTIVE              10863610 2009-6-7 19
363是現在的日誌組
然後我進行備份使用語句
backup format='G:\20090607rman\datafile\data_%s_%p_%T_%t.bak'
database plus archivelog  delete all input
format 'G:\20090607rman\archivelog\arc_%s_%p_%T_%t.bak';
為了能看清楚我只分配了一個通道,然後貼出所有的備份過程

啟動 backup 於 07-6月 -09
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =359 記錄 ID=6 時間戳=688939127
輸入存檔日誌執行緒 =1 序列 =360 記錄 ID=7 時間戳=688939129
輸入存檔日誌執行緒 =1 序列 =361 記錄 ID=8 時間戳=688939133
輸入存檔日誌執行緒 =1 序列 =362 記錄 ID=9 時間戳=688939137
輸入存檔日誌執行緒 =1 序列 =363 記錄 ID=10 時間戳=688939232
通道 ORA_DISK_1: 正在啟動段 1 於 07-6月 -09
通道 ORA_DISK_1: 已完成段 1 於 07-6月 -09
段控制程式碼=G:\20090607RMAN\ARCHIVELOG\ARC_2_1_20090607_688939233.BAK 標記=TAG200906
7T200032 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00359_0671122145.001 記錄 ID=6 時間戳
=688939127
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00360_0671122145.001 記錄 ID=7 時間戳
=688939129
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00361_0671122145.001 記錄 ID=8 時間戳
=688939133
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00362_0671122145.001 記錄 ID=9 時間戳
=688939137
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00363_0671122145.001 記錄 ID=10 時間戳
 =688939232
完成 backup 於 07-6月 -09

啟動 backup 於 07-6月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00001 name=E:\ORADATA\PP\SYSTEM01.DBF
輸入資料檔案 fno=00003 name=E:\ORADATA\PP\SYSAUX01.DBF
輸入資料檔案 fno=00002 name=E:\ORADATA\PP\UNDOTBS01.DBF
輸入資料檔案 fno=00008 name=E:\ORADATA\PP\BIGPP1.DBF
輸入資料檔案 fno=00005 name=E:\ORADATA\PP\TEST.DBF
輸入資料檔案 fno=00006 name=E:\ORADATA\PP\PP.DBF
輸入資料檔案 fno=00004 name=E:\ORADATA\PP\USERS01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 07-6月 -09
通道 ORA_DISK_1: 已完成段 1 於 07-6月 -09
段控制程式碼=G:\20090607RMAN\DATAFILE\DATA_3_1_20090607_688939237.BAK 標記=TAG2009060
T200036 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:04:56
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
備份集中包括當前控制檔案
在備份集中包含當前的 SPFILE
通道 ORA_DISK_1: 正在啟動段 1 於 07-6月 -09
通道 ORA_DISK_1: 已完成段 1 於 07-6月 -09
段控制程式碼=G:\20090607RMAN\DATAFILE\DATA_4_1_20090607_688939533.BAK 標記=TAG2009060
T200036 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:07
完成 backup 於 07-6月 -09

啟動 backup 於 07-6月 -09
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =364 記錄 ID=11 時間戳=688939541
通道 ORA_DISK_1: 正在啟動段 1 於 07-6月 -09
通道 ORA_DISK_1: 已完成段 1 於 07-6月 -09
段控制程式碼=G:\20090607RMAN\ARCHIVELOG\ARC_5_1_20090607_688939542.BAK 標記=TAG200906
7T200541 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00364_0671122145.001 記錄 ID=11 時間戳
 =688939541
完成 backup 於 07-6月 -09

根據順序能夠清楚的看到控制檔案是在資料檔案備份之後進行的,所以問題4可以解決了。
這裡也順便提下,其實這個備份語句做很好了在備份完後可以看到現在日誌組為

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1        365   52428800          1 NO       CURRENT               10863997 2009-6-7 20
         2          1        363   52428800          1 YES      INACTIVE              10863615 2009-6-7 19
         3          1        364   52428800          1 YES      ACTIVE                10863751 2009-6-7 20

實現了兩次切換,一次在備份資料檔案前一次在之後,這個是為了保證資料檔案備份的完整性,避免恢復時的問題。

然後我又進行了3次切換,語句一樣,模擬的是一個備份週期,然後日誌組序號來到了368
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1        368   52428800          1 YES      ACTIVE                10864109 2009-6-7 20
         2          1        369   52428800          1 NO       CURRENT               10864800 2009-6-7 20
         3          1        367   52428800          1 YES      INACTIVE              10864106 2009-6-7 20
這樣又生成了3個歸檔檔案,然後為了節約時間(機器不好,備份很卡),這次我只備份了控制檔案和歸檔日誌檔案,其實重試驗的角度出發效果是一樣的。
語句如下:
BACKUP FORMAT 'G:\20090607rman\archivelog\arc_%s_%p_%T_%t.bak' ARCHIVELOG ALL DELETE ALL INPUT;
backup current controlfile format ='G:\20090607rman\controlfile\ctl_%s_%p_%T_%t.bak' ;
同樣我貼出備份過程,

啟動 backup 於 07-6月 -09
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =365 記錄 ID=12 時間戳=688939757
輸入存檔日誌執行緒 =1 序列 =366 記錄 ID=13 時間戳=688939765
輸入存檔日誌執行緒 =1 序列 =367 記錄 ID=14 時間戳=688939771
輸入存檔日誌執行緒 =1 序列 =368 記錄 ID=15 時間戳=688940100
通道 ORA_DISK_1: 正在啟動段 1 於 07-6月 -09
通道 ORA_DISK_1: 已完成段 1 於 07-6月 -09
段控制程式碼=G:\20090607RMAN\ARCHIVELOG\ARC_6_1_20090607_688940101.BAK 標記=TAG2009060
7T201500 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00365_0671122145.001 記錄 ID=12 時間戳
 =688939757
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00366_0671122145.001 記錄 ID=13 時間戳
 =688939765
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00367_0671122145.001 記錄 ID=14 時間戳
 =688939771
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00368_0671122145.001 記錄 ID=15 時間戳
 =688940100
完成 backup 於 07-6月 -09

 

啟動 backup 於 07-6月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
備份集中包括當前控制檔案
通道 ORA_DISK_1: 正在啟動段 1 於 07-6月 -09
通道 ORA_DISK_1: 已完成段 1 於 07-6月 -09
段控制程式碼=G:\20090607RMAN\CONTROLFILE\CTL_7_1_20090607_688940106.BAK 標記=TAG200906
07T201506 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:06
完成 backup 於 07-6月 -09

當前日誌已存檔這句話表示日誌組又切換了,同樣是為了保證歸檔備份的完整性,有利於恢復。
現在的日誌組序列來到了369

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARCHIVED STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- -------- ---------------- ------------- -----------
         1          1        368   52428800          1 YES      ACTIVE                10864109 2009-6-7 20
         2          1        369   52428800          1 NO       CURRENT               10864800 2009-6-7 20
         3          1        367   52428800          1 YES      INACTIVE              10864106 2009-6-7 20
到這裡我的備份完成了,然後用DBCA刪除現在資料庫,來模擬資料庫消失,然後我新建了一個同名了資料庫,應為我恢復SPFILE沒有成功,但是這個不是重點,SPFILE記錄只是控制檔案
的位置和引數,然後我刪除了新建資料庫中的控制檔案日誌檔案和控制檔案,我只要一個SPFILE來啟動到NOMOUNT階段。
然後我做的第一個測試是證明是否可以在控制檔案比較舊的情況下沒有新的歸檔日誌備份集資訊的情況下,來進行恢復,
我這裡也就是取第一次備份控制檔案然後RESOTRE DATABASE,然後RECOVER ,看是否可以恢復到368這裡。
這裡貼出列出過程:
RMAN> restore controlfile from 'G:\20090607rman\datafile\DATA_4_1_20090607_68893
9533.BAK';

啟動 restore 於 07-6月 -09
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

通道 ORA_DISK_1: 正在復原控制檔案
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:07
輸出檔名=E:\ORADATA\PP\CONTROL01.CTL
輸出檔名=E:\ORADATA\PP\CONTROL02.CTL
輸出檔名=E:\ORADATA\PP\CONTROL03.CTL
完成 restore 於 07-6月 -09

RMAN> sql 'alter database mount';

sql 語句: alter database mount
釋放的通道: ORA_DISK_1

RMAN> list backup;


備份集列表
===================

BS 關鍵字  大小       裝置型別佔用時間 完成時間
------- ---------- ----------- ------------ ----------
1       36.38M     DISK        00:00:13     07-6月 -09
        BP 關鍵字: 1   狀態: AVAILABLE  已壓縮: NO  標記: TAG20090607T195056
段名:G:\20090607RMAN\ARCHIVELOG\ARC_1_1_20090607_688938657.BAK

  備份集 1 中的已存檔日誌列表
  Thrd Seq     低 SCN    短時間     下一個 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    354     10851174   05-6月 -09 10862844   07-6月 -09
  1    355     10862844   07-6月 -09 10863113   07-6月 -09
  1    356     10863113   07-6月 -09 10863116   07-6月 -09
  1    357     10863116   07-6月 -09 10863119   07-6月 -09
  1    358     10863119   07-6月 -09 10863283   07-6月 -09

BS 關鍵字  大小       裝置型別佔用時間 完成時間
------- ---------- ----------- ------------ ----------
2       474.50K    DISK        00:00:01     07-6月 -09
        BP 關鍵字: 2   狀態: AVAILABLE  已壓縮: NO  標記: TAG20090607T200032
段名:G:\20090607RMAN\ARCHIVELOG\ARC_2_1_20090607_688939233.BAK

  備份集 2 中的已存檔日誌列表
  Thrd Seq     低 SCN    短時間     下一個 SCN   下一次
  ---- ------- ---------- ---------- ---------- ---------
  1    359     10863283   07-6月 -09 10863608   07-6月 -09
  1    360     10863608   07-6月 -09 10863610   07-6月 -09
  1    361     10863610   07-6月 -09 10863613   07-6月 -09
  1    362     10863613   07-6月 -09 10863615   07-6月 -09
  1    363     10863615   07-6月 -09 10863751   07-6月 -09

BS 關鍵字  型別 LV 大小       裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
3       Full    896.16M    DISK        00:04:52     07-6月 -09
        BP 關鍵字: 3   狀態: AVAILABLE  已壓縮: NO  標記: TAG20090607T200036
段名:G:\20090607RMAN\DATAFILE\DATA_3_1_20090607_688939237.BAK
  備份集 3 中的資料檔案列表
  檔案 LV 型別 Ckp SCN    Ckp 時間   名稱
  ---- -- ---- ---------- ---------- ----
  1       Full 10863756   07-6月 -09 E:\ORADATA\PP\SYSTEM01.DBF
  2       Full 10863756   07-6月 -09 E:\ORADATA\PP\UNDOTBS01.DBF
  3       Full 10863756   07-6月 -09 E:\ORADATA\PP\SYSAUX01.DBF
  4       Full 10863756   07-6月 -09 E:\ORADATA\PP\USERS01.DBF
  5       Full 10863756   07-6月 -09 E:\ORADATA\PP\TEST.DBF
  6       Full 10863756   07-6月 -09 E:\ORADATA\PP\PP.DBF
  8       Full 10863756   07-6月 -09 E:\ORADATA\PP\BIGPP1.DBF


可以看到沒有新的備份的歸檔日誌檔案資訊,只到日誌序號363
然後restore recover:
RMAN> restore database;

啟動 restore 於 07-6月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK

通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到E:\ORADATA\PP\SYSTEM01.DBF
正將資料檔案00002恢復到E:\ORADATA\PP\UNDOTBS01.DBF
正將資料檔案00003恢復到E:\ORADATA\PP\SYSAUX01.DBF
正將資料檔案00004恢復到E:\ORADATA\PP\USERS01.DBF
正將資料檔案00005恢復到E:\ORADATA\PP\TEST.DBF
正將資料檔案00006恢復到E:\ORADATA\PP\PP.DBF
正將資料檔案00008恢復到E:\ORADATA\PP\BIGPP1.DBF
通道 ORA_DISK_1: 正在讀取備份段 G:\20090607RMAN\DATAFILE\DATA_3_1_20090607_68893
9237.BAK
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = G:\20090607RMAN\DATAFILE\DATA_3_1_20090607_688939237.BAK 標記 = TAG2009
0607T200036
通道 ORA_DISK_1: 恢復完成, 用時: 00:04:55
完成 restore 於 07-6月 -09

 

RMAN> recover database;

啟動 recover 於 07-6月 -09
使用通道 ORA_DISK_1

正在開始介質的恢復

無法找到存檔日誌
存檔日誌執行緒 =1 序列=364

可以看到這裡出錯了,不能找到364歸檔日誌,這裡報錯資訊是說不能找到,也許是因為我們的檔案系統沒有這個歸檔日誌檔案,如果還在檔案系統而沒有刪除也許還可以恢復,但是這個只是猜測。
但是這裡的確證明了問題2,如果我使用比較舊的控制檔案,裡面並沒有記錄新的歸檔備份集,ORACLE是不能跨越歸檔備份集恢復的。
如果我們使用的是新的控制檔案會如何哪?
這裡使用前面出錯的資料檔案,只是RESOTRE 了新的控制檔案
然後進行恢復
RMAN> recover database until sequence 368;

啟動 recover 於 07-6月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK

正在開始介質的恢復

通道 ORA_DISK_1: 正在啟動到預設目標的存檔日誌恢復
通道 ORA_DISK_1: 正在恢復存檔日誌
存檔日誌執行緒 =1 序列=364
通道 ORA_DISK_1: 正在讀取備份段 G:\20090607RMAN\ARCHIVELOG\ARC_5_1_20090607_6889
39542.BAK
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = G:\20090607RMAN\ARCHIVELOG\ARC_5_1_20090607_688939542.BAK 標記 = TAG200
90607T200541
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00364_0671122145.001 執行緒 =1 序列 =364

通道 ORA_DISK_1: 正在啟動到預設目標的存檔日誌恢復
通道 ORA_DISK_1: 正在恢復存檔日誌
存檔日誌執行緒 =1 序列=365
通道 ORA_DISK_1: 正在恢復存檔日誌
存檔日誌執行緒 =1 序列=366
通道 ORA_DISK_1: 正在恢復存檔日誌
存檔日誌執行緒 =1 序列=367
通道 ORA_DISK_1: 正在讀取備份段 G:\20090607RMAN\ARCHIVELOG\ARC_6_1_20090607_6889
40101.BAK
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = G:\20090607RMAN\ARCHIVELOG\ARC_6_1_20090607_688940101.BAK 標記 = TAG200
90607T201500
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:02
存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00365_0671122145.001 執行緒 =1 序列 =365

存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00366_0671122145.001 執行緒 =1 序列 =366

存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00367_0671122145.001 執行緒 =1 序列 =367

介質恢復完成, 用時: 00:00:06
完成 recover 於 07-6月 -09

這裡回覆到368,說明了如果要恢復到最近還是應該使用最新的控制檔案,證明了問題1

最後是問題3了如果我使用舊的控制檔案,但是在備份過程中沒有最後的歸檔資訊,結果會如何,這裡我貼回來了最歸檔日誌364,365,366,367
試驗最後的RECOVER 如下

RMAN> recover database;

啟動 recover 於 07-6月 -09
使用通道 ORA_DISK_1

正在開始介質的恢復

存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00364_0671122145.001 執行緒 =1 序列 =364

存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00365_0671122145.001 執行緒 =1 序列 =365

存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00366_0671122145.001 執行緒 =1 序列 =366

存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00367_0671122145.001 執行緒 =1 序列 =367

存檔日誌檔名 =E:\ORACLE10GHOME\RDBMS\ARC00367_0671122145.001 執行緒 =1 序列 =368

然後就是報找不到序號368的錯誤,當然找不到,我沒有貼回368到檔案系統歸檔目錄。

而重整個恢復試驗來看,可以看到使用的越新的控制檔案,裡面記錄的備份資訊也就越新,當然也包括最新的歸檔日誌備份集,這樣使用了DELETE ALL INPUT語句的情況可以透過控制檔案中記錄的歸檔日誌備份集資訊,來讀取最新的歸檔備份集,這也就證明了問題1,當然如果你並非想恢復到最新的這個時刻,而是過去的某一點,那就另當別論了。


最後我總結下:
1、如果要恢復到最近的時間,最好使用最新的控制檔案,如果要恢復到以前某一點,根據需求要定使用何時的控制檔案。
2、如果我使用比較舊的控制檔案,裡面並沒有記錄新的歸檔備份集,ORACLE是不能跨越歸檔備份集恢復的。
3、如果沒有使用delete all input,歸檔備份到備份集,而且在檔案系統中沒有刪除,是可以找到的。
4、在RMAN自動全備的時候,控制檔案是在資料檔案備份之後進行備份的。(PS:如果備份中包含了SYSTEM資料檔案會自動備份控制檔案)

如果就像我開頭說的我們公司這樣的備份方式,如果資料庫消失了(所有檔案,也許是伺服器壞掉),而且DG不能恢復,最好的方法是取出最近的控制檔案,然後使用不完全恢復,最多隻會丟失1天的資料


 

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

相關文章