Oracle 備份與恢復

Oracle 備份與恢復

備份與恢復是數據庫管理中最重要的方面之一。如果數據庫崩潰卻沒有辦法恢復它,那麼對企業造成的毀滅性結果可能會是數據丟失、收入減少、客戶不滿等。不管公司是使用單個數據庫還是多個數據庫來存儲數百 GB 或 TB 的數據,它們都有一個共同點,即需要制訂一個備份與恢復方案來備份重要數據並使自身免於災難。

備份與恢復基礎
備份是數據的一個代表性副本。該副本會包含數據庫的重要部分,如控制文件、重做日誌和數據文件。備份通過提供一種還原原始數據的方法保護數據不受應用程序錯誤的影響並防止數據的意外丟失。備份分爲物理備份和邏輯備份。物理備份是物理數據庫文件的副本。“備份與恢復”通常指將複製的文件從一個位置轉移到另一個位置,同時對這些文件執行各種操作。

相比而言,邏輯備份包含使用 SQL 命令導出並存儲在二進制文件中的數據。Oracle 在重做日誌緩衝區中記錄提交的和未提交的更改。邏輯備份用於補充物理備份。還原物理備份意味着重建它並將其提供給 Oracle 服務器。要恢復還原的備份,需要使用事務日誌中的重做記錄來更新數據。事務日誌記錄在執行備份之後對數據庫所做的更改。

Oracle 在例程故障之後自動執行崩潰恢復和實例恢復。在出現介質故障的情況下,數據庫管理員 (DBA) 必須啓動恢復操作。恢復備份涉及兩種不同的操作:通過應用重做數據將備份前滾至一個較近的時間;將在未提交的事務中所做的所有更改回滾至其原來狀態。一般而言,恢復指在還原、前滾和回滾備份中涉及的各種操作。備份與恢復指在防止數據庫丟失數據和在丟失數據時重建數據庫的過程中涉及的各種策略和操作。

備份與恢復操作
備份是數據文件、表空間或某個時間點的數據庫等的快照。如果對數據庫進行了週期性備份,則在數據丟失時用戶可以將存儲的重做信息應用到他們最新的備份中,從而恢復數據庫的當前狀態。Oracle 使用戶能夠還原一個較早的備份和僅應用某些重做數據,從而將數據庫恢復到一個較早的時間點。這種恢復稱爲不完全介質恢復。如果備份是一致的,那麼根本不需要用戶應用任何重做數據。

下面用介質恢復的一個簡單例子來解釋一下這個概念。假定用戶在中午爲數據庫作了一個備份。從中午開始,每一分鐘對數據庫進行一次更改。在下午 1 點時,一個磁盤驅動器出現故障,導致那個磁盤上的所有數據丟失。幸運的是,Oracle 在重做日誌中記錄了所有更改。則用戶可以將中午的備份還原到一個正常運轉的磁盤驅動器上,使用重做數據將數據庫恢復到下午 1 點,從而重建丟失的更改。

備份與恢復策略要素
儘管備份與恢復操作非常複雜並隨因企業而異,但基本原則均遵循這四個簡單的步驟:

  1. 創建聯機重做日誌的多個副本
  2. 在 ARCHIVELOG 模式下運行數據庫,並將重做日誌存檔至多個位置
  3. 維護控制文件的多個併發備份
  4. 時常備份物理數據文件,並將它們存儲在一個安全的地方;如果可能,創建多個副本

只要用戶在安全的存儲器備份了數據庫並存檔了重做日誌,就可以重建原始數據庫。

備份與恢復的主要數據結構
在用戶開始認真考慮備份與恢復策略之前,必須明確與備份和恢復操作相關的物理數據結構。本節討論了以下物理數據結構:

數據文件
每個 Oracle 數據庫都有屬於稱爲表空間的邏輯結構的一個或多個物理數據文件。數據文件被分爲更小的稱爲數據塊的單元。邏輯數據庫結構的數據(如表和索引)物理上位於爲數據庫分配的數據文件的塊中。數據文件具有以下特性:

  • 用戶自定義的特性允許數據文件在數據庫空間不足時自動擴展。
  • 一個或多個物理數據文件組成了一個稱爲表空間的邏輯數據庫存儲單元。

