Recompilation causes: ORA-06521 and ORA-06522
392005May 5 2004 — edited May 5 2004Hi,
I've an external function(created in C), which was installed using the normal stuff(associated with a library and used in an external function definition). Everything was working ok, I mean, I was able to call the function from pl/sql programs without any problem. I'm using Oracle version 8.1.7 under Solaris 8.0.
But then, it was necessary to recompile the function(the C source). I don't know how often Oracle checks or load the OS file(shared library), but after that recompilation I get the following error:
sqlcode = -6521
sqlerrm = ORA-06521: PL/SQL: Error mapping function
ORA-06522: ld.so.1:
extprocextproc_agent: fatal: cliente_390: can't find symbol
My sql code for the library and function re-creation is something like this:
create or replace library lib_cliente_390 as
'/a/b/c/d/cliente_390.so'
/
create or replace function cliente_390
(
in_ip in varchar,
in_puerto in binary_integer,
in_terms in varchar,
in_cics in varchar,
in_nomtran in varchar,
in_nomtran_esp in varchar,
in_usuario in varchar,
in_password in varchar,
in_trama_env in varchar,
in_timeout in binary_integer,
in_loglevel in binary_integer,
in_logfile in varchar,
out_term_asig out varchar,
out_trama_rec out varchar,
out_desc_codret out varchar
)
return binary_integer
as language c
name "cliente_390"
library lib_cliente_390;
/
As an additional problem, I tested the same case on a Linux box with Oracle 9, and it gives me another error: a problem with the DLL path. When I change the path for something relative to ${ORACLE_HOME}, then it seems to work(even with recompilation).
Well, any help will be appreciated. Thanks
salu2
dario estepario ...