Backup and Recovery Basics1

一、Backup and Recovery Overview
1、Backup and Recovery Overview
1.1 What is Backup and Recovery?
一般,備份和恢復引用各個策略和過程保護你的數據庫背離數據丟失,同時在任何一種數據丟失後重建數據庫。

1.1.1 Physical Backups and Logical Backups
一個備份是來自數據庫文件的一個拷貝,它可以用做重建數據。備份可以被分爲物理備份和邏輯備份。
物理備份是被用做還原和恢復數據庫的物理文件的備份,比如數據文件、控制文件和歸檔日誌文件。最終,每個物理備份是保存數據庫信息到其他位置(不論是磁盤還是某些離線存儲比如磁帶)的文件的一個拷貝。
邏輯備份包含使用一個oracle導出工具導出的邏輯數據(比如表或者存儲過程),它們被保存在一個二進制文件,以便之後使用相應的oracle導入工具再導入數據庫。
物理備份是任何備份和恢復策略的基礎。邏輯備份在很多情況下是對物理備份的一個有用的補充,但是沒有物理備份只有邏輯備份是一個不充足的保護。
除非特殊指定,被用在備份和恢復文檔的說法:備份引用物理備份,同時備份部分或者全部數據庫是採取多種物理備份。在備份和恢復文檔集中關注點幾乎只是物理備份

1.1.2、從備份中恢復:錯誤和失敗
雖然有很多類型的問題停止一個數據庫的基本操作或者影響到數據庫I/O操作,但是隻有兩種情況需要dba介入和介質恢復:介質失敗和用戶錯誤

其他失敗可能需要dba介入去重啓數據庫(一個實例失敗後)或者分配更多磁盤空間,但是這些情況一般不會引起數據丟失或者需要從備份恢復

瞭解用戶錯誤-
當應用邏輯錯誤或者自動化缺少步驟的錯誤,數據庫中的數據被錯誤地改變或者刪除,會引起用戶錯誤。數據丟失由於用戶錯誤包括:缺少步驟、drop重要的表或者刪除/改變
表的內容。儘管用戶一直練習和小心的權限管理可以阻止最大的用戶錯誤,但是你的備份策略決定如何從容地恢復丟失的數據。

瞭解介質失敗-
一個介質失敗是需要運行數據庫的磁盤文件的一個讀或寫的失敗,由於磁盤的物理問題,比如磁盤頭崩潰。任何一個數據庫文件易受介質失敗傷害。
一個介質失敗後,適當的恢復技術依賴於被影響的文件和可用備份的類型

1.1.3、Oracle Backup and Recovery Solutions: RMAN and User-Managed Backup

爲了完成基於物理備份的備份和恢復,你有兩個可用的方案:
(1)recovery manager
它是一個工具,它和運行在oracle服務器上的會話集成從而完成一系列的備份和恢復活動,也可以保存備份歷史數據的一個資料庫
(2)the traditional user-managed backup and recovery
傳統的用戶管理的備份和恢復,你使用混合的操作系統命令和sql*plus的備份、恢復能力直接管理組成數據庫的文件

以上兩種方法都可以被oracle公司支持,而且都有全面地文檔化。rman是數據庫備份和恢復中更受人歡迎的解決方法。很多的備份和恢復文檔中關注基於rman的備份和恢復。
用戶管理的備份和恢復技術在後邊的單元Oracle Database Backup and Recovery Advanced User's Guide會被覆蓋到。

無論你使用rman還是用戶管理的方法,你都可以使用方案對象的邏輯備份來補充你的物理備份。在還原和恢復後,被保存的數據隨後再被導入從而重建這些數據。然而,邏輯
備份很大程度的超過了備份和恢復文檔的範圍

1.2、備份和恢復:基本的概念
通過user-managed技術或者通過rman,數據庫的物理結構和在數據庫恢復進程中的角色決定了備份和恢復的構成。

