db2審計功能db2audit致使的數據庫宕機問題處理

在客戶現場駐場運維期間,某天上午,在客戶現場有人員報障,說有一臺DB2數據庫宕掉了。sql

首先和客戶DBA進行溝通,對問題有一個基本瞭解:數據庫

因爲部門審計須要,制定了安全審計策略,在DB2層面開啓了audit功能,並打開了如contextexecute等須要很大空間的audit選項。因而運行一段期間後,發現大量的事務處理了致使audit文件空間滿,而後致使數據庫沒法鏈接,報以下錯誤:安全

$ db2 connect to ebankdb運維

SQL1224N The database manager is not able to accept new requests, haside

terminated all requests in progress, or has terminated the specified request網站

because of an error or a forced interrupt. SQLSTATE=55032spa

DBA同事發現空間滿後,經過echo > db2audit.out 對audit文件進行了清空,而後中止了db2audit命令。觀察db2diag.log文件,一直不斷報錯,以下:日誌

2011-08-30-13.41.17.598986+480 I14000047A2740 LEVEL: Error (OS)事務

PID : 327ci

2011-08-30-13.46.13.332977+480 I14000129A601 LEVEL: Error

PID : 3276822 TID : 42569 PROC : db2sysc 0

INSTANCE: db2inst1 NODE : 000 DB :

APPHDL : 0-38852 APPID: GA912716.PEA8.01321931A8D1

EDUID : 42569 EDUNAME: db2agent (LIS) 0

FUNCTION: DB2 UDB, bsu security, sqlexAuditOpenAdjust, probe:149

RETCODE : ZRC=0x870F0009=-2029060087=SQLO_EOF the data does not exist

DIA8506C Unexpected end of file was reached.

DATA #1 : Hexdump, 4 bytes

0x07000006EC7F02F0 : 870F 0009 .

2011-08-30-13.46.13.333281+480 I14000731A526 LEVEL: Error

PID : 3276822 TID : 42569 PROC : db2sysc 0

INSTANCE: db2inst1 NODE : 000 DB :

APPHDL : 0-38852 APPID: GA912716.PEA8.01321931A8D1

EDUID : 42569 EDUNAME: db2agent (LIS) 0

FUNCTION: DB2 UDB, bsu security, sqlexAuditWriteBufferToDisk, probe:13462

MESSAGE : ZRC=0x875C00CD=-2024013619=SQLEX_UNEXPECTED_SYSERR

Unexpected System Error

DATA #1 : Hex integer, 4 bytes

0×40000011

DBA即便中止了db2audit,並重啓實例,仍然存在一樣問題。

經過登錄IBM官方的support網站,找到到一條相似的apar

該問題是針對9.5 fp3之前的版本,但錯誤症狀相同。內容爲,當db2audit沒有空間後,會建立一個空的audit文件,但沒法寫audit header到文件,結果db2認爲這個文件被corrupt了,所以報錯。該問題做爲DB2bug已經在fp4補丁中修復,一個workaround就是刪除這個空日誌文件。

根據這個解釋,能夠推斷出當前問題的根源是因爲DBA的命令echo > db2audit.out,人爲將audit header破壞,結果致使db2數據庫宕機的問題。然後,咱們將審計實際內容日誌db2audit.db.LIS.log.0文件刪除,發現db2audit開始建立新的審計日誌,系統恢復正常。

$ ls -l

total 14848

-rw——- 1 db2inst1 db2grp1 35340 Aug 30 14:29 db2audit.db..log.0

-rw——- 1 db2inst1 db2grp1 2 Aug 30 13:46 db2audit.db..log.0.bak

-rw——- 1 db2inst1 db2grp1 7543102 Aug 30 13:44 db2audit.instance.log.0

針對這個問題,總結以下:

1. db2audit會佔據很大的空間,特別是當contextexecute選項打開時,會記錄SQL信息,所以,須要規劃很大的空間。

2. 遵循必定的步驟。本例中,當文件系統滿時,若是先關閉db2audit,再去清理audit log,才能夠避免相似問題產生。

3. db2audit的使用須要謹慎,特別是生產系統,可能會因爲db2audit日誌空間不足問題致使宕機。

更多關於審計的相關技術,能夠參看《DB2數據庫管理最佳實踐》。

相關文章
相關標籤/搜索