Question & Answer
Question
Db2 のバージョン・アップや、フィックスパック適用後、イベント・モニターの起動が SQL20155N で失敗したり、db2diag.log に SQLM_RC_MCMISS や ADM2014W が記録されることがあります。 これはなぜでしょう?どうすれば回復できますか?
Cause
Db2 のバージョンやフィックスパックが上がると、イベント・モニター表の形式が変更されることがあります。
たとえば、新しいモニター項目を記録するための列が増えたり、既存の列定義が拡張されることがあります。
新しいバージョンやフィックスパックで必須とされる列が、既存のイベント・モニター表に存在しなかったり、互換性がない場合、イベント・モニターは SQL20155N で起動しません。このとき、db2diag.log には以下のようなエントリーが記録されます。
たとえば、新しいモニター項目を記録するための列が増えたり、既存の列定義が拡張されることがあります。
新しいバージョンやフィックスパックで必須とされる列が、既存のイベント・モニター表に存在しなかったり、互換性がない場合、イベント・モニターは SQL20155N で起動しません。このとき、db2diag.log には以下のようなエントリーが記録されます。
2017-04-27-18.32.04.902750+540 I2952173A670 LEVEL: Error
PID : 33488946 TID : 10327 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-598 APPID: *LOCAL.db2inst1.170427093152
AUTHID : DB2INST1 HOSTNAME: host01
EDUID : 10327 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, database monitor, sqmSharedRecordTypeArray::activateSqlEvmon, probe:90
CALLED : DB2 UDB, database monitor, sqmSqlTarget::validateTable
RETCODE : ZRC=0x840D002A=-2079522774=SQLM_RC_MCMISS
"a mandatory column is missing"
DATA #1 : String, 10 bytes
LOCKEVMON
また、新しいバージョンやフィックスパックで列定義が変更された結果、イベント・データが欠落する可能性を警告する ADM2014W が管理通知ログや db2diag.log に記録されます。
2017-07-31-15.09.00.857955+600 E2123A743 LEVEL: Warning
PID : 64879 TID : 4391939598608 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-239 APPID: *LOCAL.db2inst1.170731050801
AUTHID : DB2INST1 HOSTNAME: host01
EDUID : 408 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, database monitor, sqmSqlTarget::validateTable, probe:60
MESSAGE : ADM2014W The Event Monitor "LOCKEVMON" detected on table
"LOCKEVMON" (ID "9") that the size of the column "EVENT_TYPE" is
smaller than the default size of "128". Therefore, contents will be
truncated to the user specified size.
Answer
イベント・モニターのデータを表に記録しているシステムで、Db2 のバージョン・アップや、フィックスパック適用を行った場合、以下の手順でイベント・モニター表の形式を更新してください。
- DBADM 権限のユーザーで対象データベースに接続します。
db2 connect to <database_name>
- EVMON_UPGRADE_TABLES プロシージャーを実行してイベント表を更新します。
db2 "call evmon_upgrade_tables(null, null, null, ?, ?, ?)"
運用上の考慮点
- EVMON_UPGRADE_TABLES プロシージャーの詳細な実行結果を取得するには、事前にユーザー一時表スペースを作成する必要があります。
例db2 create user temporary tablespace usertmp1 db2 "call evmon_upgrade_tables(null, null, null, ?, ?, ?)" Value of output parameters -------------------------- Parameter Name : NUM_EVMONS_EVALUATED Parameter Value : 3 Parameter Name : NUM_EVMONS_TO_UPGRADE Parameter Value : 1 Parameter Name : NUM_EVMONS_UPGRADED Parameter Value : 1 Result set 1 -------------- <SESSION.EVMON_UPGRADE_TABLES_RESULTSET の結果が表示されます。>
- データベースに登録されているイベント・モニターと、イベント表が対応するバージョンの一覧は以下の SQL で表示できます。
db2 connect to <database_name> db2 "select evmonname, versionnumber from syscat.eventmonitors where target_type in ('U','T')" EVMONNAME VERSIONNUMBER --------------- ------------- LOCKEVMON 11010202 1 record(s) selected.
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PknAAE","label":"Install\/Migrate\/Upgrade"},{"code":"a8m500000008PmIAAU","label":"Monitors-\u003EEvent Monitor"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
26 August 2023
UID
swg22010662