Hallo zusammen,
ich muss einige
FB-Datenbanken auf neue Datenbankerver umziehen, die mit RHEL5 laufen (die alten liefen unter Windows2003).
Die Datenbanken nutzen u.a. UDFs aus der FreeAdhocUDF. Bei deren Installation habe ich ein ziemlich hartnäckiges Problem und hoffe, dass mit jemand den richtigen Tipp geben kann.
Die
FB-Engine ist installiert und läuft, Zugriff auf die Datenbanken ist sowohl über
localhost als auch über Netzwerk möglich. Die Zugriffsberechtigungen (z.B. UDFAccess) habe ich zu Testzwecken auf "Full" gesetzt.
Die UDFs sind in der
DB definiert:
Code:
[root@SRV-FB01 firebird]#/opt/firebird/bin/isql -user SYSDBA -password masterkey MY_DB
Database: MY_DB, User: SYSDBA
SQL> select F.RDB$FUNCTION_NAME, F.RDB$ENTRYPOINT from RDB$FUNCTIONS F;
RDB$FUNCTION_NAME RDB$ENTRYPOINT
=================================================== ===============================
RDB$GET_CONTEXT get_context
RDB$SET_CONTEXT set_context
F_REPLACESTRING replacestring
F_MODULO modulo
F_STRINGLENGTH stringlength
F_SUBSTR strsub
SQL> show function F_MODULO;
Function F_MODULO:
Function library is FreeAdhocUDF
Entry point is modulo
Returns FREE_IT INTEGER
Argument 1: INTEGER
Argument 2: INTEGER
SQL> show function F_STRINGLENGTH;
Function F_STRINGLENGTH:
Function library is FreeAdhocUDF
Entry point is stringlength
Returns FREE_IT INTEGER
Argument 1: CSTRING(255) CHARACTER SET ISO8859_1
SQL>
Die Abhängigkeiten der FreeAdhocUDF sind erfüllt:
Code:
[root@SRV-FB01 firebird]# ldd /opt/firebird/UDF/FreeAdhocUDF.so
libm.so.6 => /lib64/libm.so.6 (0x00002b2b4515c000)
libc.so.6 => /lib64/libc.so.6 (0x00002b2b453df000)
libib_util.so => /usr/lib64/libib_util.so (0x00002b2b45736000)
libfbclient.so.2 => /usr/lib64/libfbclient.so.2 (0x00002b2b45838000)
/lib64/ld-linux-x86-64.so.2 (0x0000003e4c000000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b2b459de000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002b2b45bf9000)
libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x00002b2b45dfe000)
libstdc++.so.5 => /usr/lib64/libstdc++.so.5 (0x00002b2b4605b000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002b2b46336000)
[root@SRV-FB01 firebird]#
Beim Aufruf der UDFs bekomme ich jedoch diesen Fehler:
Code:
Database: MY_DB, User: SYSDBA
SQL> select F_MODULO(10, 7) from RDB$DATABASE;
Statement failed, SQLCODE = -104
invalid request BLR at offset 60
-function F_MODULO is not defined
-module name or entrypoint could not be found
SQL> select F_STRINGLENGTH('bla') from RDB$DATABASE;
Statement failed, SQLCODE = -104
invalid request BLR at offset 60
-function F_STRINGLENGTH is not defined
-module name or entrypoint could not be found
SQL>
Die installierte Version ist die adhoc20090128a. Der Fehler tritt genauso auch bei der adhoc20090925 (mit korrekt verlinkten icu30-Libs) auf. Mit der aktuellen adhoc20101111 konnte ich es nicht genau testen, da die enthaltenen icu44-Libs ihrerseits glibc2_7 brauchen, welches aber unter RHEL5 nicht als fertiges
Package verfügbar ist und der Fehler so schon wegen dieser Abhängigkeit auftritt.
Bin mächtig ratlos und für jede Hilfe dankbar