1.2.1、Physical Database Structures Used in Recovering Data 
組成數據庫的文件和其他結構保存了數據,同時守護數據庫遠離可能的失敗。該論述說明組成數據庫的每一個物理結構和它們在一個來自備份的數據庫的重建中說扮演的角色。這部分包括
一下主題:
(1)數據文件和數據塊
(2)重做日誌
(3)回滾段
(4)控制文件

Datafiles and Data Blocks-
一個數據庫由一個或多個叫做表空間的邏輯存儲單元組成。在一個數據庫中的每個表空間由一個或多個叫做數據文件的文件組成,它們是在操作系統中的物理文件,這些文件包含了保存在
表空間中的數據。最簡單的oracle數據庫也會有一個保存在數據庫中的表空間。
數據庫使用叫做數據塊的邏輯單元 管理在數據文件中的存儲空間。數據塊是數據庫可以使用和分配的最小存儲單元。

被改變或者新數據不會被立刻地寫入數據文件。更新被緩衝到內存,過一段時間被寫入數據文件。如果數據庫沒有經過一個正常的shutdown(但它打開時,因爲一個實例失敗異常退出或者
shutdown abort),那麼在內存中的數據通常不會被寫入到數據文件。以前被還原的數據文件,或者沒有被關閉的數據文件,通常不能完全最新化。

一個數據庫的數據文件的拷貝是任何備份的臨界部分。關於數據文件和數據塊的詳細內容參考Oracle Database Concepts。

Redo Logs-
重做日誌記錄一個數據庫的所有數據文件的改變。任何時刻的數據在被改變時,在它們被寫入數據文件之前,會被記錄到在線重做日誌中。
一個oracle數據庫至少需要兩個重做日誌組,同時,在每個日誌組至少有一個在線重做日誌成員。不時地,數據庫會循環轉動在線重做日誌組。
因爲重做日誌包含了數據文件所有變更的記錄,如果按時地從某個時間點的數據文件的拷貝和從那個時間點向前的一個完整的重做日誌集是可用的,
那麼數據庫可以重做記錄在重做日誌中的改變。如果重做日誌已經被保存,上述纔會有可能。

所以,保存重做日誌是很多備份策略中一個重要的部分。保存重做日誌的第一級別是通過一個archive進程。數據庫可以把當前不再使用的重做日誌組拷貝
到一個或者多個位置。在一個重做日誌文件被歸檔後,它可以被備份到磁盤或者磁帶的其他位置,就是爲了長久儲存和以後的恢復操作。
沒有歸檔日誌,你的數據庫備份和恢復選項會被嚴格地限制。你的數據庫在備份之前必須處於離線,同時你還原數據時,只能恢復到備份的那個時刻。

Control Files-
控制文件包含了數據庫物理結構的記錄和這些物理結構的狀態信息。保存在控制文件的幾種類型的信息關係到備份和恢復:
(1)數據庫信息(resetlogs scn和時間戳)
(2)表空間和數據文件的記錄(文件名、數據文件檢查點、讀/寫狀態、離線類別)
(3)重做線程(當前重做日誌)的信息
(4)日誌記錄(日誌序列號、每個日誌中的scn範圍)
(5)受損數據塊的信息

用於數據文件的恢復進程會被在控制文件的狀態信息說引導,比如數據庫的檢查點、當前重做日誌文件和數據文件的數據文件頭檢查點。控制文件的丟失使數據丟失的恢復更加困難。
Oracle Database Concepts提供了關於控制文件更多的信息。

Undo Segments-
一般地,當在數據文件中的數據被更新,那些數據的前鏡像被寫入到回滾段。如果一個事務被回滾,這些回滾信息被用作還原到最初的數據文件內容。
在恢復的背景下,一旦需要的重做日誌被應用的數據文件,oracle數據庫就使用undo信息去回滾沒有提交的事務。在回滾段被應用之前,數據庫已經被打開。你不應該關心undo段,也不應該直接把它們作爲備份和恢復進程的一部分來管理