每個數據文件的第一個塊均爲頭 (header)。頭包括諸如文件大小、塊大小、表空間和創建時間戳記等重要信息。只要打開數據庫,Oracle 就檢查數據文件頭信息是否與存儲在控制文件中的信息匹配。如果不匹配,則必須進行恢復。Oracle 在正常操作期間讀取數據文件中的數據,並將其存儲在緩衝區高速緩存中。例如,假定用戶要訪問表中的一些數據。如果請求的信息尚未出現緩衝區高速緩存中,則 Oracle 將從相應的數據文件中讀取它並將其存儲在內存中。

控制文件
每個 Oracle 數據庫都有一個控制文件,該文件包含組成數據庫的所有其它文件的操作系統文件名。這個重要的文件還包含在恢復期間使用的一致性信息,如:

  • 數據庫名稱
  • 數據庫創建時間戳記
  • 數據庫的數據文件以及聯機和存檔重做日誌文件的名稱
  • 檢查點 — 在重做日誌中指示在這個點之前的所有數據庫更改都已保存在數據文件中的一條記錄。
  • 恢復管理器 (RMAN) 備份元數據

用戶可以創建控制文件的多個副本,從而允許 Oracle 寫控制文件的多個副本以防止災難的發生。如果操作系統支持磁盤鏡像,那麼也可以創建控制文件的鏡像,從而允許 O/S 將控制文件的一個副本寫到多個磁盤上。每一次用戶掛載 Oracle 數據庫時,均使用它的控制文件來識別數據文件和聯機重做日誌文件(必須爲數據庫操作而打開)。如果更改了數據庫的物理組成,如創建了一個新的數據文件或重做日誌文件,則 Oracle 將修改數據庫的控制文件以反映該更改。只要更改了數據庫的結構,就應備份控制文件。結構更改可能包括添加、刪除或更改數據文件或表空間以及添加或刪除聯機重做日誌。

聯機重做日誌文件
重做日誌對於恢復絕對至關重要。例如,假定一次電力中斷使 Oracle 無法將修改的數據永久寫入數據文件中。在這種情況下,可以把數據文件中較早版本的數據與記錄在聯機重做日誌中的最近更改結合起來重建丟失的數據。每個 Oracle 數據庫都包含一組兩個或多個聯機重做日誌文件。Oracle 爲每個重做日誌文件分配一個日誌序列號以唯一地標識它。該組數據庫重做日誌文件共同稱爲數據庫的重做日誌。

Oracle 使用重做日誌記錄對數據庫所做的所有更改。Oracle 在重做記錄(重做緩衝區中一個描述更改的條目)中記錄每一個更改。例如,假定用戶更新了工資單表中的一個列值(從 5 改爲 7)。Oracle 將舊值記錄在撤銷記錄中,將新值記錄在重做記錄中。因爲重做日誌存儲了對數據庫所做的每次更改,所以這個事務的重做記錄實際上包含了三個部分:

  • 對撤消事務表所做的更改
  • 對撤消數據塊所做的更改
  • 對工資單表數據塊所做的更改

如果用戶隨後提交了對工資單表所做的更新 — 使得由 SQL 語句執行的更改變爲永久性的 — 那麼 Oracle 將生成另一條重做記錄。通過這種方式,系統仔細地監視着在數據庫中發生的一切。

重做日誌文件的循環使用
日誌寫入器 (LGWR) 將重做日誌條目寫到磁盤上。重做日誌數據是在系統全局區的重做日誌緩衝區中生成的。隨着事務的提交和日誌緩衝區的充滿,LGWR 將重做日誌條目寫到一個聯機重做日誌文件中。LGWR 以循環方式書寫聯機重做日誌文件:當它寫滿了當前聯機重做日誌文件(稱爲活動文件)時,LGWR 將寫入下一個可用非活動重做日誌文件。LGWR 循環使用數據庫中的聯機重做日誌文件,覆蓋舊的重做數據。根據是否啓用了存檔,寫滿的重做日誌文件可按以下方式進行重用:

  • 如果禁用了存檔,則一旦將記錄在日誌中的更改保存到數據文件中,就可再次使用寫滿的聯機重做日誌了。
  • 如果啓用了存檔,則一旦將更改保存到數據文件中並將文件存檔後,就可再次使用寫滿的聯機重做日誌了。

