DB2資料庫事務日誌已滿問題解決方案

2021-08-31 02:21:40 字數 2248 閱讀 4815

db2資料庫事務日誌已滿問題解決方案

文章分類:資料庫

1、資料庫事務日誌的最大大小

資料庫事務日誌的最大大小由資料庫的三個配置引數決定,分別是「主日誌檔案的數目」(logprimary)、「輔助日誌檔案的數目」 (logsecond)和「日誌檔案大小(4kb)」(logfilsiz)。資料庫事務日誌的最大大小的計算公式如清單 01-32 所示:

清單 1. 資料庫事務日誌的最大大小的計算公式

資料庫事務日誌的最大大小 = ( logprimary + logsecond )* logfilsiz * 4kb

logsecond 在這個公式中不能設為 「 -1 」 ,「 -1 」代表你在請求乙個無限的活動日誌空間,資料庫也不會報資料庫事務日誌已滿錯誤,如果空間不足則會報日誌磁碟已滿錯誤,具體如本章第五節所述。下面我們具體看一下這三個引數:

主日誌檔案的數目 logprimary

此資料庫配置引數用來指定要預分配的主日誌檔案個數。主日誌檔案建立分配給恢復日誌檔案的固定儲存器數量。在迴圈日誌管理模式下,資料庫事務將按順序重複使用主日誌,也就是當乙個主日誌已滿時,順序使用下乙個主日誌,如果主日誌已滿,則按需一次分配乙個輔助日誌,輔助日誌在使用完後,將被釋放。如果你發現資料庫會經常分配輔助日誌檔案,則可能需要通過增大日誌檔案大小或增大主日誌檔案的數目來提高系統效能。

輔助日誌檔案的數目 logsecond

此資料庫配置引數用來指定按需分配的輔助日誌檔案個數。盡量不要把此引數的值設定成「 -1 」 ,「 -1 」代表你在請求乙個無限的活動日誌空間,資料庫也不會報資料庫事務日誌已滿錯誤,如果空間不足則會報日誌磁碟已滿錯誤。

日誌檔案大小 logfilsiz

此資料庫配置引數用來指定日誌檔案的大小。

2、資料庫事務日誌已滿錯誤

資料庫事務日誌已滿錯誤是指當前事務無法寫入到活動日誌中(此時主日誌檔案和輔助日誌檔案已經全部用完或者沒有足夠當前事務寫入的空間),需要注意的是,這個錯誤和日誌磁碟空間已滿是兩個概念,如果想檢視日誌磁碟已滿錯誤,請參照本章第五節。資料庫事務日誌已滿不是由於磁碟空間滿引起的,而是由於沒有落實的事務總體過大,超過了資料庫事務日誌所能容納的最大大小所造成的。

一般系統上線之初(如果是分階段上線,則是每次上線之初),由於經常要導大量的資料,容易出現這個問題,當出現這個問題時,直接的辦法是找到引起這個錯誤的當前事務,終止掉這個事務即可,後續在操作時找到當前執行的事務中比較大的事務,盡量落實或回滾該事務。

一般情況下,建議大家在系統上線之初進行導數時,盡量使用 load 實用程式(如果是歸檔日誌模式,建議使用帶 nonrecoverable 選項的 load 實用程式,否則裝入完成後資料庫或裝入的表所在的表空間會被置於備份暫掛狀態,需要做一次全備才能解除備份暫掛狀態),load 實用程式在裝入資料時不記日誌。

如果使用 import 實用程式,建議使用 commitcount 選項。無論是迴圈日誌模式還是歸檔日誌模式,使用 import 實用程式匯入大量資料時,都有可能報資料庫事務日誌已滿(也就是當前匯入操作產生的事務過大,使得當前活動日誌滿了,包括所有的主日誌和輔助日誌都用完了),所以為了避免資料庫日誌已滿錯誤,提高併發性,可以使用 commitcount 選項,對要匯入的資料分階段提交。比如可以將 commitcount 引數設定為「自動」,指示 import 實用程式 內部決定何時進行落實。此外,也可以將 commitcount 選項設定為特定數字,指示 import 實用程式 在匯入指定記錄數後即進行落實。

盡量避免在上線之初直接使用「 insert into … select .. from .. 」語句,匯入乙個很大的事務的方式進行導數,這樣會使事務非常大。另外,還可以在系統上線之初把主日誌檔案的數目(logprimary)、輔助日誌檔案的數目(logsecond)和日誌檔案大小(4kb)(logfilsiz)三個引數調大,等系統正式上線穩定後,再調回合適的值。

如果是在正式上線後的系統,經常出現這個問題,就需要查詢原因,具體的原因可能有:

資料庫併發連線比較多

這種情況下,就要考慮適當增加主日誌檔案的數目(logprimary)和日誌檔案大小(4kb)(logfilsiz)。

有人通過第三方軟體或其他工具直接連線到了生產庫

在這樣的情況下,就要監控資料庫,看其是否經常寫一些大的語句對資料庫進行增刪改的操作,如果是的話,建議增加資料庫的控制,盡量不要讓不相關的人員連線生產庫(如果其他人有需要,盡量開放備份庫給他們使用,而不要開放生產庫,生產庫盡量只給業務系統正常使用),如果你使用的是 db2 v9.5 版本,則可以使用工作負載管理 wlm 對資料庫的資源進行調配。如果使用的是 db2 v9.5 之前的版本,則可以在資料庫伺服器上通過配置作業系統的方式,限制一些 ip 的訪問。

DB2資料庫事務日誌已滿案例解析

某日下午,開發報告說在執行dml操作時,資料庫報事務日誌已滿的錯誤。db2diag.log資料庫日誌中的報錯資訊 2013 04 01 16.43.30.736907 480 e2147482982c502 level error pid 126660 tid 1 proc db2agent sso...

資料庫事務日誌已滿 問題解決

quote sql0964c 資料庫的事務日誌已滿。quote 出現 ldap 或 db2 錯誤訊息,指出資料庫的事務日誌已滿。原因 logfilsiz db2 引數設定得太低。環境 產品 db2 udb 平台 跨平台 版本 8 問題描述 db2 使用的活動日誌的最大空間是由下面公式 logprim...

db2 事務日誌

db2增刪改都會涉及事務,以便於出錯時候能夠回滾。當日誌滿了,還要繼續新增日誌,就會報 964的錯誤 db2檢視日誌的命令是 檢視資料庫的配置引數 get db cfg for 檢視出很多配置資訊,下面幾項是我們的日誌資訊 log file size 4kb logfilsiz 1024 numbe...