DB2數(shù)據(jù)庫中的日志類型
如果您是剛剛才接觸DB2數(shù)據(jù)庫,那么DB2數(shù)據(jù)庫中的日志類型您是很有必要知道的,下面將為您詳細(xì)介紹DB2數(shù)據(jù)庫中的日志類型,供您參考,希望對您有所幫助。
1.日志類型
1.1活動日志(ACTIVE LOG)
功能類似于ORACLE的online redo log, 該日志包含尚未提交或回滾的事務(wù)單元的相關(guān)信息,以及已提交但尚未寫入數(shù)據(jù)庫文件的事務(wù)的信息。
具體又分兩種
l 主日志 數(shù)量由參數(shù)LOGPRIMARY決定,預(yù)先分配
l 從日志 當(dāng)主日志不夠時,臨時分配最多LOGSECOND數(shù)目個從日志
1.2. 存檔日志(ARCHIVED LOG)
存在于歸檔模式。
1.1.1. 聯(lián)機(jī)存檔日志(ONLINE ARCHIVED LOG)
它們是駐留在數(shù)據(jù)庫活動日志目錄(“online”)中、普通數(shù)據(jù)庫活動不再需要的日志文件。
1.1.2. 脫機(jī)存檔日志(OFFLINE ARCHIVED LOG)
它們是已經(jīng)從數(shù)據(jù)庫日志目錄移到脫機(jī)存儲位置(如備份服務(wù)器)、普通數(shù)據(jù)庫活動不需要的日志文件
這兩者的不同僅在于聯(lián)機(jī)歸檔日志存在于活動日志目錄下,而脫機(jī)的不是。
1.2. 日志模式
1.2.1. 循環(huán)日志模式
預(yù)先分配好的若干個主日志循環(huán)利用,當(dāng)不夠的時候,臨時申請若干個從日志#p#
1.2.2. 歸檔日志模式
當(dāng)開啟歸檔模式后,日志將不會被覆蓋,而是不停新產(chǎn)生。如果不設(shè)LOGARCHMETH1參數(shù)的話,歸檔日志將仍然待原目錄,就成為聯(lián)機(jī)歸檔日志。如下圖:
而如果,設(shè)置LOGARCHMETH1參數(shù)到另外一個目錄的話,歸檔后的日志將被自動移動到新目錄下,即被稱為脫機(jī)歸檔日志,如下圖:
2. DB2歸檔模式設(shè)定
1. 修改參數(shù)LOGRETAIN為recovery (缺省為N)
Db2 update db cfg for TEST using logretain recovery
2. 將數(shù)據(jù)庫做一次全備
Db2 BACKUP DATABASE TEST TO "C:test"
3. 修改USER_EXIT參數(shù)
a) 可以通過圖形界面;控制中心-》數(shù)據(jù)庫》DBNAME》右鍵》配置數(shù)據(jù)庫記錄向?qū)?br />
b) 通過命令行
Db2 UPDATE DB CFG FOR TEST USING logarchmeth1 "DISK:C:testMYLOG"
這樣日志就被自動歸檔到C:testMYLOG目錄下了。
3. DB2日志跟ORACLE日志的比較
有兩個比較大的不同點:
1. DB2要求活動日志被覆蓋或者歸檔之前必須保證里面的事務(wù)已經(jīng)commit或者rollback了,也就是說,如果一個事務(wù)太大,超過了主日志加從日志的和的話,將會報日志滿錯誤。而ORACLE沒這個要求,只可能在歸檔模式時,空間滿了才會報日志滿錯誤。
2. 對于歸檔模式而言,DB2的活動日志總是新分配的,不象oracle,在線日志總是重用的
4. 與復(fù)制相關(guān)的問題
1. 如果DB2啟用復(fù)制并且作為數(shù)據(jù)源后,必須使用歸檔日志模式,DB2復(fù)制是從日志或者歸檔日志里捕獲需要的表的修改信息的。
2. 如果復(fù)制進(jìn)程中途斷掉,經(jīng)過一段時間再啟用時,這時可能相應(yīng)的表修改信息已經(jīng)被歸檔了,這時db2將從歸檔日志(可能聯(lián)機(jī)歸檔日志,也可能是脫機(jī)歸檔日志)里面將信息去找。
3. 這就涉及到一個問題,歸檔日志不會無限期的放到歸檔目錄下,如何設(shè)定歸檔日志存放時間呢?如果時間過短,復(fù)制的capture進(jìn)程可能會發(fā)生找不到相應(yīng)日志,從而失敗的問題。存放時間太長的話,需要的歸檔空間又太多。這就需要根據(jù)實際情況,兩方面均衡的考慮了。
4. 如果真的發(fā)生了找不到日志的情況,可以有兩種方法
a) 將日志從別處拷回
b) 將復(fù)制完全刷新
對單向復(fù)制而言,復(fù)制完全刷新這個選項就已經(jīng)夠了。但對雙向復(fù)制而言,完全刷新的話,意味著從節(jié)點自上次刷新之后的修改就完全丟失了,所以***將日志拷回來。