1.3、The Database Recovery Process: Basic Concepts
從一個備份重建數據庫所有或者部分內容一般牽扯到兩個方面:從備份中找回數據文件的拷貝和從歸檔和重做日誌的備份應用改變,從而把數據庫帶回到希望的scn(經常,當前)。
爲了從備份中還原一個數據文件或者控制文件,找回在磁盤、磁帶或者其他介質上的文件,同時讓它們在oracle服務器上是可用的。爲了恢復整個數據庫在於完成每個數據文件的恢復。

scn100:一個數據庫的全備(數據文件的拷貝和控制文件)
scn100-scn500:重做日誌捕捉數據庫的操作,日誌忙時進行歸檔
scn500:介質失敗導致數據文件丟失
如何恢復?還原全備的數據文件到scn100,應用被捕捉到歸檔和重做日誌的事務,最後回滾沒有提交的事務

1.4、Forms of Data Recovery
前面的概述畫出了還原和恢復進程的基礎的輪廓。在這個概述中的幾個變體對於備份和恢復是特別重要的:
這部分包含以下主題:
(1)數據文件介質恢復:還原數據文件,應用日誌
(2)完全的,不完全的和時間點的恢復
(3)在實例失敗後自動恢復:崩潰恢復

1.4.1、Datafile Media Recovery: Restore Datafiles, Apply Redo
數據文件介質恢復(經常被稱爲介質恢復)是用戶發起的數據恢復中最基本的組成。它被用做從一個丟失的或者損壞的當前數據文件,spfile或者控制文件來恢復。
它也可以爲一個沒有使用offline normal選項的離線表空間被記錄到重做日誌但沒有記錄到數據文件的改變做恢復。無論你是用rman還是user-managed的備份和恢復
數據文件介質恢復都可以被完成(對於user-managed的備份和恢復,介質恢復是主要的選擇)

從備份還原數據文件的需要不被自動發現的。完成介質恢復的第一步是通過拷貝備份手動地還原數據文件。一旦數據文件被還原,數據庫自動發現該數據文件是過期的,同時經歷介質恢復。以下情況強制要求你完成介質恢復:
(1)還原一個數據文件的拷貝
(2)即使所有數據文件是當前的,你仍然需要備份控制文件
(3)一個數據文件沒有使用offline normal選項被離線
對於介質恢復爲了一個數據文件可用,至少要做一件事情:
(1)數據庫的數據文件必須沒有被打開
(2)如果數據庫是打開的,需要恢復的數據文件必須離線

直到介質恢復完成,需要介質恢復的文件才能操作爲在線。你可以管理意料的介質恢復持續作爲你備份和恢復策略的一部分。介質恢復的持續性被頻繁的備份和並行的恢復參數影響。

1.4.2、Complete, Incomplete and Point-In-Time Recovery  
基於時間點的恢復對於用戶錯誤或者邏輯損壞引起的數據丟失時一種解決方法
如果你需要完成恢復時,發現丟失了備份之後到目標scn之間的歸檔日誌,基於時間點的恢復也是你的唯一選擇。

scn分別出現在v$log表的FIRST_CHANGE#列和V$DATAFILE的CHECKPOINT_CHANGE#列還有V$DATABASE的CHECKPOINT_CHANGE#上。 只要說明三個值相同,
那麼數據庫就沒有不同步的現象。否則就要進行介質恢復。
完全恢復恢復數據到最近的時間點,它沒有任何已提交事務的丟失。一般,"recovery"關係到完全恢復。偶爾,你需要把數據庫返回到一個過去時間點的狀態,比如,回滾一個用戶錯誤,比如drop或delete一個表的內容,你想把數據庫返回到刪除發生之前的內容。不完全恢復,也被稱作基於時間點恢復,目標就是還原數據庫到先前的目標scn或當前時間。基於時間點恢復是對被用戶錯誤或者邏輯損壞引起的數據丟失的一個響應。

