作者:Morgan Lee / 北祥公司 經理
DB2資料庫的備份方式依影響使用程度可分為離線備份(offline)與線上備份(online)兩種,資料庫預設模式只允許離線備份,備份作業執行期間,DB2會鎖定資料庫不開放使用者存取資料。但對於必須提供7/24資料庫服務的客戶,或是備份的時間無法於既定維護時間內完成的客戶來說,就必須採用線上備份方式,備份作業執行期間使用者仍能正常存取資料。
啟用線上備份需設定LOGARCHMETH1、或LOGARCHMETH2資料庫參數,預設值為NO,表示不啟用,設為LOGRETAIN、USEREXIT、DISK、TSM、或VENDOR,表示啟用線上備份功能,但必須先實施一次完整離線備份後,之後才能開始實施線上備份。
例如:
DB2 UPDATE DB CFG FOR SAMPLE USING LOGARCHMETH1 DISK:/archive_log
DB2提供兩種備份方式:
DB2 BACKUP DB SAMPLE TO /backup
DB2 BACKUP DB SAMPLE ONLINE to /backup
因線上備份期間使用者可以存取資料庫,異動紀錄會儲存到交易日誌檔中,備份檔案並不會包含這些異動紀錄,因此若要使用該線上備份檔將資料庫還原時,必須將這些異動紀錄的交易日誌檔前滾(rollforward)到資料庫中,才能保持資料一致性並開啟資料庫使用,否則會出現SQL1276N錯誤訊息。DB2 V8.2 版本以前,線上備份期間所產生的交易日誌檔需額外保存,萬一遺失了這些交易日誌檔,那麼線上備份檔也無法正常還原資料庫。DB2 V8.2 版本後,備份指令增加了新的功能INCLUDE LOGS,可以將線上備份期間所產生的交易日誌檔打包存入該線上備份檔中,如此一來只需一份線上備份檔即可確保日後能順利還原資料庫。
例如:
DB2 BACKUP DB SAMPLE ONLINE TO /backup INCLUDE LOGS
還原資料庫時DB2會同時取出該線上備份檔中的交易日誌檔,放入LOGTARGET 指定的目錄中,後續的前滾(rollforward)作業才可以使用到。
例如:
DB2 RESTORE DB SAMPLE FROM /backup LOGTARGET /tmp
前滾(rollforward)資料庫作業時,可以選擇前滾的時間範圍,但至少需要前滾至線上備份完成時間之後,DB2會從以下來源自動搜尋需要的交易日誌檔,來源包含目前交易日誌檔位置(active log path)、歸檔日誌檔位置(archived log path)、OVERFLOWLOGPATH 資料庫參數、OVERFLOW LOG PATH 選項(rollforward 指令)。
實務上還原資料庫到線上備份完成時間點時,常遇到不知如何正確指定前滾時間範圍的難題,如果使用TO isotime USING LOCAL TIME,必須很確定正確的時間,若是使用TO END OF LOGS,又會因DB2自動搜尋到歸檔日誌檔位置,而將多餘的交易日誌檔前滾至資料庫中,超過了線上備份完成時間點。從DB2 V9.7版本後新增了 TO END OF BACKUP功能,能夠準確的將資料庫前滾到線上備份完成時間點。
例如:
DB2 ROLLFORWARD DB SAMPLE TO END OF BACKUP AND STOP OVERFLOW LOG PATH (/tmp)