您的位置:首页 > 数据库 > Oracle

oracle备份/恢复原理(2)

2007-05-23 17:41 281 查看
一、完全備份與部分備份
1.完全備份
完全備份備份的內容包括控制文件和所有數據文件。完全備份不要求數據庫運行於歸檔或非歸檔模式。但是請注意不同的歸檔模式下的兩種隱含的備份類別:一致性備份與非一致性備份,如下圖:



上圖顯示了不同歸檔模式下,數據庫打開或關閉狀態下,完全備份的一致性屬性。關於一致性與非一致性備份,稍後說明。

可以通過以下幾種方法進行完全備份:
a.操作系統的復制功能,如windows下的copy,unix下的cpy.
b.RMAN之BACKUP DATABASE
c.RMAN之BACKUP DATAFILE

2.表空間備份
表空間是oracle的最大邏輯存儲單位,顧名思義,表空間備份就是對表空間中的所有數據文件進行備份。表空間可分為脫機表空間和和聯機表空間,不管是哪種類型的表空間,表空間備份都要求數據庫運行在歸檔模式下(為了保證每個表空間之間的一致性)。有兩種情況下(也只有在這兩種情況下),表空間備份可以在非歸檔模式下進行:一種情況是要備份的表空間處於只讀模式,另一種情況是要備份的表空間處於offline-normal狀態(注:請注意offline與offline-normal的區別),因為在這兩種情況下重做日志不會作用於它們,也就是說這種狀態下表空間的數據不會有任何變化。

可以通過以下幾種方法進行表空間備份:
a.利用操作系統的復制功能對表空間的數據文件進行備份。
b.RMAN之BACKUP TABLESPACE.
c.RMAN之COPY DATAFYLE.

3.數據文件備份
數據文件備份是對單個數據庫文件進行備份。除了在以下這種情況時數據文件備份可以在數據庫非歸檔模式,否則要求數據庫運行於歸檔模式:
a.表空間的每一個數據文件在之前都有備份過了。
b.數據文件在read-only 或offline-normal狀態。

可通過以下方法執行數據文件的備份:
a.操作系統的功能
b.RMAN之BACKUP DATAFILE
c.RMAN之COPY DATAFYLE

4.控制文件備份
控制文件存儲著數據庫的物理結構信息,如果控制文件損壞或丟失,數據庫將不能啟動。因此,對控制文件的備份是至關重要的。一般來說需要對控制文件作多個鏡像的附本,並存儲於不同的磁盤,可以通過設置數據庫的初始化參數CONTROL_FILES來指定多個控制文件鏡像。

對於RMAN,有一個命令:CONFIGURE CONTROLFILE AUTOBACKUP,這個命令用於執行控制文件的自動備份,自動備份會在每一次備份或復制動作執行時自動附帶執行。利用這種備份,RMAN可以在無法使用repository時執行控制文件的恢復。因此,這是一個比較有用的功能。

可通過以下方法執行控制文件的備份:
a.RMAN之BACKUP CURRENT CONTROLFILE
b.ALTER DATABASE BACKUP CONTROLFILE
c.ALTER DATABASE BACKUP CONTROLFILE TO TRACE

5.歸檔日志備份
關於歸檔日志,之前的篇幅中已有介紹過,簡單的說,歸檔日志就是已歸檔的日志文件,用於在數據庫故障時執行恢復。
可通過以下方法執行歸檔日志備份:
a.操作系統的文件備份管理功能
b.RMAN之BACKUP ARCHIVELOG
c.RMAN之BACKUP ... PLUS ARCHIVELOG
d.RMAN之COPY ARCHIVELOG

二、一致性與非一致性備份(consistent or inconsistent)
1.一致性與非一致性的概念
不一致表示一數據只被部分寫入。
oracle通過SCN(system change number)來標識數據庫的當前狀態,SCN是一個時間戳,它存儲在數據文件的文件頭和控制文件中。oracle在檢查點發生時產生這個SCN(檢查點發生時oracle會將緩存中的數據寫入數據文件)。
若各數據文件中SCN,以及控制文件中相應的數據文件的的SCN相同,則數據庫是一致的,否則就是不一致的。
舉例說數據文件a.ora文件頭中存儲SCN值為90,而數據文件b.ora文件頭中存儲的SCN為95,它們同屬一個數據庫,這時的數據庫就是不一致的(inconsistent)。在這種情況下數據庫無法被打開,直到它們一致。
再舉例說,如果服務囂宕機,或以abort方式關閉數據庫,這時數據庫的狀態就會是不一至狀態。因為這種狀態下數據庫是無法打開的。因此,在數據庫實例啟動時,會自動執行實例恢復,以使數據庫恢復到一致性狀態。

2.一致性備份與非一致性備份
所以當對一個數據進行一個完全備份的時候,如果可利用這個備份進行恢復後的數據庫是一致的,那這個就是一致性備份了。由於Oracle的機制,一致性備份只能是在數據庫正常關閉後進行的備份,因為在數據庫運時刻數據庫時時變化的,不可能保證它的一致性。

在數據庫正常運行情況下進行的備份,一般都是不致性的備份。除非數據庫是以read only方式打開的。不一致性的備份在恢復需要借助歸檔日志文件以及在線日志文件(知道為什麼嗎?請參考前一篇的每一個圖片)。

2.1 數據庫關閉狀態下的不一致性備份
這種備份是發生的數據庫以非正常方式停止後的備份。對於這種備份,應該在數據庫為歸檔模式時進行(:)考慮為什麼?)

2.2 強行切換日志/手動將日志歸檔
有時候我們需要在備份前強行執行日志切換(也就是將日志歸檔,因為,若數據庫運行為歸檔模式,在日志切換到前日志文件前會將原日志文件歸檔)。使用如下語句強行切換:
ALTER SYSTEM SWITCH LOGFILE;
另外,也可以手動將當前日志進行歸檔,語句如下:
ALTER SYSTEM ARCHIVE LOG CURRENT
或手動歸檔所有日志:
ALTER SYSTEM ARCHIVE LOG ALL
詳細語法參考請oracle文檔。

三、聯機備份/脫機備份
聯機備份指的是對聯機的表空間和數據文件進行的備份。聯機備份有一點需要注意的是:備份時對“斷裂”的數據塊的處理。
斷裂的數據塊發生於這種情形:備份進程和數據庫的DBWriter進程同時對一個數據庫進行讀寫,當備份進程正讀完這個數據塊的前半部的時候,DBWriter寫數據塊到數據塊後半部,這樣就出現了“斷裂”,也就是在數據塊前後數據的不一致。
如果備份方式是RMAN,它會自動檢測oracle數據塊有效性。並自動重新讀取數據塊;
而如果是操作系統的備份方式,那麼用戶需要去自行處理這種數據塊的“斷裂”問題。

脫機備份指的是對脫機的表空間或數據文件進行的備份。具體備份方法將在後結的篇中詳細說明。

四、RMAN/User-Managed 備份
oracle提供這兩種不同的備份解決方案。
再後面的篇幅中將詳細說明它們各自的實際操作方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: