這一章比較詳細的介紹了數據庫備份的概念和原理。
物理備份和邏輯備份
物理備份
:備份數據庫的物理
文件,包括數據文件、控制文件和歸檔日誌文件。
物理備份又分爲兩種類型:一種是映像拷貝(
I
mage C
opy)
,
另一種是備份爲一種私有格式。映像拷貝
是指數據文件、控制文件和歸檔日誌文件的確切備份。映
像拷貝可以由操作系統命令或RMAN的copy命令
生成。而RMAN的backup命令
產生一個備份集,備份集是一個包含一個或多個backup
piece的邏輯對象。每個backup piece都是一個以私有的二進制格式存放
的物理
文件。用戶只能通過RMAN來恢復backup piece。
邏輯備份
:將數據庫中的用戶對象導出到一個二進制文件中。EXPORT和IMPORT
是Oracle提供的導入導出工具,由於將數據庫對象導出到操作系統二進制文
件中,或由二進制文件中把數據導入到數據庫中。EXP和IMP可以作爲備份的補充方法,但是不要把EXP和IMP當然唯一的數據庫備份方案。
整庫備份和部分數據庫備份
整庫備份
:包括當前和控制文件和所有的數據文件。整庫備份是最常見的備份形式。
整庫備份可以是一致性備份也可以是不一致性備份。備份是否是一致的決定還原數據文件後是否應用日誌文件。可以用下列辦法完成整庫備份:
1、
通過操作系統命令拷貝所有的數據文件和
當前的控制文件;
2、
RMAN的BACKUP
DATABASE命令;
3、
對每個數據文件執行RMAN的COPY
DATAFILE命令,並通過COPY CURRENT CONTROLFILE備份當前的控制文件。
表空間備份
:備份構成表空間的所有數據文件。表空間的備份,不管是聯機備份還是脫機備份,數據庫都必須處於歸檔模式下
。這是由於需要重做日誌將這個表
空間恢復到和數據庫中其它表空間一致的狀態。如果數據庫是非歸檔模式,則表空間備份只對只讀表空間或正常脫機的表空間有效,因爲它們不需要重做日誌進行恢
復。使用下面的方法進行表空間的備份:
1、
通過操作系統命令拷貝表空間下的所有數據文
件;
2、
RMAN的BACKUP
TABLESPACE命令;
3、
對錶空間的每個數據文件執行RMAN的
COPY DATAFILE命令。
數據文件備份
:數據文件備份是指單獨一個數據文件的備份。數據文件備份只對歸檔模式有效
。在非歸檔的數據庫中,必須滿足以下條件:
*
表空間中下所有的數據文件都是備份的;
*
數據文件是隻讀的或正常脫機的。
使用下面的方法備份數據文件:
1、
操作系統命令;
2、
RMAN的BACKUP
DATAFILE命令;
3、
RMAN的COPY
DATAFILE命令。
控制文件備份
:備份控制文件是備份和恢復中至關重要的一個方面。缺少控制文件,
將無法加載並打開數據庫。如果使用RMAN作爲備份和恢復的解決方案,運行CONFIGURE
CONTROLFILE AUTOBACKUP
命令,則RMAN在進行BACKUP或COPY工作時,自動備份控制文件。可以通過下面的方
法手工備份控制文件:
1、
RMAN的BACKUP
CURRENT CONTROLFILE創建RMAN特殊的控制文件的備份,COPY CURRENT
CONTROLFILE命令創建控制文件的映像備份;
2、
通過SQL語句ALTER
DATABASE BACKUP CONTROLFILE創建控制文件的二進制的備份;
3、
通過SQL語句ALTER
DATABASE BACKUP CONTROLFILE TO TRACE將控制文件內容導出到SQL腳本文件。
<
通過TRACE文件備份的缺
點是:沒有歸檔日誌的記錄,沒有數據文件脫機記錄,沒有RMAN的備份和拷貝記錄
>
歸檔重做日誌的備份
:歸檔重做日誌是恢復不一致備份的關鍵。不用歸檔日誌恢復不
一致備份的唯一方法是通過RMAN的增量備份。可以通過下來方法備份歸檔重做日誌:
1、
操作系統命令;
2、
RMAN的BACKUP
ARCHIVELOG命令;
3、
RMAN的BACKUP ……
PLUS ARCHIVELOG命令;
4、
RMAN的COPY
ARCHIVELOG命令。
一致性備份和不一致備份
不一致備份
:在數據庫打開或數據庫非正常關閉時對一個或多個數據庫文件進行的備
份。
一致性備份
:數據庫在“乾淨”的關閉後對一個或多個數據文件進行的備份。一致性
備份在還原數據文件後不需要進行恢復。
一致性備份是指數據庫備份中的所有數據文件和控
制文件具有相同的系統改變號(SYSTEM CHANGE NUMBER
SCN)。Oracle通過檢查數據文件頭和控制文件中包含的數據文件頭信息來確定一個備份是否是一致的。建立一致性備份的唯一方式是正常關閉數據庫然後
備份。正常關閉數據庫是指使用NORMAL、IMMEDIATE和TRANSACTION選項關閉的數據庫。一
致性備份進行數據文件的還原後不需要進行恢復操作,它也是非歸檔模式下唯一的正確備份方式
。
不一致備份是指數據庫備份中的數據文件和控制文
件沒有對應到相同的SCN上。如果數據庫是7×24的,那麼除了執行整庫的不一致備份外,沒有其他的選擇
。
如果數據庫處於歸檔模式下,用戶可以通過不同時間創建的在線數據文件的備份來構建一個整庫備份。
不一致的停機備份
:數據庫崩潰或使用SHUTDOWN
ABORT方式關閉數據庫後建立的備份。這種類型的備份只有在數據庫是歸檔模式下才是有效的,而且聯機日誌和歸檔日誌都需要用來保證備份的一致性。
將尚未歸檔聯機重做日誌歸檔
:當執行了聯機備份或停機的不一致備份,應該馬上歸
檔當前的聯機重做日誌來保證備份的恢復。如果數據庫是打開的,使用下面的命令切換當前的日誌並歸檔:
ALTER SYSTEM ARCHIVE LOG CURRENT;
如果數據庫是處於裝載、打開或關閉狀態,可以使
用下面的命令歸檔所有的非當前聯機日誌:
ALTER SYSTEM ARCHIVE LOG ALL;
備份歸檔日誌和控制文件
:當執行了聯機備份和停機的不一致備份,Oracle推
薦備份所有的歸檔日誌文件和控制文件。如果沒有備份在備份過程中產生的歸檔日誌,則無法將數據庫恢復到一致性狀態。而控制文件中包含了RMAN的備份記
錄。
聯機備份和停機備份
聯機備份
:在數據庫打開的時候備份數據文件。這種備份方式只對歸檔模式有效
。在這種情況下,Oracle可以在備份的同時對聯機數據文件進行寫操作。
當進行聯機備份時可能存在數據塊不一致的危險。比如,在進行聯機備份的過程中Oracle的寫進程正在對一個數據塊進行更新。在有可能聯機備份的數據塊的上半部分包括舊的數據而下半部分包含新的數據,這種數據塊叫做破裂數據塊(
F
ractured B
lock)
,
意味着數據塊中包含的數據是不一致的。如果使用RMAN備份,是Oracle服務器進程而不是操作系統工具在讀取數據文件。服務器進程讀取整個數據塊並比
較每個塊的頭和尾來確定數據塊是否是斷裂的。如果發現數據塊是斷裂的,則會重讀該塊,直到得到一個一致的數據塊。
如果使用操作系統方式備份數據塊,則必須使用其
他的辦法來處理斷裂塊。首先必須使用ALTER TABLESPACE BEGIN
BACKUP語句將聯機表空間處於備份模式
。這是Oracle停止在表空間的數據文件上記錄檢查點。當備份完成後通過ALTER TABLESPACE …… END BACKUP或ALTER DATABASE END
BACKUP語句來結束備份模式
。
備份脫機表空間和數據文件
:對脫機狀態的表空間和數據文件進行備份。可以使用下
面三種選項執行ALTER TABLESPACE
OFFLINE語句進行表空間的脫機:NORMAL、TEMPORARY或IMMEDIATE。採用NORMAL方式進行表空間的脫機可以保證備份在恢復
的時候不需要進行恢復。採用這種方式,可以備份和恢復表空間而不需要關閉數據庫或執行恢復操作。
RMAN和用戶管理備份
RMAN備份的存儲格式和用戶管理備份的不同。使用RMAN可以和第三方工具集成
。RMAN也可以通過COPY命令生成可用於操作系統命令恢復的備
份。
用戶管理備份使用操作系統命令進行數據庫的備
份。用戶管理備份和RMAN最大的不同在於用戶比較自己記錄備份了什麼和備份在哪裏。