Unofficial Db2 FAQ

db2diag.logにADM2017C The Event Monitor DB2DETAILDEADLOCK has reached its file capacity の類のメッセージが出ているのですが、どうしたらよいですか?

小刻みにDBへの接続・切断を繰り返すとdb2diag.logにADM2017C The Event Monitor “DB2DETAILDEADLOCK” has reached its file capacity の類のメッセージが出ることがあります。

2008-05-XX-16.08.23.815913+540 I49314348E819 LEVEL: Error
PID : 8225 TID : 47676057971040PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : TOOLSDB
APPHDL : 0-22191 APPID: *LOCAL.DB2.080508070855
AUTHID : DB2INST1
EDUID : 53098 EDUNAME: db2evmli (DB2DETAILDEADLOCK)
FUNCTION: DB2 UDB, database monitor, sqmEvmonWriter::initTarget, probe:40
MESSAGE : ZRC=0x800D002B=-2146631637=SQLM_RC_EVFULL "monitor full of data"
DIA8052C The Event Monitor "" has reached its file capacity. Delete
the files in the target directory "" or move them to another
directory.
DATA #1 : String, 17 bytes
DB2DETAILDEADLOCK
DATA #2 : String with size, 68 bytes
/home/db2inst1/db2inst1/NODE0000/SQL00001/db2event/db2detaildeadlock

2008-05-XX-16.08.23.816097+540 E49315168E690 LEVEL: Warning
PID : 8225 TID : 47676057971040PROC : db2sysc
INSTANCE: db2inst1 NODE : 000 DB : TOOLSDB
APPHDL : 0-22191 APPID: *LOCAL.DB2.080508070855
AUTHID : DB2INST1
EDUID : 53098 EDUNAME: db2evmli (DB2DETAILDEADLOCK)
FUNCTION: DB2 UDB, database monitor, sqmEvmonWriter::activate, probe:40
MESSAGE : ADM2017C The Event Monitor "DB2DETAILDEADLOCK" has reached its file
capacity. Delete the files in the target directory
"/home/db2inst1/db2inst1/NODE0000/SQL00001/db2event/db2detaildeadlock
" or move them to another directory.

Db2ではデフォルトでデッドロック・モニターがonになっており、DBが暗黙的に活動化された場合、クライアントから接続・切断の都度、少量のログを記録します。本当にデッドロックがおきているわけではありません。

このディレクトリーの容量は20MBが上限であり、上限に達すると上記のメッセージが出ます。不要であれば上記のデータは消してしまってもかまいませんが、下記のような対策をとらないと再発します。

対策としては以下が考えられます。

  1. db2 起動後、activate database コマンド で明示的にDBを活動化する運用にする。

  2. DROP EVENT MONITOR db2detaildeadlockで DEADLOCK MONITORをDROPする (本当に発生した際に資料が取れないので、あまりお勧めしません。)

  3. なんらかのコネクション・プーリングを行い、毎回接続・切断をしないようにする。