如果你需要完成恢復時,發現丟失了備份之後到目標scn之間的歸檔日誌,基於時間點的恢復也是你的唯一選擇。沒有丟失的日誌,你沒有記錄更新數據文件到目標scn,你唯一的選擇是從備份的那個時間點恢復,最遠到沒有損壞的歸檔日誌,接着完成一個open resetlogs,丟棄丟失日誌之後的所有改變(如果找到丟失的歸檔日誌,同時你的數據庫還在打開,你應該立刻做一個全備)。

如果因爲數據丟失僅僅一個表空間受影響,你可以選擇在這個表空間上完成基於時間點的恢復來代替整個數據庫的恢復。表空間基於時間點恢復是一個更高級的技術,它被文檔化在Oracle Database Backup and Recovery Advanced User's Guide

1.4.3、Automatic Recovery After Instance Failure: Crash Recovery-崩潰恢復
crash recovery process是恢復的一個特殊組成,它發生在崩潰後(shutdown abort)實例啓動的第一時間。崩潰恢復的目標就是把數據文件帶回到事務一致性的狀態,保存所有已提交的事務到實例失敗的瞬間。數據文件介質恢復更崩潰恢復一樣,就是爲了還原數據庫完整性。但是,在它們之間有很多重要的不同點:

(1)介質恢復必須明確地被用戶發起。數據庫不會自己運行介質恢復
(2)介質恢復是針對從備份還原的數據文件應用改變,而不是在線的數據文件
(3)介質恢復需要使用歸檔日誌和在線日誌

崩潰恢復不像手動完成恢復的組成,它僅僅使用在線重做日誌和當前在線的數據文件,在崩潰恢復期間歸檔日誌從未被使用,同時數據文件從未被還原。數據庫應用在在線重做日誌中任何待定的更新到數據文件。結果是:在崩潰後無論何時重啓數據庫,數據文件反映了實例崩潰瞬間那刻(數據庫打開後,未提交事務的任何改變被回滾)。

崩潰恢復是一個過程,它包括:多個需要恢復的實例,從最後一個檢查點起redo進程產生的重做日誌,同時用戶可配置的因素:比如重做日誌文件的數量和大小,檢查點頻繁度和並行的恢復設置。你可以在數據庫服務器中配置參數,那麼可以調節崩潰恢復的持續時間。你也可以調節檢查點來優化恢復時間。

在rac中的崩潰恢復發生在:在集羣中的所有實例失敗時。爲了更多rac關於崩潰和實例恢復,閱讀Oracle Real Application Clusters Quick Start

1.5、Backup and Recovery with RMAN
使用rman可以訪問但是用戶管理的備份和恢復不能使用的幾個數據備份和恢復技術和特性。最重要的是:
(1)增量備份
它提供緊湊的備份(保存僅僅更改的塊)和更快的數據文件介質恢復(減少應用重做的需要)
(2)塊介質恢復
不需要離線和還原數據文件,僅僅修復少量損壞的數據庫
(3)不用備份不用的塊
在某些情況下,備份期間rman可以跳過沒有使用的數據塊
(4)二進制壓縮
使用被集成到oracle數據庫中的壓縮機制來減少備份的大小
(5)加密的備份
使用被集成到oracle數據庫中的加密功能來以加密格式保存備份

rman減少管理員與備份策略的關聯的工作。rman保存一個關於備份,歸檔日誌和它自己活動的廣泛的記錄,被稱作rman資料庫。在還原操作中,rman可以使用這些信息來消除多數場景下還原
時爲你識別備份文件。你也可以使用資料庫中的信息產生備份活動的報告。
rman信息的主要存儲在生產數據庫的控制文件中。你可以建立一個獨立的recovery catalog,它是一個在separaterecovery catalog database爲一個或多個數據庫保存了rman鏡像信息的模式對象。
這個文檔其他剩餘,Oracle Database Backup and Recovery Basics,關注於使用rman實現你的備份和恢復策略。

