Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Mailing Lists -> Oracle-L -> PL/SQL and external procedures -- Linux :-) Solaris :-(
I've RTFM'd until my eyes are crossed and I can't see what is going
wrong. I've taken the code and configurations from
http://www.orafaq.org/scripts/c_src/extproc.txt and implemented them
verbatim. (And compared it to the PLSQL manual, the Oracle 8
Administration Guide and Fuuerstein's book.)
It works just fine under RedHat Linux 6.1 (kernel 2.2.12-20) with the library compiled with gcc 2.91.66 and running PL/SQL from Oracle 8.1.5.0.2.
However when I go to our real test/production environments it doesn't work. (Solaris 2.7, gcc 2.95.2, Oracle 8.0.5.0.0). Everything is the same except for the paths. The shared library tests ok when linked to another C program on Solaris.
The error I get when calling from PL/SQL is:
ERROR at line 1:
ORA-28575: unable to open RPC connection to external procedure agent ORA-06512: at "RJE.SYSRUN", line 0 ORA-06512: at line 4
I can reproduce this error on the Linux box by stopping the EXTERNAL_PROCEDURE_LISTENER and trying to run RJE.SYSRUN, so it's like the listener is not running or the tnsnames.ora isn't being read.
I verified that the proper tnsnames.ora was being read from /var/opt/oracle with truss, and even watched it get the salient configuration.
Meanwhile lsrnctl stat reports the listener is up, but the listener log on Solaris never shows a hit.
-8<---
$ lsnrctl stat external_procedure_listener
LSNRCTL for Solaris: Version 8.0.5.0.0 - Production on 23-JUN-00 17:04:05
(c) Copyright 1997 Oracle Corporation. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=extproc)) STATUS of the LISTENER
Alias external_procedure_listener Version TNSLSNR for Solaris: Version 8.0.5.0.0 - Production Start Date 23-JUN-00 16:36:24 Uptime 0 days 0 hr. 27 min. 40 sec Trace Level off Security OFF SNMP OFF Listener Parameter File /var/opt/oracle/listener.ora Listener Log File /u03/home/oracle/product/8.0.5/network/log/external_procedure_listener.log