DB2數據庫的日誌文件管理html
DB2的日誌模式程序員
1.1循環日誌sql
當循環日誌生效時,事務數據將經過循環的方式寫入主要日誌文件。當存儲於某個日誌文件中的全部記錄都再也不須要用於恢復時,該日誌文件將被重用,而且能夠在之後再次成爲活動日誌文件。這意味着在循環日誌模式中,日誌文件的內容最終將被新日誌條目重寫。因爲日誌文件的內容被重寫覆蓋了,所以咱們只能將數據庫恢復到最後一次完整的數據庫備份。不能使用循環日誌執行時間點(point-in-time)恢復。數據庫
1.2 歸檔日誌windows
在歸檔日誌模式中,redo log條目將寫入主要日誌文件。可是,與循環日誌不一樣,這些日誌文件永遠都不可重用。當存儲於某個日誌文件中的全部記錄都再也不須要用於恢復時,該日誌文件將被標記爲非活動而不是可重用。這意味着它的內容永遠都不會被覆蓋。當第一個主要日誌文件變滿時,系統將分配一個新的日誌文件,這樣主要日誌文件的配置數量(LOGPRIMARY數據庫參數)將一直可用。安全
與單個事務相關的全部條目必須在活動日誌空間中保持一致。若是長時間運行的事務所須要的日誌空間大於主要日誌文件能夠提供的空間,則可能會分配並使用次要日誌文件。在歸檔日誌模式中,經過結合使用數據庫備份映像和日誌文件,咱們能夠將數據庫恢復到具體的時間點。有關此流程的詳細描述請參見下文。工具
設置了歸檔模式後,數據庫將支持前滾恢復。此時,系統中將會存在三種類型的日誌文件:spa
活動日誌:該日誌包含還沒有提交或回滾的事務單元的相關信息,以及已提交但還沒有寫入數據庫文件的事務的信息。.net
聯機存檔日誌:活動日誌中全部改動對正常處理已不須要,即該日誌中所記錄的事務都已提交併寫入數據庫文件時,該活動日誌轉換爲聯機存檔日誌。稱之爲聯機,是因爲它們與活動日誌存放在同一個目錄下。日誌
脫機存檔日誌:將聯機存檔日誌從活動日誌目錄下Copy到另外的地方存檔,就稱爲脫機存檔日誌。這些日誌可能在數據庫前滾恢復的時候仍然須要。
(所謂聯機歸檔日誌,就是歸檔日誌文件和活動日誌文件同在一個目錄下;而離線歸檔日誌,則是歸檔日誌與活動日誌分開存放)
日誌模式修改:https://www.cnblogs.com/net2012/archive/2013/02/04/2891502.html
既然 DB2 UDB 中用戶出口程序的目的是將數據庫日誌複製到歸檔目錄中,您最終將在活動日誌目錄(缺省是 SQLOGDIR)中獲得重複的日誌文件。您可能考慮除去這些重複的聯機歸檔日誌以釋放文件系統空間。在從數據庫目錄中除去這些日誌以前,要十分細心地驗證是否已經將它們成功地複製到歸檔目錄中。還必須確保數據庫管理器進行崩潰恢復時再也不須要它們。要肯定活動日誌目錄中哪些日誌文件不爲正常處理所需,可用如下命令檢查數據庫配置:
db2 "get db cfg for sample"
該命令的數據庫配置輸出將包括第一個活動日誌文件,例如:
First active log file = S000009.LOG
上面輸出中所示的日誌文件 S000009.LOG
是數據庫的當前活動日誌。任何小於該編號的日誌文件都被認爲是聯機歸檔日誌。
下面是一個示例:
在下面的方案中,活動日誌目錄中有日誌文件 S000000.LOG - S000009.LOG
,歸檔日誌目錄中有 S000000.LOG - S000008.LOG
。由於 S000009.LOG
是第一個活動日誌文件,因此,能夠從活動日誌目錄中刪除 S000001.LOG - S000008.LOG
以釋放磁盤空間。必須將 S000009.LOG
文件留在活動日誌目錄中,由於當前事務仍然在使用它。
也能夠檢查數據庫歷史文件,以查看活動日誌目錄中再也不須要哪些日誌文件。如下命令將列出數據庫備份信息:
db2 "list history backup all for database sample"
下面是該命令的輸出示例:
List History File for sample Number of matching file entries = 4 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log -- --- ------------------ ---- --- ------------ ------------ B D 20030416162026001 F D S0000010.LOG S0000014.LOG ------------------------------------------------------------ Contains 2 tablespace(s): 00001 SYSCATSPACE 00002 USERSPACE1 ------------------------------------------------------------ |
在上面的輸出中,最先的日誌將代表:須要 S0000010.LOG
及其以後的任何日誌。能夠安全地刪除 S00000010.LOG
以前的任何日誌。再次提醒,在從活動日誌目錄中刪除日誌文件以前,驗證在活動日誌目錄中存在這些日誌文件的副本是很是重要的。
儘管能夠從活動日誌目錄手工刪除日誌文件,可是除去聯機歸檔日誌文件的更安全方法是經過 prune logfile命令。能夠使用該命令來刪除活動日誌目錄中的日誌文件。在下面的示例中,如下命令將刪除日誌文件 S000000.LOG - S000008.LOG
:
db2 "prune logfile prior to S000009.LOG"
注:根據您的恢復策略,在有些狀況下前面的前滾操做可能會在數據庫上執行。歸檔目錄中舊的日誌文件可能會被具備相同名稱的新日誌文件覆蓋,從而會阻止您使用舊日誌文件對數據庫進行時間點恢復。用戶出口程序的程序員須要考慮這種狀況,這一點很是重要