資料庫備份與異機恢復——熱備份方式

ddlovefish發表於2013-11-18

資料庫備份與異機恢復——熱備份方式

        

         在日常工作中,我們做的比較多的一項工作就是資料庫備份和恢復,因此有一套高效和方便的備份恢復機制顯得尤為重要,而rman備份正式這樣一種非常簡單和高效的方式,值得使用。

         假設要求我們每一天都對資料庫做一次全備份,同時根據需要可能在第二天根據前一天的備份在另外一臺機器上完成資料庫恢復,並且恢復過程儘可能的快速有效,下面將演示這種場景下的備份和恢復過程。

首先我們可以在晚上12點左右執行備份操作,使用sys使用者連線需要備份的資料庫透過rman,然後執行備份指令碼

run{

     CONFIGURE DEFAULT DEVICE TYPE TO DISK;

     CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET;

     CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 8G;

     CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'E:\oracle\db_BackupFroRman\ora_test_%U_%T';

     BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;

     BACKUP SPFILE INCLUDE CURRENT CONTROLFILE;

}

該指令碼執行後將產生的該資料庫的完整備份,包括引數檔案、控制檔案、資料檔案和歸檔日誌檔案,所有備份資料將儲存在我們指定的路徑下,這裡是E:\oracle\db_BackupFroRman\目錄下,同時最好將這些備份資料複製到一臺專門的備份機上,保障備份檔案的安全。

在第二天進行恢復前一天的備份資料的過程為:

1)         從備份機上複製出前一天的所有備份資料,儲存在一個目錄下,比如E:\ORACLE\DB_BACKUPFRORMAN\

2)         使用oradim命令建立一個資料庫例項(在windows平臺需要)

3)         登入rman開始恢復引數檔案:

SET DBID 2128249921

這裡2128249921為源資料庫的資料庫ID

STARTUP NOMOUNT;

run{    

     RESTORE SPFILE TO PFILE 'D:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITTESTCP.ORA' FROM 'E:\ORACLE\DB_BACKUPFRORMAN\ORA_TEST_0COOUFFQ_1_1_20131114';

     SHUTDOWN IMMEDIATE;

}

以上就生成了一個文字型別的pfile,然後可以直接開啟記事本對控制檔案或資料檔案或閃回區或歸檔日誌等的檔案路徑進行修改,然後生成spfile,並重啟:

SET DBID 2128249921

sql "create spfile from pfile";

startup nomount ;

 

4)         重建好控制檔案和資料檔案等其他檔案所在的目錄,比如資料檔案目錄F:\oracle\oradata\testcp ,閃回區目錄 E:\oracle\fast_recovery_area\testcp

5)         將資料庫啟動到nomount狀態下,恢復控制檔案:

run{

     restore controlfile from 'E:\ORACLE\DB_BACKUPFRORMAN2\ORA_TEST_0COOUFFQ_1_1_20131114';

     alter database mount;   

}

6)         將資料庫啟動到mount狀態下,恢復資料庫,並恢復資料庫到一致性狀態(比如指定恢復到在備份集中最後一個歸檔日誌時的狀態):

catalog start with 'E:\oracle\db_BackupFroRman';

sql "alter database rename file ''E:\oracle\oradata\test\REDO01.log'' to ''F:\oracle\oradata\testcp\redo01.log''";

sql "alter database rename file ''E:\oracle\oradata\test\REDO02.log'' to ''F:\oracle\oradata\testcp\redo02.log''";

sql "alter database rename file ''E:\oracle\oradata\test\REDO03.log'' to ''F:\oracle\oradata\testcp\redo03.log''";

run{

     set newname for database to 'F:\oracle\oradata\testcp\%b';    

     set until SEQUENCE 574;

     restore database;

     switch datafile all;

     recover database;

}

7)         開啟資料庫:

ALTER DATABASE OPEN RESETLOGS;

注意上面SEQUENCE 574表示這裡只恢復到第573號重做日誌檔案後即結束恢復該數值需要根據實際的備份資料進行修改;另外以上的路徑也都要根據實際情況進行修改。

只需要上面簡單的幾個步驟,我們就完成了一個基本的資料庫備份和異機恢復過程,經測試在普通pc機上,20GB的資料備份,整個恢復在30分鐘左右,完全可以滿足目前的要求。進一步的可以將備份指令碼加入到作業系統的計劃任務中定時執行,自動化的完成備份工作,從而改善我們的工作效率。


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

相關文章