天天看點

DB2日志頻繁歸檔的原因

[[email protected] db2cfg]$ db2 list history archive log all for testdb

 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID

 -- --- ------------------ ---- --- ------------ ------------ --------------

  X  D  20190108163458      1    D  S0000033.LOG C0000002      

 ----------------------------------------------------------------------------

    Comment:                                                                  

 Start Time: 20190108163458

   End Time: 20190108163458

     Status: A

 ----------------------------------------------------------------------------

  EID: 77 Location: /db2cfg/test/TESTDB/NODE0000/C0000002/S0000033.LOG

[[email protected] db2cfg]$ ll -h /db2cfg/test/TESTDB/NODE0000/C0000001

total 180K

-rw-r----- 1 test test 24K Jan  8 16:06 S0000020.LOG

-rw-r----- 1 test test 12K Jan  8 16:06 S0000021.LOG

-rw-r----- 1 test test 12K Jan  8 16:06 S0000022.LOG

-rw-r----- 1 test test 24K Jan  8 16:14 S0000023.LOG

-rw-r----- 1 test test 12K Jan  8 16:14 S0000024.LOG

-rw-r----- 1 test test 12K Jan  8 16:17 S0000025.LOG

-rw-r----- 1 test test 12K Jan  8 16:18 S0000026.LOG

-rw-r----- 1 test test 12K Jan  8 16:20 S0000027.LOG

-rw-r----- 1 test test 12K Jan  8 16:25 S0000028.LOG

-rw-r----- 1 test test 12K Jan  8 16:25 S0000029.LOG

-rw-r----- 1 test test 12K Jan  8 16:28 S0000030.LOG

-rw-r----- 1 test test 12K Jan  8 16:28 S0000031.LOG

-rw-r----- 1 test test 12K Jan  8 16:31 S0000032.LOG

檢視上面的歸檔日志大小都很小,而且比較頻繁,是為什麼呢?

正常情況下,隻要一個日志檔案寫滿了(不管活動還是非活動,含有未送出事務或事務雖送出

但是資料還未刷入磁盤的日志是活動日志)就會被歸檔,

但是在歸檔日志模式下,某些場景,如在資料庫deactivate/發出archive log指令/

online backup結束後等也會觸發日志管理器對日志進行歸檔(不管日志是否寫滿都截斷目前

日志進行歸檔,然後開始使用新的日志檔案)。

以上我的環境是由于測試環境,頻繁的做online backup測試和在沒有顯式激活資料庫情況

下頻繁connect和disconnect資料庫,是以導緻于頻繁的歸檔且大小非常小。

資料庫的激活有兩種方式:

顯式激活 :手動發出激活資料庫指令db2 activate db <dbname>,

隐式激活: 第一個連接配接連到資料庫時,db2 connect to <dbname>就會隐式地激活資料庫,

如果在沒使用 activate db指令激活資料庫下,第一次的連接配接時候,db2會配置設定所有資源如緩

沖池等,當所有對資料庫連接配接斷開後,資料庫就會自動deactivate,然後對日志進行歸檔,比如

頻繁執行 db2 connect to <dbname>

              db2 terminate/db2 connect reset

資料庫頻繁自動的deactivate,就會導緻于頻繁歸檔;

如果采用db2 activate db <dbname>顯式激活資料庫,所有連接配接斷開後,DB2并不會自動

deactivate資料庫,也就不會觸發日志歸檔。

-----------

另,線上的reorg操作為了保證可恢複性,也會記錄大量日志,需要的日志空間取決于要移動

的行數,索引鍵大小和個數,是以可能是表大小的好幾倍,是以線上reorg也可能看到大量的

歸檔日志生成,比如備份軟體tsm就有許多因為線上reorg産生大量歸檔日志的問題案例。

db2

繼續閱讀