?
這一章比較詳細(xì)的介紹了數(shù)據(jù)庫備份的概念和原理。
?
?
物理備份和邏輯備份
?
??? 物理備份:備份數(shù)據(jù)庫的物理文件,包括數(shù)據(jù)文件、控制文件和歸檔日志文件。
?
??? 物理備份又分為兩種類型:一種是映像拷貝(Image?Copy),另一種是備份為一種私有格式。映像拷貝是指數(shù)據(jù)文件、控制文件和歸檔日志文件的確切備份。映像拷貝可以由操作系統(tǒng)命令或RMAN的copy命令生成。而RMAN的backup命令產(chǎn)生一個備份集,備份集是一個包含一個或多個backup piece的邏輯對象。每個backup piece都是一個以私有的二進(jìn)制格式存放的物理文件。用戶只能通過RMAN來恢復(fù)backup piece。
?
???
邏輯備份:將數(shù)據(jù)庫中的用戶對象導(dǎo)出到一個二進(jìn)制文件中。EXPORT和IMPORT是Oracle提供的導(dǎo)入導(dǎo)出工具,由于將數(shù)據(jù)庫對象導(dǎo)出到操作系統(tǒng)二進(jìn)制文件中,或由二進(jìn)制文件中把數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中。EXP和IMP可以作為備份的補充方法,但是不要把EXP和IMP當(dāng)然唯一的數(shù)據(jù)庫備份方案。
?
整庫備份和部分?jǐn)?shù)據(jù)庫備份
?
???
整庫備份:包括當(dāng)前和控制文件和所有的數(shù)據(jù)文件。整庫備份是最常見的備份形式。整庫備份可以是一致性備份也可以是不一致性備份。備份是否是一致的決定還原數(shù)據(jù)文件后是否應(yīng)用日志文件。可以用下列辦法完成整庫備份:
?
??? 1、通過操作系統(tǒng)命令拷貝所有的數(shù)據(jù)文件和當(dāng)前的控制文件;
??? 2、RMAN的BACKUP DATABASE命令;
??? 3、對每個數(shù)據(jù)文件執(zhí)行RMAN的COPY DATAFILE命令,并通過COPY CURRENT CONTROLFILE備份當(dāng)前的控制文件。
?
???
表空間備份:備份構(gòu)成表空間的所有數(shù)據(jù)文件。表空間的備份,不管是聯(lián)機備份還是脫機備份,數(shù)據(jù)庫都必須處于歸檔模式下。這是由于需要重做日志將這個表空間恢復(fù)到和數(shù)據(jù)庫中其它表空間一致的狀態(tài)。如果數(shù)據(jù)庫是非歸檔模式,則表空間備份只對只讀表空間或正常脫機的表空間有效,因為它們不需要重做日志進(jìn)行恢復(fù)。使用下面的方法進(jìn)行表空間的備份:
?
??? 1、通過操作系統(tǒng)命令拷貝表空間下的所有數(shù)據(jù)文件;
??? 2、RMAN的BACKUP TABLESPACE命令;
??? 3、對表空間的每個數(shù)據(jù)文件執(zhí)行RMAN的COPY DATAFILE命令。
?
???
數(shù)據(jù)文件備份:數(shù)據(jù)文件備份是指單獨一個數(shù)據(jù)文件的備份。數(shù)據(jù)文件備份只對歸檔模式有效。在非歸檔的數(shù)據(jù)庫中,必須滿足以下條件:
?
??? * 表空間中下所有的數(shù)據(jù)文件都是備份的;
????* 數(shù)據(jù)文件是只讀的或正常脫機的。
?
??? 使用下面的方法備份數(shù)據(jù)文件:
?
??? 1、操作系統(tǒng)命令;
??? 2、RMAN的BACKUP DATAFILE命令;
??? 3、RMAN的COPY DATAFILE命令。
?
???
控制文件備份:備份控制文件是備份和恢復(fù)中至關(guān)重要的一個方面。缺少控制文件,將無法加載并打開數(shù)據(jù)庫。如果使用RMAN作為備份和恢復(fù)的解決方案,運行CONFIGURE CONTROLFILE AUTOBACKUP命令,則RMAN在進(jìn)行BACKUP或COPY工作時,自動備份控制文件。可以通過下面的方法手工備份控制文件:
?
??? 1、RMAN的BACKUP CURRENT CONTROLFILE創(chuàng)建RMAN特殊的控制文件的備份,COPY CURRENT CONTROLFILE命令創(chuàng)建控制文件的映像備份;
??? 2、通過SQL語句ALTER DATABASE BACKUP CONTROLFILE創(chuàng)建控制文件的二進(jìn)制的備份;
??? 3、通過SQL語句ALTER DATABASE BACKUP CONTROLFILE TO TRACE將控制文件內(nèi)容導(dǎo)出到SQL腳本文件。
????? < 通過TRACE文件備份的缺點是:沒有歸檔日志的記錄,沒有數(shù)據(jù)文件脫機記錄,沒有RMAN的備份和拷貝記錄 >
?
???
歸檔重做日志的備份:歸檔重做日志是恢復(fù)不一致備份的關(guān)鍵。不用歸檔日志恢復(fù)不一致備份的唯一方法是通過RMAN的增量備份。可以通過下來方法備份歸檔重做日志:
?
??? 1、操作系統(tǒng)命令;
??? 2、RMAN的BACKUP ARCHIVELOG命令;
??? 3、RMAN的BACKUP …… PLUS ARCHIVELOG命令;
??? 4、RMAN的COPY ARCHIVELOG命令。
?
一致性備份和不一致備份
?
???
不一致備份:在數(shù)據(jù)庫打開或數(shù)據(jù)庫非正常關(guān)閉時對一個或多個數(shù)據(jù)庫文件進(jìn)行的備份。
?
???
一致性備份:數(shù)據(jù)庫在“干凈”的關(guān)閉后對一個或多個數(shù)據(jù)文件進(jìn)行的備份。一致性備份在還原數(shù)據(jù)文件后不需要進(jìn)行恢復(fù)。
?
??? 一致性備份是指數(shù)據(jù)庫備份中的所有數(shù)據(jù)文件和控制文件具有相同的系統(tǒng)改變號(SYSTEM CHANGE NUMBER SCN)。Oracle通過檢查數(shù)據(jù)文件頭和控制文件中包含的數(shù)據(jù)文件頭信息來確定一個備份是否是一致的。建立一致性備份的唯一方式是正常關(guān)閉數(shù)據(jù)庫然后備份。正常關(guān)閉數(shù)據(jù)庫是指使用NORMAL、IMMEDIATE和TRANSACTION選項關(guān)閉的數(shù)據(jù)庫。一致性備份進(jìn)行數(shù)據(jù)文件的還原后不需要進(jìn)行恢復(fù)操作,它也是非歸檔模式下唯一的正確備份方式。
?
??? 不一致備份是指數(shù)據(jù)庫備份中的數(shù)據(jù)文件和控制文件沒有對應(yīng)到相同的SCN上。如果數(shù)據(jù)庫是7×24的,那么除了執(zhí)行整庫的不一致備份外,沒有其他的選擇。如果數(shù)據(jù)庫處于歸檔模式下,用戶可以通過不同時間創(chuàng)建的在線數(shù)據(jù)文件的備份來構(gòu)建一個整庫備份。
?
???
不一致的停機備份:數(shù)據(jù)庫崩潰或使用SHUTDOWN ABORT方式關(guān)閉數(shù)據(jù)庫后建立的備份。這種類型的備份只有在數(shù)據(jù)庫是歸檔模式下才是有效的,而且聯(lián)機日志和歸檔日志都需要用來保證備份的一致性。
?
???
將尚未歸檔聯(lián)機重做日志歸檔:當(dāng)執(zhí)行了聯(lián)機備份或停機的不一致備份,應(yīng)該馬上歸檔當(dāng)前的聯(lián)機重做日志來保證備份的恢復(fù)。如果數(shù)據(jù)庫是打開的,使用下面的命令切換當(dāng)前的日志并歸檔:
?
???
ALTER SYSTEM ARCHIVE LOG CURRENT;
?
??? 如果數(shù)據(jù)庫是處于裝載、打開或關(guān)閉狀態(tài),可以使用下面的命令歸檔所有的非當(dāng)前聯(lián)機日志:
?
???
ALTER SYSTEM ARCHIVE LOG ALL;
?
???
備份歸檔日志和控制文件:當(dāng)執(zhí)行了聯(lián)機備份和停機的不一致備份,Oracle推薦備份所有的歸檔日志文件和控制文件。如果沒有備份在備份過程中產(chǎn)生的歸檔日志,則無法將數(shù)據(jù)庫恢復(fù)到一致性狀態(tài)。而控制文件中包含了RMAN的備份記錄。
?
聯(lián)機備份和停機備份
?
???
聯(lián)機備份:在數(shù)據(jù)庫打開的時候備份數(shù)據(jù)文件。這種備份方式只對歸檔模式有效。在這種情況下,Oracle可以在備份的同時對聯(lián)機數(shù)據(jù)文件進(jìn)行寫操作。當(dāng)進(jìn)行聯(lián)機備份時可能存在數(shù)據(jù)塊不一致的危險。比如,在進(jìn)行聯(lián)機備份的過程中Oracle的寫進(jìn)程正在對一個數(shù)據(jù)塊進(jìn)行更新。在有可能聯(lián)機備份的數(shù)據(jù)塊的上半部分包括舊的數(shù)據(jù)而下半部分包含新的數(shù)據(jù),這種數(shù)據(jù)塊叫做破裂數(shù)據(jù)塊(Fractured?Block),意味著數(shù)據(jù)塊中包含的數(shù)據(jù)是不一致的。如果使用RMAN備份,是Oracle服務(wù)器進(jìn)程而不是操作系統(tǒng)工具在讀取數(shù)據(jù)文件。服務(wù)器進(jìn)程讀取整個數(shù)據(jù)塊并比較每個塊的頭和尾來確定數(shù)據(jù)塊是否是斷裂的。如果發(fā)現(xiàn)數(shù)據(jù)塊是斷裂的,則會重讀該塊,直到得到一個一致的數(shù)據(jù)塊。
?
??? 如果使用操作系統(tǒng)方式備份數(shù)據(jù)塊,則必須使用其他的辦法來處理斷裂塊。首先必須使用ALTER TABLESPACE BEGIN BACKUP語句將聯(lián)機表空間處于備份模式。這是Oracle停止在表空間的數(shù)據(jù)文件上記錄檢查點。當(dāng)備份完成后通過ALTER TABLESPACE …… END BACKUP或ALTER DATABASE END BACKUP語句來結(jié)束備份模式。
?
???
備份脫機表空間和數(shù)據(jù)文件:對脫機狀態(tài)的表空間和數(shù)據(jù)文件進(jìn)行備份。可以使用下面三種選項執(zhí)行ALTER TABLESPACE OFFLINE語句進(jìn)行表空間的脫機:NORMAL、TEMPORARY或IMMEDIATE。采用NORMAL方式進(jìn)行表空間的脫機可以保證備份在恢復(fù)的時候不需要進(jìn)行恢復(fù)。采用這種方式,可以備份和恢復(fù)表空間而不需要關(guān)閉數(shù)據(jù)庫或執(zhí)行恢復(fù)操作。
?
RMAN和用戶管理備份
?
??? RMAN備份的存儲格式和用戶管理備份的不同。使用RMAN可以和第三方工具集成。RMAN也可以通過COPY命令生成可用于操作系統(tǒng)命令恢復(fù)的備份。
?
??? 用戶管理備份使用操作系統(tǒng)命令進(jìn)行數(shù)據(jù)庫的備份。用戶管理備份和RMAN最大的不同在于用戶比較自己記錄備份了什么和備份在哪里。
?
yangtingkun 發(fā)表于:2006.01.09 23:36 ::分類: ( 讀書筆記 ) ::閱讀:(1231次) :: 評論 (0)
?
?
?
-The End-