存檔重做日誌文件
存檔日誌文件是 Oracle 已經在其中寫滿了重做條目、將其以非活動狀態提供並拷貝到一個或多個日誌存檔目標位置的重做日誌。Oracle 可以在兩種模式中的任意一種之下運行:

  • ARCHIVELOG — Oracle 在週期中重用寫滿的聯機重做日誌文件之前將其存檔。
  • NOARCHIVELOG — Oracle 在週期中重用寫滿的聯機重做日誌文件之前不將其存檔。

在 ARCHIVELOG 模式下運行數據庫有以下好處:

  • 數據庫可以從實例故障和介質故障中完全恢復過來。
  • 用戶可以執行聯機備份,即在數據庫打開並且可供使用的同時備份表空間。
  • 可將存檔的重做日誌傳輸並應用到備用數據庫中
  • Oracle 支持多重存檔日誌,以避免存檔日誌上任何可能的單點故障。
  • 用戶擁有更多恢復選擇,如能夠執行表空間時間點恢復 (TSPITR)

在 NOARCHIVELOG 模式下運行數據庫有以下後果:

  • 用戶只能在正常停機後、數據庫完全關閉時備份數據庫。
  • 一般而言,唯一的介質恢復選擇就是還原整個數據庫,這將導致丟最後一次備份後執行的所有事務。

自動管理的撤消
每個 Oracle 數據庫都必須有一種方法來保留用於回滾或撤消對數據庫所做更改的信息。這種信息包含了事務的操作的記錄(主要在提交這些操作之前)。Oracle 將這些記錄統稱爲撤消。過去,Oracle 曾使用回滾段存儲撤消。事實證明,對這些回滾段的空間管理十分複雜。Oracle 現在提供了存儲撤消的另一種方法,它消除了管理回滾段空間的複雜性,併爲 DBA 提供對撤消被覆蓋前所保留時間的控制。這種方法使用一個撤消表空間。撤銷記錄用於:

  • 在執行 ROLLBACK 語句時回滾事務
  • 恢復數據庫
  • 提供讀一致性

當執行回滾語句時,撤銷記錄用於撤銷由未提交的事務對數據庫所做的更改。在數據庫恢復期間,撤銷記錄用於撤銷從重做日誌應用到數據文件中的任何未提交的更改。在一個用戶更改數據的同時,撤銷記錄將爲訪問數據的另一用戶保留數據的前鏡像,從而提供讀一致性。

瞭解基本備份
備份策略爲防止數據丟失提供了安全防護。回答以下問題可以幫助數據庫管理員制訂一個強大的備份策略:

  • 可能出現何種類型的故障?
  • 應當備份哪些信息?
  • 應當使用哪種備份方法?
  • 應當聯機還是離線備份?
  • 備份的頻率?
  • 如何避免危險的備份方法?

可能出現何種類型的故障?
數據丟失的原因各種各樣。下面是可能導致數據丟失的一些最常見的故障類型。

語句故障 是 Oracle 程序在處理語句時的邏輯錯誤。例如,用戶執行了無效 SQL 結構的語句。當發生語句故障時,Oracle 自動撤銷語句的所有效果並將控制返回給用戶。

進程故障 是訪問 Oracle 的用戶進程中出現的故障(即異常斷開或進程終止)。儘管 Oracle 和其他的用戶進程可以繼續工作,但出現故障的用戶進程將不能繼續工作。如果用戶進程在更改數據庫時出現故障,則 Oracle 後臺進程將撤銷未提交事務的效果。

實例故障 是使 Oracle 實例(即 SGA 和後臺進程)無法繼續工作的問題。實例故障可能源於硬件問題(如電力中斷)或軟件問題(如操作系統崩潰)。當實例出現故障時,Oracle 不會將 SGA 緩衝區中的數據寫到數據文件中。

