since some days we are trying to call an external procedure from
oracle 9.2. When calling the procedure from sqlplus, we get the
following frustrating error since 2 days:
ORA-28575: unable to open RPC connection to external procedure agent.
Our listener.ora has the following structure:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = se)(PORT = 1521))
)
)
)
EXTPROC_LISTENER =
(ADDRESS = (PROTOCOL = IPC)(KEY = test_key))
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = MyDB)
(ORACLE_HOME = /opt/oracle/9.2.0)
(SID_NAME= MyDB_SID)
)
)
SID_LIST_EXTPROC_LISTENER =
(SID_DESC =
(SID_NAME = test_SID)
(ORACLE_HOME = /opt/oracle/9.2.0)
(ENVS="EXTPROC_DLLS=ANY")
(PROGRAM =extproc)
)
LOG_DIRECTORY_LISTENER=/opt/oracle/9.2.0/network/log
The tnsnames.ora has the following structure:
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = test_key))
(CONNECT_DATA = (SID = test_SID))
)
EXTPROC_CONNECTION_DATA.test.se =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = test_key))
(CONNECT_DATA = (SID = test_SID))
)
We created the function with:
CREATE OR REPLACE FUNCTION shell(cmd IN VARCHAR2)
RETURN PLS_INTEGER
AS
LANGUAGE C LIBRARY extprocshell_lib
NAME "extprocsh"
PARAMETERS (cmd STRING, RETURN INT);
/
and the library with
CREATE OR REPLACE LIBRARY extprocshell_lib
AS '/opt/oracle/9.2.0/lib/proceduresso';
Does anyone has an idea what's going wrong here?
Thanks in advance!
Sebastian
Does lsnrctl status show your extproc?
Can you tnsping EXTPROC_CONNECTION_DATA ?
What platform/versions? Are those the actual SID's etc. that you are
using?
Does EXTPROC_DLLS= '/opt/oracle/9.2.0/lib/proceduresso' do anything
different?
How about "EXTPROC_DLLS=ANY,LD_LIBRARY_PATH=/opt/oracle/9.2.0/lib/
proceduresso" ?
jg
--
@home.com is bogus.
Oops! http://catless.ncl.ac.uk/Risks/24.66.html#subj3
jg
--
@home.com is bogus.
No .sig here, move along.
> Can you tnsping EXTPROC_CONNECTION_DATA ?
Yes. This works.
> What platform/versions? Are those the actual SID's etc. that you are
> using?
Sun Solaris. What do you mena with actual SID's?
> Does EXTPROC_DLLS= '/opt/oracle/9.2.0/lib/proceduresso' do anything
> different?
No. Still the same problem.
> How about "EXTPROC_DLLS=ANY,LD_LIBRARY_PATH=/opt/oracle/9.2.0/lib/
> proceduresso" ?
No.
What did you mean with your following post?
Do you have any further suggestions?
Cheers,
Sebastian
For compiling I used:
gcc -c test.c -fPIC
and for creating the so file I used:
gcc -shared -o procedures.so test.o
Could the ORA-28575 be related to a failure in my C program?
Cheers,
sebastian
Should have been:
How about "EXTPROC_DLLS=ANY,LD_LIBRARY_PATH=/opt/oracle/9.2.0/lib/" ?
The thinking being: maybe it can't find the RPC to connect to without
telling it where the library is. Beyond that, if no one else answers,
try the otn.oracle.com forums.
jg
--
@home.com is bogus.
"By the way, don't try the tall, thin coin-operated machines located
above the urinals. That gum tastes like rubber!" - Dr. Science