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