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