用戶或應用程序錯誤 是導致數據丟失的用戶錯誤。例如,用戶可能無意地從工資單表中刪除數據。這種用戶錯誤可能需要將數據庫或對象恢復到該錯誤發生前的某個時間點上。爲了允許從用戶錯誤中恢復過來並滿足其他獨特的恢復要求,Oracle 提供了閃回技術。瞭解關於閃回技術的更多信息。

介質故障 是當 Oracle 試圖寫或讀操作數據庫所需要的文件時出現的物理問題。一個常見的例子是磁盤頭損壞,它將導致磁盤驅動器上的所有數據丟失。磁盤故障可能影響各種文件(包括數據文件、重做日誌文件和控制文件)。因爲數據庫實例無法繼續正常工作,所以它無法將 SGA 的數據庫緩衝區中的數據寫到數據文件中。

應當備份哪些信息?
一個數據庫包含各種類型的數據。當制訂備份策略時,DBA 必須確定他們要複製哪些信息。基本的備份類型包括:

  • 聯機數據庫備份
  • 離線數據庫備份
  • 整個數據庫
  • 表空間
  • 數據文件
  • 控制文件
  • 存檔重做日誌
  • 配置文件

在確定要備份的信息時,基本的原則是根據數據的重要性和更改的程度來確定數據的優先級。例如,雖然存檔日誌不發生變化,但它們對恢復數據庫至關重要,因此如果可能應維護多個副本。然而,費用帳戶表被用戶不斷更新。因此,應當經常備份該表空間,以防止在恢復時不得不應用過多的重做數據。

可以以多方式組合備份。例如,DBA 可以決定每週執行整個數據庫的備份,以確保獲得原始數據庫信息的一個相對較新的副本,而每天備份使用最頻繁的表空間。DBA 還可以爲所有重要的控制文件和存檔重做日誌創建多個副本作爲額外的安全防護。

聯機數據庫備份
聯機備份也稱爲開放備份,其中所有的讀-寫數據文件和控制文件都沒有對相同的 SCN 設置檢查點。例如,一個讀-寫數據文件頭可能包含一個爲 100 的 SCN,而其他讀-寫數據文件頭包含一個爲 95 或 90 的 SCN。在所有這些頭 SCN 一致前,即將聯機重做日誌中記錄的所有更改都保存到磁盤上的數據文件前,Oracle 無法打開數據庫。如果數據庫必須保持不間斷運行,則您除了在 ARCHIVELOG 模式下執行整個數據庫的聯機備份之外別無選擇。

離線數據庫備份
在這種備份中,所有的數據文件和控制文件在相同的時間點上都保持一致 — 例如,對相同的 SCN 保持一致。在一個一致的備份中被允許擁有舊 SCN 的唯一表空間是隻讀且“離線-正常”的表空間,它們與備份中的其他數據文件保持一致。這種類型的備份允許用戶打開由備份創建的文件集,而無需應用重做日誌,這是因爲數據已經是一致的了。執行這種備份的唯一方式是正常關閉數據庫,然後在數據庫關閉時執行備份。一個一致的整個數據庫備份是爲在 NOARCHIVELOG 模式下運行的數據庫提供的唯一有效的備份選擇。

整個數據庫備份
這種最常見的備份類型 — 整個數據庫備份 — 包含了控制文件以及屬於該數據庫的所有數據庫文件。如果在 ARCHIVELOG 模式下運行,則 DBA 還可以選擇在一段時間內備份數據庫的不同部分,從而一部分一部分地構建整個數據庫備份。

表空間備份
表空間備份是數據庫的一個子集。表空間備份只有當數據庫在 ARCHIVELOG 模式下運行時纔有效。表空間備份對於在 NOARCHIVELOG 模式下運行的數據庫有效的唯一時間是當該表空間只讀或離線正常時。

數據文件備份
數據文件備份是單個數據文件的備份。數據文件備份沒有表空間備份那麼常見,並且只有當數據庫在 ARCHIVELOG 模式下運行時纔有效。數據文件備份對於在 NOARCHIVELOG 模式下運行的數據庫有效的唯一時間是當數據文件是表空間中唯一的文件時。例如,備份是表空間備份,但表空間只包含一個文件並且只讀或離線正常。

