- PR -

DB2:UDF関数使用時のエラーメッセージについて

1
投稿者投稿内容
ymatsu
常連さん
会議室デビュー日: 2002/08/19
投稿数: 22
投稿日時: 2005-11-08 23:41
他所の掲示板でも同様の質問をしていますが、
多くのご意見を聞きたいと思い投稿致します。
ご容赦下さいませm(__)m

C言語でUDF関数を作成し、実行した際に結果は正しく帰ってくるのですが、
db2diag.logに必ず以下のようなエラーが出力されます。
===============================================================

2005-11-08-22.59.22.528416 Instance:db2user Node:000
PID:24180(db2fmp (24094) 0) TID:1 Appid:none
oper system services sqloLoadModule Probe:190

error loading module: xxxxxxxxx_DEC
errno = 9


0x8000000100006608 : 272F 686F 6D65 2F64 6232 6965 326E 2F53 '/home/db2user/x
0x8000000100006618 : 5A43 5343 5259 5054 5F33 4445 532F 535A xxxxxxxx_3DES/xx
0x8000000100006628 : 4353 4352 5950 545F 4445 4327 2069 7320 xxxxxxx_DEC' is
0x8000000100006638 : 6E6F 7420 6120 7661 6C69 6420 6C6F 6164 not a valid load
0x8000000100006648 : 206D 6F64 756C 653A 2042 6164 206D 6167 module: Bad mag
0x8000000100006658 : 6963 206E 756D 6265 72 ic number

2005-11-08-22.59.22.535653 Instance:db2user Node:000
PID:24180(db2fmp (24094) 0) TID:1 Appid:none
oper system services sqlofica Probe:10

ALERT :997
PID:24180 TID:1 Node:000 Title: SQLCA
0x800003FFFF7F0C80 : 5351 4C43 4120 2020 0000 0088 FFFF FE44 SQLCA .......D
0x800003FFFF7F0C90 : 0046 4445 5333 5F44 4543 FF53 514C 3035 .FDES3_DEC.SQL05
0x800003FFFF7F0CA0 : 3131 3038 3232 3538 3239 3730 31FF 2E2E 1108225829701...
0x800003FFFF7F0CB0 : 2E59 5054 5F33 4445 532F 535A 4353 4352 .YPT_3DES/xxxxxx
0x800003FFFF7F0CC0 : 5950 545F 4445 43FF 535A 4353 4372 7970 xxx_DEC.xxxxxxxx
0x800003FFFF7F0CD0 : 745F 3344 4553 FF35 5351 4C45 524C 4942 x_3DES.5SQLERLIB
0x800003FFFF7F0CE0 : 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x800003FFFF7F0CF0 : 0000 0000 0000 0000 2020 2020 2020 2020 ........
0x800003FFFF7F0D00 : 2020 2034 3237 3234 42724

PID:24180 TID:1 Node:000 Title: sqlerRoutineLoad (-444): input string ...
0x80000001000374AA : 2F68 6F6D 652F 6462 3269 6532 6E2F 535A /home/db2user/xx
0x80000001000374BA : 4353 4352 5950 545F 3344 4553 2F53 5A43 xxxxxxx_3DES/xxx
0x80000001000374CA : 5343 5259 5054 5F44 4543 2153 5A43 5343 xxxxxx_DEC!xxxxx
0x80000001000374DA : 7279 7074 5F33 4445 53 xxxx_3DES

PID:24180 TID:1 Node:000 Title: sqlerRoutineLoad (-444): instance name ...
0x800000010003734A : 5351 4C30 3531 3130 3832 3235 3832 3937 SQL0511082258297
0x800000010003735A : 3031 01

PID:24180 TID:1 Node:000 Title: sqlerRoutineLoad (-444): resolved path ...
0x80000001000374E8 : 2F68 6F6D 652F 6462 3269 6532 6E2F 535A /home/db2user/xx
0x80000001000374F8 : 4353 4352 5950 545F 3344 4553 xxxxxxx_3DES

PID:24180 TID:1 Node:000 Title: sqlerRoutineLoad (-444): resolved module ...
0x8000000100037508 : 535A 4353 4352 5950 545F 4445 43 xxxxxxxxx_DEC

PID:24180 TID:1 Node:000 Title: sqlerRoutineLoad (-444): resolved function ...
0x8000000100037518 : 535A 4353 4372 7970 745F 3344 4553 xxxxxxxxx_3DES
===============================================================

エラーとしてはSQL0444N の5番かなとは推測しているのですが、
結果を正しく取得できてしまっているのが解せないです。

また、このUDF関数を用いたSQLを連続で実行しつづけていると、
SQL10003Cが発生してしまいます。
UDF関数内でmallocにて関数を確保している部分は
freeで開放しているのですが、前述したSQL0444Nの5番の説明にある
メモリー不足が影響してくるのでしょうか?

当初はUDF関数のCREATE FUNCTION宣言に問題があるのかと
考えていましたが、参考になればとCREATE FUNCTION宣言も
追記しておきます。
===============================================================
CREATE FUNCTION DES3_DEC(VARCHAR(2680)) RETURNS VARCHAR(2000)
EXTERNAL NAME '/home/db2user/xxxxxxxxx_3DES/xxxxxxxxx_DEC!xxxxxxxxx_3DES'
LANGUAGE C
PARAMETER STYLE SQL
NO SQL
NOT NULL CALL
DETERMINISTIC
NO EXTERNAL ACTION
SCRATCHPAD
FINAL CALL
FENCED
NOT THREADSAFE@
===============================================================
ご教授の程よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)