1. 程式人生 > >Oracle用戶管理的備份與恢復介紹

Oracle用戶管理的備份與恢復介紹

Oracle備份恢復

數據庫維護中,備份或恢復是重中之重的問題。盡管很多時候數據庫系統運行緩慢,

但對數據庫數據的丟失而言,顯然後者損失的代價是不言而喻的,DBA首要的工作就

是盡一切可能地做好數據的備份工作。

1.1、物理備份與邏輯備份

01、物理備份是所有物理文件的一個副本,比如數據文件,控制文件,歸檔日誌等。該副本能被存儲在本地磁盤或磁帶等等。

物理備份是備份或恢復的基礎

包括冷備份(非歸檔模式)或熱備份(歸檔模式)

02、邏輯備份

將表、存儲過程等數據使用Oracleexport等工具導出到二進制文件,後續根據需要再使用import工具導入數據庫。

邏輯備份則是對物理備份的方式的一種補充,多用於數據遷移。

1.2、備份恢復工具

01、用戶托管的備份與恢復,是一種手動備份恢復的方式。使用操作系統命令和SQL*plus來完成相關的備份與恢復。

02、使用RMAN來備份恢復,支持命令行及GUI接口,支持第三方磁帶庫備份,功能比較強大。

支持備份數據庫、表空間、數據文件、控制文件、歸檔日誌等

可以保存頻繁使用備份恢復腳本

支持增量備份,跳過未使用的塊,以及控制備份速度

在備份期間偵測損壞的數據

通過自動並發、限制I/O等提高備份性能

03、使用exp/impexpdp/impdp之類的邏輯導出與導入工具。 支持全庫、用戶、表、帶條件級別的導出與導入可以導到結構,也只可以只導出數據是跨平臺遷移的最佳工具

1.3、常見的備份類型

聯機數據庫備份 -->

使用archivelog模式,SCN不一致

脫機數據庫備份 -->使用noarchivelog模式,SCN保持一致

整個數據庫-->可以在不同的時間段來備份,減輕I/O壓力,從而構建整個數據庫

表空間-->archivelog模式下,當處於noarchivelog模式下,則該表空間必須為只讀或脫機

數據文件 -->同表空間備份

控制文件 -->可以使用SQL語句或RMAN來備份

歸檔日誌

參數文件

1.4、備份的分類

(1) 備份策略:

a.整體:備份屬於數據庫的控制文件和所有數據文件

b.部分:備份數據庫的一部分

(2) 備份類型:

a.完全:非增量RMAN備份

b.增量:只備份以前某次備份以來更改的信息

(3) 備份模式:

a.脫機:一致性備份,也稱為冷備份

b.聯機:非一致性備份,也稱為熱備份

1.5、恢復的分類

何時需要使用備份進行恢復:

發生以下類型的錯誤時,通常需要使用備份執行恢復:

(1) 介質故障:因數據庫文件的物理問題而導致無法讀寫該文件

(2) 用戶錯誤:數據庫中的數據被誤更改或誤刪除

數據恢復概覽:

崩潰恢復:發生實例錯誤後自動恢復

介質恢復:恢復當前數據文件、控制文件

Oracle數據庫體系結構:崩潰恢復

(1) 使用聯機重做日誌文件前滾數據庫

(2) 回退未提交的更改Oracle數據庫體系結構:在介質故障後恢復(1) 使用備份還原數據文件

(2) 使用歸檔和聯機重做日誌文件前滾數據庫

完全恢復:將數據庫恢復到最近的時間點

不完全恢復(時間點恢復):將數據庫恢復到在特定時間或待定系統scn時的狀態

完全恢復

使用數據庫,表空間或數據文件的備份進行還原,再使用歸檔,重做日誌或增量備份將數據更新到當前時間點

用戶可以實現基於對數據庫、表空間、數據文件執行完全恢復

可以分為在非歸檔模式下和歸檔模式下的完全恢復,完全恢復主要是針對歸檔模式下的,在非歸檔模式下很難做到完全恢復,除非是在做恢復時,聯機重做日誌還沒有被重寫。

不完全恢復

與完全恢復是同樣的步驟,只不過不完全恢復僅僅是將數據恢復到某一個特定的時間點或特定的SCN,而不是當前時間點。

下列情況通常需要進行不完全恢復:

介質故障(media failure)導致部分或全部聯機重做日誌(online redo log)損壞

用戶操作失誤(user error)導致數據丟失,例如,用戶由於疏忽而移除了表,提交了無效的數據到表

由於歸檔重做日誌(archived redo log)丟失而無法進行完全恢復(complete recovery)

當前控制文件(control file)丟失,必須使用備份的控制文件打開(open)數據庫

關於非歸檔的恢復說明

1.在非歸檔模式下,在丟失數據文件後唯一的選擇是執行完整的數據庫還原,而不能進行恢復;

2.還原完整的數據庫是還原所用的數據文件和控制文件;

3.還原前提是要備份,因為是非歸檔模式所以只能進行冷備份,主要備份所有的數據文件和控制文件。對於聯機重做日誌文件,在正常關閉數據庫的情況下,可以不備份它,但是在不正常關閉數據庫的情況下要進行備份,建議備份下來,這樣就可以不用重建了。

非歸檔模式下的恢復。

1.如果放數據文件的磁盤沒有損壞,只是某種原因導致某些數據文件的丟失,那麽只要把備份的數據庫(所有數據文件和控制文件),復制到原來的地方即可。

2.如果是磁盤損壞,則不能放到原來的位置了,必須放到新的磁盤下。這樣就要修改參數文件和控制文件的信息, 才能正常打開數據庫。

3.現在模擬第二種情況(即磁盤損壞),首先對數據庫進行冷備份,新建個目錄/oracle/ubackup,在/oracle/oradata/itpux下的所有文件(數據文件,控制文件和聯機重做日誌文件)復制到ubackup目錄下。

不完全介質恢復的幾種類型:

基於時間的恢復(Time-based recovery) 將數據恢復到指定的時間點。

用戶控制的恢復(Cancel-based recovery) 當用戶提交CANCEL後停止恢復(此選項在使用RMAN時無效)

基於SCN 的恢復(Change-based recovery) 將數據恢復到指定的SCN按重做日誌序號恢復(Log sequence recovery)將數據恢復到指定的重做日誌序號(僅使用RMAN時有效)

表空間按時間點恢復(tablespace point-in-time recoveryTSPITR) 可以將一個或多個表空間恢復到與數據庫中其他表空間不同的時間點,但是SYSTEM表空間,UNDO表空間,或任何包含回滾段(rollback segment)的表空間無法使用TSPITR功能與其它表空間有依賴性的表空間應當同時恢復被依賴的表空間,如兩張表存在依賴性且位於不同的表空間。


恢復的相關視圖

v$reover_file --查詢需要恢復的文件,該視圖信息來自控制文件,如控制文件來自備份或重建過則信息會不準。

v$archived_log--查詢所有歸檔日誌列表。

v$recovery_log--查詢所有需要用於恢復的日誌。


Oracle用戶管理的備份與恢復介紹