rman_copy和基本命令記載

dotaddjj發表於2011-10-19

最近這兩天終於在linux上裝好了oracle 10g,折騰了好多次,有點像自己第一次用pl/sql連線資料庫的時候,囧得很啊!不過其中的過程自己倒是對linux的檔案目錄和vi更加熟悉了。接下來還要配置一下racdg的環境,估計又得花一番功夫了!

今天又看了eygle的循序漸進,重新翻看了rmancopy備份恢復,試試手了!

首先修改一下system01.dbf的位置,方面後面測試

Shutdown immediate

Startup mount

Alter database rename file to ‘d:system01.dbf’;

然後再os上覆制資料檔案1到的d:、是system.dbf位置

Host rman target /

Rman>backup as copy datafile 1 format ‘d:system01.dbf’

對資料檔案1進行一次copy映象的備份

當然copy datafile 1 to ‘d:system01.dbf’也是可以的,不過對於在oracle 10G中對於全庫映象資料庫則Rman>backup as copy database此時copy database語法上存在錯誤的,個人一般都是backup as copy寫法。

資料檔案1備份完全成後

Rman> shutdown abort;

Rman>startup

由於刪除資料檔案1導致資料庫無法open

Nocatalog模式下資料庫的全部備份記錄儲存在controlfile中,利用copy的備份集來恢復吧

Rman>run{

set newname for datafile 1 to ‘d:oracleproduct10.2.0oradatasystem01.dbf’;

restore datafile 1;

switch datafile all;

recover datafile 1;

}

其中的set newname for datafile to ‘’然後switch datafile alldatafile 1進行了控制檔案的更新,把資料檔案rename到了一個新的位置。

由於之前個人把system01.dbf轉移到了d:system01.dbf,此時恢復完畢後檢視system01.dbf儲存在‘d:oracleproduct10.2.0oradatasystem01.dbf’oracle會自動選擇最新的備份來restore。(可以檢視alertsid.log檢視具體的詳細資訊,oracle會選擇具體用的備份集來恢復)

前段時間在windows上建立了asm例項的資料庫。本機資料庫test是建立在asm磁碟組例項的資料庫。試著模擬一次asm磁碟組的故障來實行恢復。

首先在asm例項的資料庫orcl做一個資料檔案system的備份,然後強制關閉資料庫

set oracle_sid=test

rman target /

backup as copy datafile 1;

shutdown abort

進入asm磁碟例項

Set oracle_sid=+ASM

Sqlplus / as sysdba

Alter diskgroup dggroup1 drop file ‘+DGGROUP1/test/datafile/system.256.764084429’

好了在磁碟組已經把datafile 1 drop掉了。

回到orcl庫來恢復吧

Set oracle_sid=test

Rman target /

Run{

Startup mount;

Restore datafile 1;

Recover datafile 1;

}

Alter database open

到此asm磁碟組的資料庫恢復完畢。

參照上面的恢復過程asm磁碟組資料庫和普通的資料庫沒有多大區別。

接觸rman也有一段時間了,有些list backup copy的命令順便在這裡寫一下。

List 命令:

List backup of database

List backup of datafile 1

List backup of controlfile

列出關於資料檔案的全部備份資訊,此時列出的都是是備份集

List copy of database

List copy of datafile 1

。。。

列出關於資料檔案的全部映象資訊,此時列出的是映象

Copy映象備份

Backup as copy database

Backup as copy datafile 1 ||format ‘’

Backup as copy current controlfile ||format ‘’

Backup as copy archivelog all;

。。。

此時copy的映象備份在restore時是優先與backup產生的備份機的,利用備份集會有額外的開銷,而且結合rmanswitch datafile all可以實現alter database rename file實現資料檔案重新定位。

Backup備份

Backup database

Backup datafile 1 to ‘’

Backup current controlfile to ‘’

。。。

Crosscheck 命令

Crosscheck backup

Crosscheck backup of database

Crosscheck backup of controlfile

Crosscheck copy of database

Crosscheck copy

。。。。

列出在os上已經刪除的備份集並置為expired,因為有些備份集在os上已經刪除,但是在rman的備份目錄中還是存在,此時需要crosscheck backup置為expired過期的然後delete expired backup

全備份的一個指令碼

Run{

Allocate channel d1 device type disk

Backup database

include current controlfile

Plus archivelog all format ‘ /oracle_data/oraback/full_%d_%T_%S‘delete all input;

Release channel d1;

}

此時上述的過程1 歸檔current log 2 備份歸檔然後全備份庫和控制檔案 3 再次歸檔當前日誌備份沒有備份archivelog

(生產庫中的archivelog和備份集應該儲存和資料檔案的不同磁碟,而且也應該做多份冗餘備份)

Archivelog的命令

列出大於等於序號40archivelog

List backup of archivelog from sequence 40

List backup of archivelog low sequence 40

List archivelog from sequence 40

列出小於等於序號40的日誌

List backup of archivelog until sequence 40

List backup of archivelog high sequence40

列出等於40的日誌

List archivelog sequence sequence 40

刪除7天前的archivelog

Delete archivelog from time ‘sysdate-7’

Show all

其中的configure retention policy to redendancy 1預設冗餘度為1rman備份策略認為最後最新一個是rman應該使用和保留的備份集,其餘的都認為是oblosote的,實際rman恢復過程中也會使用最新的一次備份來做恢復。

Report obsolete

Report rman備份策略中認為的過期備份集

Delete obsolete

刪除rman備份策略中認為的過期備份集

羅嗦了半天了,就自己是初學者來說,oracle確實有太多的未知,不過又很多點東西真的還是要自己多多去嘗試,由於是個人本本無法實驗安裝asmlinux上安裝rac和佈置dg環境,環境只是客觀的,要想測試自己裝個虛擬機器兩個instance設定一下網路rac不就可以弄了吧,

Dg不也一樣,asmwindows上單機都可以設定,所以經常說:別為自己找藉口,只要你想學愛學就去實驗吧!不能說成功就實際的來說薪水待遇只是遲早的事,用自己所學到的東西,而且又是興趣所在還能取得一份不錯的薪水。可能幾個月後再看這篇blog會覺得裡面還有很多知識點可以寫,量變形成質變,加油吧!飛魚!

[@more@]

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

相關文章