控制文件備份
控制文件備份是數據庫控制文件的備份。如果數據庫是打開的,那麼用戶可以通過執行以下 SQL 語句或使用恢復管理器 (RMAN) 來創建有效的備份:ALTER DATABASE BACKUP CONTROLFILE to 'location'。

存檔重做日誌備份
存檔重做日誌是成功的介質恢復的關鍵。您希望根據可用磁盤空間和在數據庫上執行的事務的數量在磁盤上儘可能長時間地保留存檔日誌,並定期備份它們以確保較完整的恢復。

配置文件
配置文件可能包含 spfile 文件或 init.ora、口令文件、tnsnames.ora 和 sqlnet.ora。因爲這些文件不經常變化,所以它們不需要頻繁備份。如果您丟失了某個配置文件,您可以很容易地重新手動創建它。當還原時間更重要時,還原配置文件的一個備份要比以特定格式手動創建一個文件要快得多。

應當使用哪種備份方法?
Oracle 爲用戶提供了幾種創建備份的基本方法以備選擇。這些方法包括:

  • 恢復管理器 (RMAN) — 建立與服務器進程的連接並使備份與恢復操作的數據轉移自動化的一個組件。
  • Oracle 企業管理器 — 調用恢復管理器的 GUI 界面。
  • Oracle Data Pump — 該實用程序通過將數據以專有格式從 Oracle 數據庫寫入操作系統文件來創建邏輯備份。稍後可以將這種數據導入數據庫中。
  • 用戶管理的方法 — 通過執行特別針對用戶操作系統的命令手動備份數據庫。

創建恢復管理器備份
恢復管理器 (RMAN) 是一個強大的通用程序,它允許用戶創建 RMAN 備份或用戶數據的鏡像副本。當用戶使用 RMAN BACKUP 命令指定文件或存檔日誌時,RMAN 默認創建一個備份集作爲輸出。一個備份集是專有格式的一個文件或一些文件,它需要使用 RMAN RESTORE 命令來進行恢復操作。相比而言,當使用 BACKUP AS COPY 命令創建文件的鏡像副本時,它是實例可用 (instance-usable) 格式的 — 用戶不需要調用恢復管理器即可還原或恢復它。

當執行 RMAN 命令(如備份或還原)時,恢復管理器建立了一個與 Oracle 服務器進程的連接。然後服務器進程從目標數據庫中備份指定的數據文件、控制文件或存檔日誌。恢復目錄是包含各種對備份和恢復有用的信息的中央信息庫。RMAN 自動建立備份所需的所有文件的名稱和位置。恢復管理器還支持增量備份 — 僅備份那些自上次備份以來發生變化的塊。在傳統的備份方法中,必須備份數據文件中用到的所有數據塊。

自動的基於磁盤的備份和恢復
創建不同的與備份和恢複相關的文件的組件對彼此一無所知,或者也不瞭解它們存儲數據的文件系統的大小。利用自動的基於磁盤的備份和恢復,您可以創建一個閃回恢復區,它將使與備份相關的文件的管理自動化。在磁盤上選擇一個位置和存儲空間的上界,並設置一個保留策略 — 它控制需要爲恢復保留備份文件的時間。數據庫在這個空間內爲您的數據庫管理用於備份的存儲器、存檔日誌和其他與恢複相關的文件。當 RMAN 需要爲新的文件回收空間時,可以刪除不再需要的文件。如果您不使用閃回恢復區,則您必須爲與備份相關的文件手動管理磁盤空間並平衡不同類型文件間的空間使用。Oracle Corporation 建議您啓用一個閃回恢復區以簡化您的備份管理。

瞭解關於 RMAN 的更多信息

Oracle 企業管理器
儘管通常把恢復管理器用作一個命令行實用程序,但 Oracle 企業管理器中的備份嚮導是 GUI 界面,通過點擊即可實現備份與恢復。Oracle 企業管理器 (EM) 支持用戶常用的備份與恢復特性。

  • 備份配置,用於定義和保存常用配置以供重複使用
  • 備份與恢復嚮導,用於引導用戶完成創建備份腳本的步驟並將其作爲計劃作業提交
  • 備份作業庫,用於保存可以被檢索並應用到多個目標上的常用備份作業
  • 備份管理,用於查看並在 RMAN 備份上進行維護。

