Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: External Procedures on Si
A copy of this was sent to "Super Kev" <steve.bright_at_capgemini.co.uk>
(if that email address didn't require changing)
On Mon, 26 Apr 1999 15:05:33 +0100, you wrote:
>We upgraded our Dev database to 8.1.5 ( from 8.0.4 ) at the weekend. our
>application calls a 'C' ddl via Oracle external procedures. On 8.0.4 we had
>no problems running it...since the upgrade we are getting the error message
>:
>
>ORA:28575 Unable to open RPC connection to external agent
>
>We've replaced the AS EXTERNAL clause with AS LANGUAGE C...still can't get
>it to work.
>
>It appears the listener is setup to recognise extproc calls...
>
>
>Any ideas ??
thats pretty much pointing us to the listener and tnsnames files.
You need to setup the listener.ora and tnsnames.ora file for extprocs.
Here is a sample listener.ora file:
(GLOBAL_DBNAME=sheepdog.us.oracle.com) (ORACLE_HOME= /d01/home/oracle81) (SID_NAME = oracle81)
(SID_NAME = extproc) (ORACLE_HOME = /d01/home/oracle81) (PROGRAM = extproc) #(ENVS=DEBUG_MODULES=all,DEBUG_FILE=/tmp/test/ext_proc.log))
The important things in the listener file for extprocs:
o ADDRESS=(PROTOCOL=IPC)(KEY=oracle81.world))
set up an IPC based listener. remember the value of the KEY= (you can make it whatever you want, just remember what it is)
o (SID_DESC=(SID_NAME=extproc)
remember that SID_NAME, call it extproc.
o (ENVS=DEBUG_MODULES=all,DEBUG_FILE=/tmp/test/ext_proc.log)
if you want a specific set of environment variables setup for your extproc routines, put them here, separated by commas. The above for example, sets up 2 environment variables for the extproc servcies, DEBUG_MODULES and DEBUG_FILE. Since extprocs run detached from a console and are a little touchy to debug, having copious amounts of 'tracing' that you can enable/disable via the environment is suggested (by me)...
The next file is the tnsnames.ora file, it needs an entry like:
Important things:
o (ADDRESS = (PROTOCOL = IPC)(KEY = oracle81.world))
should be the same as was in the listener.ora file....
o (CONNECT_DATA = (SID = extproc))
the sid must match the sid in the (SID_DESC=(SID_NAME=extproc) from the listener.ora....
Also, if your sqlnet.ora specifies some default domain, it needs to be on the tnsnames entry. So if you have a sqlnet.ora with stuff like:
sqlnet.authentication_services=(none)
names.directory_path = (TNSNAMES, HOSTNAME)
names.default_domain = world
name.default_zone = world
automatic_ipc = off
in it, that would be extproc_connection_data.world -- not just extproc_connection_data.
Thomas Kyte
tkyte_at_us.oracle.com
Oracle Service Industries
Reston, VA USA
--
http://govt.us.oracle.com/ -- downloadable utilities