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