rman備份-(1) 利用備份級恢復資料檔案和控制檔案

dotaddjj發表於2011-08-17

這段時間一直在練手rman恢復,由於之前對os下使用者熱備份的原理比較瞭解,陸陸續續看eygle的書然後動手,慢慢的瞭解rman基本的原理,還是比較有成就感的。

熱備份的原理是利用備份集restore(修復)資料庫中資料檔案 控制檔案,然後透過歸檔日誌,redo log中記載的全部資料庫資訊recover(恢復)重組資料檔案,其中關鍵的有checkpoint scn等知識點。

下面實際曬一下這段時間rman練手細節

首先此時透過rman做了一個資料庫的全備份

Rman>run{

Allocate channel d1 tpye disk;

Backup database tag=ashuang0817;

}

如果是用控制檔案做恢復目錄,應該也必要把rman中關於控制檔案的自動備份開啟

Rman>configure controlfile autobackup on

預設的是關閉的,由於是測試資料庫,資料檔案容量不是很大,就用目標資料庫的控制檔案代替恢復目錄了。

開啟控制檔案自動備份後,rman的備份資訊會記錄在控制檔案中,這個寫操作又會觸發控制檔案的自動備份,所以上面的全庫備份會帶來控制檔案和spfile檔案的自動備份,預設的儲存位置在閃回區中。全庫備份的應該是oracle_base /flash_recovery_areatestbackupset,

控制檔案自動備份預設儲存在oracle_base /flash_recovery_areatestautobackupTest是測試資料庫的db_name

此時我們擁有一個全庫的備份集,控制檔案和spfile檔案。

1 資料檔案os上刪除,壞塊等

Shutdown immediate

Os上刪除資料檔案rm掉所有資料檔案

Cmd>rman target /

Rman>Startup mount

Rman>Restore database

修復資料庫的所有資料檔案

Rman>recover database

恢復資料庫

Rman>alter database open

2 資料檔案和控制檔案一起在os上刪除了

Shutdown immediate

Os上刪除資料檔案rm掉所有資料檔案和控制檔案

Cmd>rman target /

Rman>Startup nomount

Rman>restore controlfile to ‘oracle_baseoradatatestcontrol01.ctl’ from ‘’

需要制定備份集,不然oracle無法得知離我們最近的備份,或者指定db_id

Rman>alter database mount;

Rman>Restore database

Rman>recover database

Rman>alter database open resetlogs

由於是利用備份的控制檔案來恢復資料庫的,需要指定resetlogs來開啟資料庫,當然不完全恢復也就是丟失了當前日誌檔案組,重建控制檔案指定resetlogs都需要以resetlogs開啟資料庫。

當然以上兩種情況資料庫都必須在歸檔模式下,如果資料庫不在歸檔模式,那非常的可怕,最簡單的例如redo log 1中記錄了demp的表的資料資訊,此時由於日誌切換,redo log 1被覆蓋了,雖然資料塊已經寫入資料檔案。例如此時伺服器硬體問題,磁碟壞掉,只能用冷備份來恢復資料庫,但是無法利用archivelog來恢復你的demp表了,日誌被覆蓋,備份點到例項失敗的資訊是無法恢復的,所以沒有歸檔的資料庫很危險。

由於rman涉及的內容比較多,控制檔案快照,racrman備份 恢復,指定catalog恢復目錄,增量備份全備份啊。後面整理了繼續更新!

[@more@]

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

相關文章