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