解析DB2數(shù)據(jù)庫(kù)恢復(fù)概念
DB2數(shù)據(jù)庫(kù)恢復(fù)是怎樣的呢?如果您是個(gè)初學(xué)者,下面的內(nèi)容將會(huì)幫到你很大的忙。那么就由我?guī)ьI(lǐng)大家進(jìn)入DB2數(shù)據(jù)庫(kù)恢復(fù)的世界。
恢復(fù)場(chǎng)景
您永遠(yuǎn)也無(wú)法知道您的系統(tǒng)何時(shí)會(huì)碰到災(zāi)難或故障。因此***早作準(zhǔn)備,不但要防止數(shù)據(jù)受到外部因素的影響,也要防止內(nèi)部用戶(hù)無(wú)意中用不正確的信息破壞您的數(shù)據(jù)庫(kù)。
您有備份您的數(shù)據(jù)庫(kù)嗎?您能夠恢復(fù)執(zhí)行到***一秒的所有事務(wù)嗎?
為了盡量減少丟失的數(shù)據(jù),需要有一個(gè)恢復(fù)策略,確保這個(gè)恢復(fù)策略可行,并不斷地加以演練。您應(yīng)該考慮以下一些恢復(fù)場(chǎng)景:
- 系統(tǒng)運(yùn)行中斷。
- 停電,硬件故障,或者能導(dǎo)致數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài)的軟件故障。
- 事務(wù)失敗。
- 用戶(hù)可能無(wú)意中用不正確的數(shù)據(jù)修改您的數(shù)據(jù)庫(kù)。
- 媒介故障。
- 如果您的磁盤(pán)驅(qū)動(dòng)器變得無(wú)法使用,那么可能會(huì)丟失所有或部分?jǐn)?shù)據(jù)。
- 災(zāi)難。
- 放置系統(tǒng)的設(shè)施遭到火災(zāi)、洪水或其他類(lèi)似災(zāi)難的毀壞。
恢復(fù)策略
為了制定恢復(fù)策略,應(yīng)該問(wèn)一問(wèn)自己下面這些問(wèn)題:
- 您的數(shù)據(jù)可以從另一個(gè)地方裝載嗎?
- 您能承受多少數(shù)據(jù)的丟失?
- 您需要花多少時(shí)間才能恢復(fù)數(shù)據(jù)庫(kù)?
- 您有什么可用的資源來(lái)存儲(chǔ)備份和日志文件?
事務(wù)
一個(gè)工作單元(UOW),也稱(chēng)一個(gè)事務(wù),由一條或多條 SQL 語(yǔ)句組成,***是一條 COMMIT 或 ROLLBACK 語(yǔ)句。這個(gè) UOW 中的所有語(yǔ)句被看作一個(gè)單元,以確保數(shù)據(jù)的一致性。例如,一個(gè)客戶(hù)試圖將 100 美元從一個(gè)儲(chǔ)蓄帳戶(hù)轉(zhuǎn)到一個(gè)支票帳戶(hù)。在這種情況下,UOW 是這樣的:
DELETE 100 dollars from SAVINGS account
INSERT 100 dollars to CHECKING account
COMMIT
如果這些語(yǔ)句沒(méi)有被當(dāng)作一個(gè)單元,那么可以想像一下,如果在 DELETE 之后、INSERT 語(yǔ)句之前出現(xiàn)硬件故障,會(huì)出現(xiàn)什么情況:這個(gè)客戶(hù)將丟失 100 美元。但是,如果將這些語(yǔ)句當(dāng)作一個(gè)單元,就不會(huì)發(fā)生這樣的事情。DB2 將知道這個(gè)單元沒(méi)有完成(COMMIT),因此它將回滾之前的語(yǔ)句作出的所有更改,并將受影響的行返回到事務(wù)開(kāi)始之前的狀態(tài)。
沒(méi)有語(yǔ)句用于標(biāo)識(shí)一個(gè)事務(wù)的開(kāi)始。COMMIT 或 ROLLBACK 之后的語(yǔ)句將開(kāi)始一個(gè)新的事務(wù)。
恢復(fù)的類(lèi)型
我們來(lái)熟悉一下恢復(fù)類(lèi)型方面的概念。DB2 允許以下類(lèi)型的恢復(fù):
1、緊急事故恢復(fù)
通過(guò)撤銷(xiāo)(回滾)未提交的事務(wù),使處于不一致?tīng)顟B(tài)的數(shù)據(jù)庫(kù)恢復(fù)到一致?tīng)顟B(tài)。再次考慮前一屏中的例子。如果在 COMMIT 語(yǔ)句之前出現(xiàn)停電事故,則下一次 DB2 重新啟動(dòng)并訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí),DB2 將首先回滾 INSERT 語(yǔ)句,然后回滾 DELETE 語(yǔ)句。(回滾的語(yǔ)句的順序與這些語(yǔ)句當(dāng)初執(zhí)行的順序相反。)
2、版本恢復(fù)
允許使用從 BACKUP 命令獲得的一個(gè)備份鏡像恢復(fù)前一個(gè)版本的數(shù)據(jù)庫(kù)。被恢復(fù)的數(shù)據(jù)庫(kù)將包含關(guān)于當(dāng)執(zhí)行 BACKUP 命令時(shí)該數(shù)據(jù)庫(kù)所處狀態(tài)的信息。如果在備份之后又執(zhí)行了新的活動(dòng),則該信息將丟失。
3、前滾恢復(fù)
這種恢復(fù)結(jié)合使用完整的數(shù)據(jù)庫(kù)備份和日志文件,從而擴(kuò)展了版本恢復(fù)。在使用一個(gè)備份作為基準(zhǔn)之前,必須首先存儲(chǔ)這個(gè)備份,然后在該備份上應(yīng)用日志。這個(gè)過(guò)程允許將數(shù)據(jù)庫(kù)或表空間恢復(fù)到某個(gè)特定的時(shí)間點(diǎn)上。前滾恢復(fù)要求啟用歸檔日志記錄 。在 日志記錄類(lèi)型 中對(duì)歸檔日志記錄作了討論。
總結(jié):
1.在進(jìn)行DB2異地DB2數(shù)據(jù)庫(kù)恢復(fù)的時(shí)候,已經(jīng)要先建好相應(yīng)的目錄,數(shù)據(jù)文件目錄,日志目錄,歸檔日志目錄。
2.在操作失敗需要查看日志時(shí)候,盡量想辦法去看老日志,因?yàn)橹匦虏僮?,再?shí)時(shí)看日志,雖然比較明朗,但是需要花費(fèi)更多的時(shí)間。
【編輯推薦】