DB2和Oracle中用于備份和恢復(fù)的數(shù)據(jù)結(jié)構(gòu)
本文將為您詳細介紹DB2和Oracle中用于備份和恢復(fù)的數(shù)據(jù)結(jié)構(gòu),這兩種數(shù)據(jù)庫都有一組組成備份和恢復(fù)機制的組件,下面將對這些備份和恢復(fù)的主要組件進行圖解,供您參考。
用于備份和恢復(fù)的數(shù)據(jù)結(jié)構(gòu)
Oracle 和 DB2 UDB 都有一組組成備份和恢復(fù)機制的組件。您在 圖 1和 圖 2 中看到的體系結(jié)構(gòu)圖對提供 Oracle 和 DB2 的備份和恢復(fù)的主要組件進行了概述。
圖 1. Oracle 體系結(jié)構(gòu)
Oracle 的內(nèi)存結(jié)構(gòu)
緩沖區(qū)緩存 —— 為存儲從物理數(shù)據(jù)文件讀取的數(shù)據(jù)塊而分配的內(nèi)存。
共享池 —— 為存儲解析的 SQL 語句、PL/SQL 過程的數(shù)據(jù)字典信息而分配的內(nèi)存。
日志緩沖區(qū) —— 為存儲更改數(shù)據(jù)的前后映像而分配的內(nèi)存。里面記錄的數(shù)據(jù)項是連續(xù)的。#p#
大型池 —— 分配給 RMAN 用于備份和恢復(fù)的內(nèi)存。
Oracle 后臺進程
數(shù)據(jù)庫讀寫器(DBWr)—— 異步地將緩沖區(qū)的臟數(shù)據(jù)寫到物理數(shù)據(jù)文件中。
日志讀寫器(LGWr)—— 從日志緩沖區(qū)寫入項目,以便重做日志文件。
檢查點(CKPt)—— 將數(shù)據(jù)文件頭和控制文件頭與當前重做日志和檢查點數(shù)同步。
歸檔器(ARCH)—— 自動化重做日志的復(fù)制。如果沒有打開歸檔器,那么需要對重做日志進行手動歸檔。
Oracle 數(shù)據(jù)庫結(jié)構(gòu)
數(shù)據(jù)文件 —— 存儲數(shù)據(jù)的物理文件。
控制文件 —— 包含數(shù)據(jù)庫物理結(jié)構(gòu)和狀態(tài)的文件,比如包含絕對路徑的數(shù)據(jù)文件和日志文件的名稱、文件的大小、塊大小、數(shù)據(jù)文件的聯(lián)機或脫機狀態(tài)等。它還包含日志文件的名稱和路徑、文件大小和塊大小。
重做日志 —— 包含更改數(shù)據(jù)的前后映像的文件。對于恢復(fù),重做日志是必需的。
參數(shù)文件 —— 存儲實例啟動的參數(shù)的文件。您可以有多種啟動實例的方式。Oracle 首先搜索 spfile_SID.ora 是否存在。如果該文件不存在,Oracle 接著會搜索 Spfile.ora 參數(shù)文件。如果 spfile_SID.ora 和 spfile.ora 都不存在,Oracle 將使用 init_SID.ora 參數(shù)文件。#p#
歸檔日志 —— 聯(lián)機重做日志的物理副本。在聯(lián)機恢復(fù)中,歸檔日志是必需的。#p#
接下來我們將看到 DB2 UDB 體系結(jié)構(gòu)和結(jié)構(gòu)。
圖 2. DB2 UDB 體系結(jié)構(gòu)
DB2 UDB 內(nèi)存結(jié)構(gòu)
包緩存 —— 為存儲靜態(tài)和動態(tài) SQL 語句而分配的內(nèi)存。
緩沖池 —— 在將數(shù)據(jù)刷新到磁盤之前,為存儲數(shù)據(jù)而分配的內(nèi)存。
日志緩沖區(qū) —— 在將所有對數(shù)據(jù)庫的更改刷新到磁盤上的日志之前,用來存儲這些更改的內(nèi)存。#p#
圖 3. DB2 UDB 數(shù)據(jù)庫結(jié)構(gòu)
驅(qū)動器/目錄 —— 在 CREATE DATABASE 命令中指定的驅(qū)動器或目錄。
DB2 實例名稱 —— DB2 實例所有者的名稱。
NODE0000 —— 數(shù)據(jù)庫的分區(qū)數(shù)。0 表示非分區(qū)的數(shù)據(jù)庫。
SQL00001 —— 從 1 開始的數(shù)據(jù)庫 ID。
SQLOGDIR —— 數(shù)據(jù)庫的默認日志目錄。
SQLT0000.0 —— 目錄表空間 SYSCATSPACE。
SQLT0001.0 —— 臨時表空間 TEMPSPACE1。
SQLT0002.0 —— 用戶表空間 USERSPACE1。#p#
備份和恢復(fù)選擇
對于 Oracle 和 DB2 UDB 數(shù)據(jù)庫,有兩種備份和恢復(fù)模式:脫機和聯(lián)機。可以用任何一種模式來進行完全和不完全恢復(fù)。
脫機備份要求所有應(yīng)用程序斷開與數(shù)據(jù)庫的連接,聯(lián)機備份允許在備份的過程中繼續(xù)執(zhí)行事務(wù)。在選定備份模式的恢復(fù)方面,存在隱含關(guān)系,因為備份模式?jīng)Q定了恢復(fù)模式。
顧名思義,完全恢復(fù)能夠完全地恢復(fù)所有提交的事務(wù),而不完全恢復(fù)在恢復(fù)事務(wù)時會丟失一些數(shù)據(jù)。Oracle 和 DB2 UDB 都能讓您恢復(fù)到當前時間,而且沒有數(shù)據(jù)丟失,或者恢復(fù)到當前時間以前的時間,但要丟失一些數(shù)據(jù)。
通常,恢復(fù)的目標是用選定的恢復(fù)模式在業(yè)務(wù)需求與操作需求之間達成某種妥協(xié)。例如,如果數(shù)據(jù)庫不是任務(wù)關(guān)鍵型和 24X7 型的,那么停機上一段時間和丟失一些數(shù)據(jù)可能是可以接受的,對于媒介錯誤,重新鍵入數(shù)據(jù)也可能是一種可以接受的方法。采用什么樣的恢復(fù)取決于可用的備份和 可用的日志,可能有時候除了執(zhí)行不完全恢復(fù)以外別無選擇。
有兩種類型的 DB2 日志記錄,每種日志記錄方法支持特定的恢復(fù)選項。這兩種類型的日志記錄是 循環(huán)和 歸檔日志記錄。當選擇使用循環(huán)日志記錄(默認情況下選擇這種日志記錄)時,惟一的選擇是執(zhí)行脫機備份和版本恢復(fù)。如果您選擇使用歸檔日志記錄,并執(zhí)行聯(lián)機 備份和前滾恢復(fù),那么您可以恢復(fù)到數(shù)據(jù)丟失最少的那個時間點,或者恢復(fù)到結(jié)束日志的時候。