Question & Answer
Question
db2diag.log に以下のようなメッセージが 5 分おきに出力されます。原因と解決策について教えてください。
2020-08-19-11.18.21.433507+540 I10908227E688 LEVEL: Severe
PID : 28589 TID : 139769552037632 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : TEST943
APPHDL : 0-27 APPID: *LOCAL.db2inst1.200819021823
AUTHID : DB2INST1 HOSTNAME: db2server.example.com
EDUID : 66 EDUNAME: db2agent (TEST943) 0
FUNCTION: DB2 UDB, base sys utilities, sqeApplication::SetupCodePageInfo, probe:200
RETCODE : ZRC=0x800F005B=-2146500517=SQLO_NOTABLE "No conversion table exists"
DIA8102C Conversion table not loaded. Source code page "819", Target
code page "897", method "", handle "".
Cause
これは LANG=C (819) のアプリケーションが、コード・セット IBM-943 のデータベースへ接続を試行して SQL0332N で失敗しているログです。
自身のアプリケーションに心当たりがない場合 db2acd (autonomic computing daemon) が LANG=C で IBM-943 データベースへ接続している可能性があります。
以下のように ps コマンドで db2acd の環境変数 LANG=C となっており IBM-943 や IBM-954 データベースが存在する場合この問題が発生します。
$ ps auxeww | grep db2acd
db2inst1 28652 0.1 0.2 661064 33192 ? Sl 11:13 0:13 db2acd 0 ,0,0,0,1,0,0,00000000,0,0,0,0000000000000000,0000000000000000,00000000,00000000,00000000,00000000,00000000,00000000,0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003534aa000,0000000000000000,0000000000000000,1,0,0,,,,,a80164,14,1e014,2,0,1,0000000000041fc0,0x240000000,0x240000000,1600000,6438006,2,6988013 DB2_HOME=/home/db2inst1/sqllib DB2LIB=/home/db2inst1/sqllib/lib HOME=/home/db2inst1 PWD=/home/db2inst1 DB2INSTANCE=db2inst1 DB2LPORT=0 DB2NODE=0 HOSTNAME=db2server.example.com LANG=C USER=db2inst1
.....
db2diag.log に以下のように db2acd が IBM-943 データベースへの接続に失敗したエラーが出力されています。
2020-08-19-11.18.21.436574+540 I10910892E443 LEVEL: Warning
PID : 28652 TID : 140185316620032 PROC : db2acd 0
INSTANCE: db2inst1 NODE : 000
HOSTNAME: db2server.example.com
FUNCTION: DB2 UDB, Health Monitor, HmonMainCB::refreshDbAutonomicSwitches, probe:160
MESSAGE : Failed connecting to database "TEST943 "
DATA #1 : Hexdump, 4 bytes
0x00007F7F6FFFB27C : B4FE FFFF
Answer
db2acd は Db2 インスタンス起動時の環境変数を継承するため、db2strat が LANG=C の環境で実行されていた場合に今回のようなエラーが発生します。LANG=ja_JP.utf8 のような環境で db2start を実行した場合、UTF-8 と IBM-943 は互換性があるため、今回のエラーは発生しません。
そのため LANG=ja_JP.utf8 などが設定された環境で Db2 インスタンスを起動してください。
障害モニターやクラスター・マネージャーがインスタンスの起動を制御している場合、Db2 のレジストリ変数でコードページに UTF-8 を設定できます。
インスタンス・オーナーで以下のコマンドを実行します。(次回 Db2 起動時から有効になります。)
db2set DB2CODEPAGE=1208
注:DB2CODEPAGE を db2set で設定すると、該当インスタンスのすべての Db2 アプリケーションに影響を与えるため、設定にあたっては細心の注意が必要です。たとえば、実際のアプリケーションのコード・ページと、DB2CODEPAGE で設定したコード・ページが一致しない場合、文字化けやデータ破壊の問題が発生します。
[{"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":"a8m500000008PkdAAE","label":"Connectivity"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"}],"Version":"All Version(s)"}]
Was this topic helpful?
Document Information
Modified date:
03 April 2024
UID
ibm16262073