1.5.1、Files That RMAN Can Back Up
rman可以備份所有被用做高效恢復的數據庫文件。rman支持備份備份以下文件類型:
(1)數據文件,數據文件的鏡像拷貝
(2)控制文件,控制文件的鏡像拷貝
(3)歸檔日誌文件
(4)當前服務器參數文件
(5)備份片,包含了rman產生的其他備份

1.5.2、RMAN Backup Destinations: Disk and Media Managers
rman可以創建和管理在磁盤和磁帶上的備份,備份在磁盤和磁帶上最初創建的備份,從備份還原數據庫文件。被用作磁帶備份的設備經常引用SBT設備。rman通過media management layer和SBT設備交互

1.5.2.1、Types of Oracle Database Backup under RMAN
在物理備份中,根據數據庫備份時數據庫的狀態、數據庫哪個部分實際被備份、備份如何被保存,有幾種區分:
(1)About Consistent and Inconsistent Backups
物理備份也可以被劃分爲一致和不一致備份。一致備份在數據庫處於一致狀態時被產生,這個狀態是在重做日誌中的所有變更被應用到數據文件。從一致備份還原的數據庫可以被離開打開,不需要經歷介質恢復。但是,一致性備份只能產生在數據庫一致性關閉後,不能是在a crash或者shutdown abort後

爲了可用性的原因,oracle數據庫被設計爲操作非一致性備份,但數據庫處於open狀態時,進行備份。然而,從一個非一致性備份還原,必須要經歷介質恢復,那麼數據庫可以在數據庫打開之前從在線和歸檔日誌應用改變。因爲介質恢復需要歸檔日誌,使用非一致性備份需要你的數據庫運行在歸檔模式

1.5.2.2、About Full and Incremental Backups
全備是包含所有數據文件的備份。rman或者使用操作系統級別的文件拷貝命令創建全備。增量備份是基於僅僅拷貝數據文件中改變的數據塊。恢復時,從增量備份中提取所有改變的塊可以代替重做日誌的應用,從而相當地縮短恢復時間。增量備份只能使用rman產生。

1.5.2.3、About Image Copies, Backup Sets and Backup Pieces
通過rman創建的數據庫備份可以是鏡像拷貝,也可以是備份集。一個鏡像拷貝是數據庫文件相同的拷貝。rman可以創建鏡像拷貝備份,然而在進程中,rman會檢查損壞的內容,但是本地操作系統
文件拷貝工具不能做。鏡像拷貝也可以使用操作系統命令比如cp創建
注意:如果你沒有使用rman創建鏡像拷貝,你在rman使用它們之前必須使用catalog命令來把鏡像信息記錄到rman資料庫
rman也可以以rman指定格式叫做備份集保存它的備份。一個備份集是備份片的集合,每個備份片包含了一個或多個數據庫文件的備份。在rman中完成的備份任務可以創建一個或多個備份集,備份集的信息被記錄在rman資料庫。備份集只能通過rman創建和訪問。

1.6、Automatic Disk-Based Backup and Recovery: The Flash Recovery Area
創建不同備份和恢復文件的組件對每個文件系統的大小沒有任何瞭解。使用Automatic Disk-Based Backup and Recovery,你可以創建一個閃回恢復區,使備份文件的管理自動化。在磁盤上選擇一個位置,爲存儲空間提供一個更大的邊界,同時設置一個備份策略,那麼數據庫在那塊空間管理用做備份的存儲、歸檔日誌和其他與恢複相關的文件。oracle建議你開啓一個閃回恢復區來簡化你的備份管理。

1.7、Oracle Flashback Technology: Alternatives to Point-in-Time Recovery
oracle閃回技術提供了一系列特性,它們提供了實用的可以選擇的事物,比如查看數據的過去狀態、回滾數據(不需要你從備份還原大部分數據庫或者完成基於時間點的恢復)。oracle的閃回特性在很多狀況中比介質恢復更高效,同時更低損壞。

oracle的很多閃回特性在邏輯層次上操作,來查看和操縱數據庫對象,就像如下的:

發佈了48 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章