瞭解關於 Oracle 企業管理器 的更多信息

使用 Data Pump 提供額外備份保護
可以使用 Data Pump 實用程序創建數據的邏輯備份來補充物理備份。邏輯備份存儲爲數據庫創建的模式對象的相關信息。Data Pump 以專有格式將數據從數據庫寫入 Oracle 文件中,然後可以使用導入實用程序將這些文件導入數據庫中。

瞭解關於 Data Pump 的更多信息

用戶管理的備份
可以使用操作系統命令(如 UNIX dd 或 tar 命令)來創建備份。還可以通過編寫腳本來使備份操作自動化。用戶可以一次性創建整個數據庫的備份或備份個別的表空間、數據文件、控制文件或存檔日誌。個別表空間、數據文件、控制文件和存檔日誌的備份可以補充整個數據庫備份。如果數據庫關閉或數據庫進入熱備份模式來執行聯機備份,則還可以使用 O/S 命令來執行這些備份。

瞭解基本的恢復策略
基本的恢復包含兩個部分:還原物理備份,然後用自最後一次備份以來對數據庫所做的更改更新它。恢復的最重要方面是確保所有的數據文件就相同時間點而言是一致的。Oracle 具有完整性檢查,以防止用戶在所有數據文件彼此保持一致之前打開數據庫。在準備恢復策略時,瞭解這些問題的答案至關重要:

  • 恢復如何工作?
  • 恢復的類型有哪些?
  • 應當使用哪種恢復方法?

恢復如何工作?
在每一種類型的恢復中,Oracle 都按順序將重做數據應用到數據塊中。Oracle 使用控制文件和數據文件頭中的信息來確定是否必須進行恢復。恢復有兩個部分:前滾和回滾。當 Oracle 前滾時,它將重做數據應用到相應的數據塊中。Oracle 系統地遍覽重做日誌,以確定它需要將哪些更改應用到哪些塊中,然後更改這些塊。例如,如果用戶向表中添加了一行,但服務器在將更改保存到磁盤之前就崩潰了,則 Oracle 可以使用這個事務的重做記錄來更新該數據塊以反映該新行。

一旦 Oracle 完成了前滾階段,就可以打開 Oracle 數據庫了。回滾階段在數據庫打開後開始。回滾信息存儲在事務表中。Oracle 在整個表中搜索未提交的事務,撤銷它找到的任何未提交的事務。例如,如果用戶從未提交添加行的 SQL 語句,則 Oracle 將在事務表中發現這一事實並撤銷該更改。

恢復的類型有哪些?
有三種基本的恢復類型:實例恢復、崩潰恢復和介質恢復。Oracle 在實例啓動時自動執行前兩種恢復。只有介質恢復需要用戶執行命令。當一個實例發現另一個實例已經崩潰時,實例恢復(只可能在 Oracle 真正應用集羣配置中存在)將在打開的數據庫中進行。一個倖存的實例將自動使用重做日誌來恢復數據庫緩衝區中已提交但在實例出現故障時丟失的數據。Oracle 還將撤銷當實例崩潰時在出現故障的實例上正在進行的任何事務,然後在恢復完成之後清除崩潰的實例擁有的任何鎖。

崩潰恢復在單實例數據庫崩潰或多實例數據庫的所有實例崩潰時發生。在崩潰恢復中,實例必須首先打開數據庫,然後執行恢復操作。一般而言,在崩潰或關機退出之後第一個打開數據庫的實例將自動執行崩潰恢復。

與崩潰恢復和實例恢復不同,介質恢復通常響應介質故障並根據用戶的命令來執行。在介質恢復中,可以使用聯機或存檔重做日誌來使還原的備份爲最新或將其更新至一個特定的時間點。介質恢復可以還原整個數據庫、一個表空間或一個數據文件並將它們還原至指定的時間。無論何時使用重做日誌或將數據庫恢復到某個非當前時間,都將執行介質恢復。

