在 Oracle的實際應用 中,聯機備份主要是要求在 ARCHIVELOG向相關的模式,它主要是執行Oracle數據的實際應用與操作。比如我們在一個在線商店中,Oracle數據庫必須是 24x7 都處於打開狀態的。
所以,讓用戶進行脫機備份而不訪問數據庫是不可能的。在這種場景中,應該在 ARCHIVELOG 模式下運行數據庫,在該模式中,事務將繼續運行,同時,備份處理也在繼續。
與脫機備份不一樣,聯機備份只要求備份數據文件和控制文件。脫機數據庫的備份單位是整個數據庫,而聯機備份的備份單位是一些或全部表空間。
在 Oracle 中,聯機備份的全部思想是,當用戶執行事務時,將對Oracle數據庫所做的所有更改(提交或未提交的)都存儲到重做日志緩沖區中,隨後由 LGWr 進程把它們寫到聯機重做日志文件中。重做日志是以循環的方式寫入的;因此,在重寫它們之前,需要通過啟動 ARCH 進程來手動或自動對重做日志進行歸檔。
當記錄了所有事務並在以後通過多路復用進行歸檔時(使用參數 LOG_ARCHIVE_DUPLEX_DEST),如果需要進行媒介恢復,那麼可以使用這些歸檔的重做日志進行恢復。
注意,使用聯機備份本身無法保證您不丟失數據。像通過多路復用(放在不同的位置)控制文件使Oracle數據庫免疫、使用聯機重做日志和歸檔重做日志這樣的步驟,都是避免單點故障所必需的。
在 Oracle 中,要從默認的脫機備份切換到具有自動歸檔的聯機備份,您需要執行下面的操作:
在 init.ora 中,用適當的值填寫參數 LOG_ARCHIVE_START、LOG_ARCHIVE_DEST、LOG_ARCHIVE_FORMAT 和 LOG_ARCHIVE_DUPLEX_DEST 和 LOG_ARCHIVE_DEST_N。
關閉和啟動裝入(Mount)。
在 archivelog 模式下操作數據庫。
打開數據庫。
驗證歸檔日志清單。
歸檔所有日志。
備份所有新創建的日志。
通過執行命令“Alter Tablespace ts_name Begin Backup”,將任何或所有聯機表空間置於聯機備份模式來啟動聯機備份。當發出這個命令時,處於聯機備份模式的所有數據文件都將被發放檢查點 SCN。換句話說,將把Oracle數據緩沖區的所有髒位刷新到數據文件。在初始檢查點 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 中的數據文件後,將繼續備份表空間 2 中的Oracle數據文件。
對於聯機備份,需要特別注意 SYSTEM 表空間和回滾段表空間。同時,還需要確保只要對數據庫的模式進行了更改,就要對控制文件進行備份。備份腳本應該反映最新的模式。
DB2UDB 聯機備份
DB2UDB 執行時間點恢復的機制類似於 Oracle。要了解 DB2UDB 聯機備份和恢復,就需要了解歸檔日志記錄。有三種我們需要熟悉的日志定義:
活動日志 —— 該日志包含沒有提交或回滾的事務,或者已提交但尚未刷新到磁盤的事務。
聯機歸檔日志 —— 該日志包含已提交並且被記錄到硬盤的事務的信息,和活動日志位於同一目錄。
脫機歸檔日志 —— 如果將聯機歸檔日志從活動日志所在目錄移動到其他目錄或磁帶中,就成為了脫機歸檔日志。
有許多與日志記錄有關的配置參數:
LOGFILSIZ —— 每個日志文件的大小,默認值是 250,單位為 4KB。
LOGPRIMARY —— 主日志文件的個數(默認值是 3)。
LOGSECOND —— 主日志文件占用滿時,可以分配的二級日志文件的個數。當把這個參數設為 -1 時(版本 8),可以使用無限數量的活動日志。
NEWLOGPATH —— 用來更改日志文件的存儲位置。要想使該參數生效,需要重新激活Oracle數據庫。
MIRRORLOGPATH —— 日志文件的鏡像路徑,以避免單點故障。
OVERFLOWLOGPATH —— 指定前滾期間可以在哪些目錄搜索需要的日志,以允許前滾操作能訪問多個目錄中的日志。
USEREXIT——用於啟動用戶出口功能,進行日志的自動歸檔。
BLK_LOG_DSK_FUL——當 DB2無法在活動日志路徑中創建新日志文件時,防止生成磁盤已滿錯誤。
為了使用聯機備份,必須打開歸檔日志記錄。通過將 LOGRETAIN 設為 ON,可以打開歸檔日志記錄。