轉載請注明出處:http://blog.csdn.net/guoyjoe/article/details/12517603

正确答案:AB
在Oracle 11g中,可以使用backup ….keep指令保留比RMAN備份保留政策所指定的時間更長的備份。使用這個指令,可以構造能保留數年的歸檔備份,以滿足特定的目的,如滿足管理需求等。也可以出于測試目的,利用歸檔備份對資料庫進行定期還原。這些歸檔備份包含還原和恢複一個資料庫必需的所有檔案。
在Oracle 10g中,使用keep選項覆寫一個備份已配置的保留政策。Keep選項使備份不受一個指定時間段的保留政策的限制。Keep forever選項(需要一個恢複目錄)規定一個備份或副本永不過期。在Oracle 11g中,用keep 和keep forever選項完成與以前基本相同的事情,但是來自以前版本某些選項現在不用了,現在有一個的選項,名為restore point。因為backup keep指令的歸檔備份特性的核心,我從幾個方面來介紹一下這條指令。
1、 Oracle 10g中的backup ….keep指令
在Oracle 11g之前,backup … keep指令有以下幾個選:
■keep标記不受限制(exempt),unkeep标記備份受所配置的備份保留政策的限制;
■logs指出隻要相關的備份可用,RMAN就必須保留恢複所需要的歸檔重做日志,nologs選項指出不保留恢複備份的歸檔重做日志;
■forever和until time指出一個備份不受所配置的備份保留政策限制的時間長度。
如果指定keep forever子句,則必須使用恢複目錄。
2、 backup … keep指令更改
在backup …keep指令的新版中,保留keep、 nokeep 、forever和until time選頂。但是不再有logs和nologs選項,增加了一個新選項restore point。Restore point選項讓RMAN自動建立一個還原點,此還原點對應于RMAN必須将目标資料庫備份恢複的SCN,以保持資料庫的一緻。換句話說,restore point子句指出RMAN可恢複歸檔備份的時間。當然,在使用restore point子句時,必須指定一個還原點。
3、 歸檔備份
Oracle 11g中的backup … keep指令的用途是指某個備份為一個獨立的歸檔備份,不受所配置的任何備份保留政策的限制。除了不受備份保留政策的限制之外,在還原和恢複資料庫所需的所有檔案都是歸檔備份的成份這個意義下,該歸檔備份還是一個包括一切的備份(all-inclusive backup)。注意,這個包括一切的歸檔備份被備份到單一磁盤或錄音帶上。歸檔備份可以用于曆史用途,或者用來在供測試的另一個系統上還原生産資料庫。
以前,如果保留聯機備份一個較長時間段。RMAN将自動對該時間段保留所有歸檔重做日志,以備你想進行該時間段中的一個時間恢複。歸檔備份會有少許不同,因為你的目的并不是時間恢複,而是需要保留一個備份指定的時間長度,同時保留恢複該備份所需的歸檔重做日志。是以,在指定keep選項(keep forever和keep until)時,RMAN隻保留資料檔案的備份、恢複聯機備份所需的歸檔重做日志和必要的自動備份檔案。進而,歸檔備份作為一個整體比保留通常的RMAN備份一段時間所占的空間要少得多。
4、 建立歸檔備份
建立歸檔備份有兩種方法。
方法一,可使用backup …keep指令建立不受保留政策限制的備份。
RMAN> backup database
format '/backup/rman/%U'
keep until time 'sysdate+30'
restore point firstmonth;2> 3> 4>
Starting backup at 09-OCT-13
using target database control file instead of recovery catalog
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=147 device type=DISK
backup will be obsolete on date 08-NOV-13
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/ocm/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/ocm/sysaux01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/ocm/example01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/ocm/undotbs01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/ocm/gyj01.dbf
input datafile file number=00007 name=/u01/app/oracle/oradata/ocm/gyj02.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/ocm/tp01.dbf
input datafile file number=00009 name=/u01/app/oracle/oradata/ocm/mrkt01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/ocm/users01.dbf
channel ORA_DISK_1: starting piece 1 at 09-OCT-13
channel ORA_DISK_1: finished piece 1 at 09-OCT-13
piece handle=/backup/rman/17om02gs_1_1 tag=TAG20131009T165347 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
using channel ORA_DISK_1
backup will be obsolete on date 08-NOV-13
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 09-OCT-13
channel ORA_DISK_1: finished piece 1 at 09-OCT-13
piece handle=/backup/rman/18om02ik_1_1 tag=TAG20131009T165347 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
current log archived
using channel ORA_DISK_1
backup will be obsolete on date 08-NOV-13
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=88 RECID=74 STAMP=828377685
channel ORA_DISK_1: starting piece 1 at 09-OCT-13
channel ORA_DISK_1: finished piece 1 at 09-OCT-13
piece handle=/backup/rman/19om02im_1_1 tag=TAG20131009T165347 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
using channel ORA_DISK_1
backup will be obsolete on date 08-NOV-13
archived logs required to recover from this backup will be backed up
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
channel ORA_DISK_1: starting piece 1 at 09-OCT-13
channel ORA_DISK_1: finished piece 1 at 09-OCT-13
piece handle=/backup/rman/1aom02in_1_1 tag=TAG20131009T165347 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 09-OCT-13
這個例子中使用了keep until time子句,它使RMAN在指定(sysdate+30)時間一過就标記此備份為廢棄的。當然,如果指定的是keep forever子句,此備份将永不廢棄。也就是說,此備份将永遠不被備份保留政策删除。
RMAN> backup database
2> format '/backup/rman/%U'
3> keep forever
4> restore point firstforever;
Starting backup at 09-OCT-13
current log archived
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 10/09/2013 17:00:13
RMAN-06522: KEEP FOREVER option is not supported without the recovery catalog
注:keep forever一定要有恢複目錄!!!
方法二:用更改指令更改現在有備份狀态。
使用change指令的keep選項更改普通備份的狀态為歸檔備份的狀态。
RMAN> change backup
Tar ‘guoyJoe_bkp’
keep forever;
其中,change指令把一個例行的備份轉換為永不廢棄(keep forever)的一個歸檔備份。是以,change指令更改一個備份或副本相對于配置保留政策的exemption狀态。如果想使用一個長期的備份(不可删除)成為一個可以删除的備份,可通過執行以下指令:
RMAN> change copy of database controlfile nokeep;
注:對于存儲在閃回恢複區中的備份檔案,不能使用change …keep指令。
Nokeep選項使資料檔案和控制檔案備份的長期鏡像副本處于配置隻留政策的管轄範圍内,進而保證它們最終變成廢棄狀态。
5、 還原歸檔備份
還原一個歸檔備份的最簡單辦法就是建立一個臨時執行個體後使用duplicate指令。下面是個過程的簡要彙總。
(1) 準備輔助執行個體,包括建立一個輔助執行個體的duplicate指令的常用預備步驟,如建立密碼檔案和初始化參數檔案等。還必須對輔助執行個體建立Oracle Net連接配接并啟動輔助執行個體。
(2) 連接配接到恢複目錄、目标和輔助執行個體
RMAN > connect target sys/[email protected]
RMAN >connect catalog rc_admin/[email protected]
RMAN>connect auxiliary /
(3) 執行list restore point all指令檢視資料庫中可用的還原點:
RMAN> list restore point all;
SCN RSP Time Type Time Name
---------------- --------- ---------- --------- ----
3026422 09-OCT-13 FIRSTMONTH
(4) 用歸檔備份執行duplicate database指令,確定指定想還原資料庫的還原點:
RMAN>duplicate database
to newdb
until restore point FIRSTMONTH
db_file_name_convert=’/u01/app/oracle/oradata/ocp’, ’/u01/app/oracle/oradata/ocm’
pfile =’/tmp/pfile.ora’;
此duplicate指令建立一個控制檔案而不是還原目标資料庫的控制檔案。在前面用keep指令建立的還原點及其對應的SCN記錄在恢複目錄和目标資料庫控制檔案。因為需要SDN複制資料庫直到指定的還原點(FIRSTMONTH),是以必須或都使用一個恢複目錄,或者使用目标資料庫控制檔案,隻要還原點仍然存在且沒有被覆寫。
QQ:252803295
技術交流QQ群:
DSI&Core Search Ⅰ 群:127149411(2000人技術群:未滿)
DSI&Core Search Ⅱ 群:177089463(1000人技術群:未滿)
DSI&Core Search Ⅲ 群:284596437(500人技術群:未滿)
DSI&Core Search Ⅳ 群:192136702(500人技術群:未滿)
DSI&Core Search Ⅴ 群:285030382(500人閑聊群:未滿)
MAIL:[email protected]
BLOG: http://blog.csdn.net/guoyjoe
WEIBO:http://weibo.com/guoyJoe0218
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM: http://education.oracle.com/education/otn/YGuo.HTM