總可以使用還原的備份來執行該種恢復。介質恢復主要分爲完全恢復和不完全恢復。完全恢復涉及將重做數據與數據庫、表空間或數據文件等的備份結合使用以將其更新至最新的時間點。它之所以稱爲完全備份是因爲 Oracle 將所有重做更改應用到備份上。通常,介質恢復在介質故障損壞了數據文件或控制文件之後執行。

瞭解關於自動故障恢復 的更多信息

恢復選項
如果用戶沒有將數據庫完全恢復至最新時間,那麼必須指示 Oracle 要恢復到什麼程度。用戶可以執行:

  • 表空間時間點恢復 (TSPITR),它使用戶能夠將一個或多個表空間恢復至與數據庫其餘的部分不同的某個時間點。
  • 基於時間的恢復,也稱爲時間點恢復 (PITR),它將數據恢復至一個指定的時間點。
  • 基於取消的恢復,它恢復到執行 CANCEL 命令爲止。
  • 基於更改的恢復或日誌序列恢復。如果使用了 O/S 命令,那麼基於更改的恢復將一直恢復到重做記錄中一個指定的 SCN 爲止。
  • 從人爲錯誤中閃回

如果使用了恢復管理器,那麼日誌序列恢復將一直恢復到一個指定的日誌序列號。當執行不完全恢復時,用戶必須在打開數據庫時重置聯機重做日誌。重置數據庫的新版本稱爲一個新化身。用 RESETLOGS 選項打開數據庫將告知 Oracle 丟棄一些重做。在 Oracle 數據庫 10g 中,控制文件增加了新的結構,這些結構提供了利用先前化身的備份通過 RESETLOGS 操作進行恢復的能力。

從人爲錯誤中恢復
Oracle 數據庫 10g 體系結構利用了人爲錯誤的數據庫恢復領域中獨有的技術進展。閃回技術提供了一組新功能,可及時查看數據並在時間上前後滾動數據。使用閃回功能,可以查詢模式對象的過去版本、查詢歷史數據、執行變化分析,或執行自助修復,以便在數據庫聯機時從邏輯損壞中恢復。利用 Oracle 數據庫 10g 閃回技術,您完全可以取消過去的操作!

瞭解關於閃回技術 的更多信息

應當使用哪種備份方法?
用戶有兩種物理文件恢復基本方法可以選擇。他們可以:

  • 使用恢復管理器進行自動恢復。
  • 執行 SQL 命令。

使用恢復管理器進行恢復
基本的 RMAN 命令是 RESTORE 和 RECOVER。RMAN 可用於從備份集或鏡像副本中將數據文件還原至它們當前的位置或一個新位置。如果需要任何存檔的重做日誌來完成恢復操作,RMAN 將自動還原並應用它們。在恢復目錄中,RMAN 保留了一個包含與執行過的每次備份相關的所有基本信息的記錄。如果沒有使用恢復目錄,則 RMAN 將使用控制文件來獲取必需的信息。RMAN RECOVER 命令可以用來執行完全介質恢復,應用增量備份,以及執行不完全介質恢復。

瞭解關於 RMAN 的更多信息

使用 SQL*Plus 進行恢復
管理員能夠在命令行使用 SQL*Plus 實用程序在文件上進行還原和執行介質恢復。用戶可以恢復數據庫、表空間或數據文件。在執行恢復之前,用戶需要:

  • 確定要恢復哪些文件。通常可以使用表 V$RECOVER_FILE。
  • 還原介質故障永久損壞的文件的備份。即使用戶沒有備份,在用戶擁有必要的重做日誌文件且控制文件包含損壞文件的名稱時仍可以執行恢復。
  • 如果無法將文件還原至其原始位置,則用戶必須重新定位還原的文件並將該新位置通知控制文件。
  • 還原必要的存檔重做日誌文件。

結論
Oracle 數據庫的備份和恢復對於保護數據不受崩潰、硬件故障和數據故障的影響非常重要。雖然 Oracle 提供了許多特性來保護您的數據,但備份是無法替代的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章