This is about calling external C procedures in Oracle 9.2.0 on system Solaris 8.
Is there any way to change Oracle's default search directory for external dynamic linked libraries ?
Since the external libraries that I use depend on some other system libraries while using them via Oracle the system can not see these dependent system libraries. Oracle also can not see the LD_LIBRARY_PATH environment variables. But oracle user's .profile is already set to configure PATH and LD_LIBRARY_PATH. When I login using terminal or console the variables are correct. But when I call the procedure from a remote connection ( Using TOAD for instance) ld.so.1 is unable to find the libraries which my defined library depends on.
Is there any way to include these dependent libraries while defining a ORACLE external library ?
Or is there any way to make the system to see the environment variables ? ( for example a configuration file of ORACLE ?)
If so please help.
Here is some information about my problem:
Sql code for creating the library
CREATE OR REPLACE LIBRARY libFinBase is '$ORACLE_HOME/SO_Files/libFinBase.so';
PLSQL code for defining a function withing this dynamic library.
CREATE OR REPLACE FUNCTION daysinmonth(y BINARY_INTEGER,m BINARY_INTEGER)
AS LANGUAGE C
Resulting error message by the execution is...
The following error has occurred:
ORA-06520: PL/SQL: Error loading external library
ORA-06522: ld.so.1: extprocPLSExtProc: fatal: libFinPort.so: open failed: No such file or directory
ORA-06512: at "HASGU.DAYSINMONTH", line 0
ORA-06512: at line 10
I know that libFinBase.so file is dependent on libFinPort.so , but libFinPort.so is also dependent to some other system dynamic libraries such as libsocket.so etc. But the system is 64bit. And I'm using Oracle 9.2.0. 64-bit. the default directory which sqlplus looks for these dynamic libraries of the system is NOT correct. How can I override these settings of sqlplus ?