ARCHIVELOG模式中聯(lián)機(jī)備份Oracle數(shù)據(jù)
本文就ARCHIVELOG模式中聯(lián)機(jī)備份Oracle數(shù)據(jù)的操作予以說明。因?yàn)樵贏RCHIVELOG模式中,事務(wù)將繼續(xù)運(yùn)行,同時(shí),備份處理也在繼續(xù)??梢詾殚_發(fā)人員提供高效的數(shù)據(jù)備份。
與脫機(jī)備份不一樣,聯(lián)機(jī)備份只要求備份數(shù)據(jù)文件和控制文件。脫機(jī)數(shù)據(jù)庫的備份單位是整個(gè)數(shù)據(jù)庫,而聯(lián)機(jī)備份的備份單位是一些或全部表空間。
在 聯(lián)機(jī)備份Oracle 中,思想是,當(dāng)用戶執(zhí)行事務(wù)時(shí),將對(duì)數(shù)據(jù)庫所做的所有更改(提交或未提交的)都存儲(chǔ)到重做日志緩沖區(qū)中,隨后由 LGWr 進(jìn)程把它們寫到聯(lián)機(jī)重做日志文件中。重做日志是以循環(huán)的方式寫入的;因此,在重寫它們之前,需要通過啟動(dòng) ARCH 進(jìn)程來手動(dòng)或自動(dòng)對(duì)重做日志進(jìn)行歸檔。當(dāng)記錄了所有事務(wù)并在以后通過多路復(fù)用進(jìn)行歸檔時(shí)(使用參數(shù) LOG_ARCHIVE_DUPLEX_DEST),如果需要進(jìn)行媒介恢復(fù),那么可以使用這些歸檔的重做日志進(jìn)行恢復(fù)。
注意,使用聯(lián)機(jī)備份本身無法保證您不丟失數(shù)據(jù)。像通過多路復(fù)用(放在不同的位置)控制文件使數(shù)據(jù)庫免疫、使用聯(lián)機(jī)重做日志和歸檔重做日志這樣的步驟,都是避免單點(diǎn)故障所必需的。
在聯(lián)機(jī)備份Oracle 中,要從默認(rèn)的脫機(jī)備份切換到具有自動(dòng)歸檔的聯(lián)機(jī)備份,您需要執(zhí)行下面的操作:
在 init.ora 中,用適當(dāng)?shù)闹堤顚憛?shù) LOG_ARCHIVE_START、LOG_ARCHIVE_DEST、LOG_ARCHIVE_FORMAT 和 LOG_ARCHIVE_DUPLEX_DEST 和 LOG_ARCHIVE_DEST_N。
關(guān)閉和啟動(dòng)裝入(Mount)。
在 archivelog 模式下操作數(shù)據(jù)庫。
打開數(shù)據(jù)庫。
驗(yàn)證歸檔日志清單。
歸檔所有日志。
備份所有新創(chuàng)建的日志。
通過執(zhí)行命令“Alter Tablespace ts_name Begin Backup”,將任何或所有聯(lián)機(jī)表空間置于聯(lián)機(jī)備份模式來啟動(dòng)聯(lián)機(jī)備份。當(dāng)發(fā)出這個(gè)命令時(shí),處于聯(lián)機(jī)備份模式的所有數(shù)據(jù)文件都將被發(fā)放檢查點(diǎn) SCN。換句話說,將把數(shù)據(jù)緩沖區(qū)的所有臟位刷新到數(shù)據(jù)文件。在初始檢查點(diǎn) SCN 后,就不會(huì)再發(fā)放新的檢查點(diǎn) SCN。對(duì)于沒有處在聯(lián)機(jī)備份模式的那些數(shù)據(jù)文件,隨后的檢查點(diǎn)將在它們的文件頭中添加 SCN。當(dāng)發(fā)出 “Alter Tablespace ts_name End Backup”時(shí),在聯(lián)機(jī)備份數(shù)據(jù)文件的的文件頭中再次記錄了檢查點(diǎn) SCN。Begin Backup 和 End backup 命令讓 Oracle 知道要重做什么操作,及在前滾會(huì)在什么地方終止。
Oracle 建議在 Begin backup和 End backup命令之間耗用最少的時(shí)間。此外,應(yīng)該在這段時(shí)間內(nèi)盡量少進(jìn)行用戶活動(dòng),這是由于聯(lián)機(jī)備份Oracle 會(huì)在第一次更改塊時(shí)記錄下整個(gè)塊的映像。對(duì)于聯(lián)機(jī)備份數(shù)據(jù)文件,這將導(dǎo)致生成大量的重做日志。實(shí)際上,在執(zhí)行 Begin backup后,接下來應(yīng)該立刻執(zhí)行系統(tǒng)復(fù)制,然后由 End backup來快速結(jié)束操作。備份是嚴(yán)格按照順序進(jìn)行的,這意味著在備份了表空間 1 中的數(shù)據(jù)文件后,將繼續(xù)備份表空間 2 中的數(shù)據(jù)文件。
對(duì)于聯(lián)機(jī)備份,需要特別注意 SYSTEM 表空間和回滾段表空間。同時(shí),還需要確保只要對(duì)數(shù)據(jù)庫的模式進(jìn)行了更改,就要對(duì)控制文件進(jìn)行備份。備份腳本應(yīng)該反映最新的模式。
DB2UDB 聯(lián)機(jī)備份
DB2UDB 執(zhí)行時(shí)間點(diǎn)恢復(fù)的機(jī)制類似于 Oracle。要了解 DB2UDB 聯(lián)機(jī)備份和恢復(fù),就需要了解歸檔日志記錄。有三種我們需要熟悉的日志定義:
活動(dòng)日志 —— 該日志包含沒有提交或回滾的事務(wù),或者已提交但尚未刷新到磁盤的事務(wù)。
聯(lián)機(jī)歸檔日志 —— 該日志包含已提交并且被記錄到硬盤的事務(wù)的信息,和活動(dòng)日志位于同一目錄。
脫機(jī)歸檔日志 —— 如果將聯(lián)機(jī)歸檔日志從活動(dòng)日志所在目錄移動(dòng)到其他目錄或磁帶中,就成為了脫機(jī)歸檔日志。
#p#
有許多與日志記錄有關(guān)的配置參數(shù):
LOGFILSIZ —— 每個(gè)日志文件的大小,默認(rèn)值是 250,單位為 4KB。
LOGPRIMARY —— 主日志文件的個(gè)數(shù)(默認(rèn)值是 3)。
LOGSECOND —— 主日志文件占用滿時(shí),可以分配的二級(jí)日志文件的個(gè)數(shù)。當(dāng)把這個(gè)參數(shù)設(shè)為 -1 時(shí)(版本 8),可以使用無限數(shù)量的活動(dòng)日志。
NEWLOGPATH —— 用來更改日志文件的存儲(chǔ)位置。要想使該參數(shù)生效,需要重新激活數(shù)據(jù)庫。
MIRRORLOGPATH —— 日志文件的鏡像路徑,以避免單點(diǎn)故障。
OVERFLOWLOGPATH —— 指定前滾期間可以在哪些目錄搜索需要的日志,以允許前滾操作能訪問多個(gè)目錄中的日志。
USEREXIT——用于啟動(dòng)用戶出口功能,進(jìn)行日志的自動(dòng)歸檔。
BLK_LOG_DSK_FUL——當(dāng) DB2無法在活動(dòng)日志路徑中創(chuàng)建新日志文件時(shí),防止生成磁盤已滿錯(cuò)誤。
為了使用聯(lián)機(jī)備份,必須打開歸檔日志記錄。通過將 LOGRETAIN 設(shè)為 ON,可以打開歸檔日志記錄。
歸檔日志記錄是一種不同于循環(huán)日志記錄的日志記錄機(jī)制,因?yàn)檠h(huán)日志記錄重寫了提交的日志,而歸檔日志記錄歸檔了提交的日志。
在歸檔日志記錄中,不能重用已經(jīng)變成歸檔日志的日志。要移動(dòng)那些聯(lián)機(jī)歸檔日志,您需要手動(dòng)移動(dòng)它們或者使用用戶出口程序(user exit)來移動(dòng)它們。
默認(rèn)情況下,活動(dòng)和聯(lián)機(jī)歸檔日志保存在 SQLOGDIR 目錄中。NEWLOGPATH 數(shù)據(jù)庫配置參數(shù)確定了將在哪里存儲(chǔ)未來的活動(dòng)歸檔日志。要想使 NEWLOGPATH 參數(shù)生效,需要停用數(shù)據(jù)庫(目的是關(guān)閉所有活動(dòng)日志文件)。然后,重新激活數(shù)據(jù)庫將導(dǎo)致在新路徑中創(chuàng)建新日志文件,原來的歸檔日志將留在原來的路徑中。
當(dāng)進(jìn)行聯(lián)機(jī)備份時(shí),將記錄所有的數(shù)據(jù)庫事務(wù)。在完成聯(lián)機(jī)備份之后,DB2將強(qiáng)行關(guān)閉當(dāng)前活動(dòng)日志,并對(duì)其進(jìn)行歸檔,
要防止脫機(jī)歸檔日志的單點(diǎn)故障,比如媒介失敗,則應(yīng)該使用日志鏡像。MIRRORLOGPATH 是用來指定鏡像路徑的配置參數(shù),它允許 DB2將相同日志文件的第二份副本寫入不同目錄中。您需要重新激活數(shù)據(jù)庫,以使 MIRRORLOGPATH 配置參數(shù)變得有效。
如果將副本寫入鏡像日志路徑時(shí)發(fā)生問題,那么 DB2將在管理通知日志中寫入消息,指出已經(jīng)碰到錯(cuò)誤。DB2將繼續(xù)把日志記錄寫入能工作的日志路徑中。不需要同步日志路徑。要確定哪個(gè)日志是活動(dòng)的,哪些日志是歸檔的,請(qǐng)使用 DB2命令 GET DB CFG 來查看“第一個(gè)活動(dòng)日志文件”。該命令提供了目前活動(dòng)的日志文件,因此被歸檔的日志將是那些比當(dāng)前日志更早的日志。
此外,諸如數(shù)據(jù)庫、表空間或增量的備份的每個(gè)備份操作都將包括恢復(fù)歷史文件(RHF)的一個(gè)副本。您可以使用歷史文件中提供的信息,將整個(gè)數(shù)據(jù)庫或數(shù)據(jù)庫的一部分恢復(fù)到某個(gè)時(shí)間點(diǎn)。每個(gè)數(shù)據(jù)庫都會(huì)創(chuàng)建一個(gè)恢復(fù)歷史文件,并且在下列情況下會(huì)自動(dòng)對(duì)該文件進(jìn)行更新:
備份數(shù)據(jù)庫或表空間。
恢復(fù)數(shù)據(jù)庫或表空間。
前滾數(shù)據(jù)庫或表空間。
創(chuàng)建表空間。
修改表空間。
休止表空間。
重命名表空間。
刪除表空間。
加載表。
刪除表。
重組表。
【編輯推薦】