Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: ORA-28575:<unable to open RPC connection to external procedure agent> - error when executing external procedure

Re: ORA-28575:<unable to open RPC connection to external procedure agent> - error when executing external procedure

From: Thomas Kyte <tkyte_at_us.oracle.com>
Date: Fri, 02 Jul 1999 12:06:27 GMT
Message-ID: <377eaa8a.140896648@newshost.us.oracle.com>


A copy of this was sent to "Will Kallander" <wkallander_at_geocities.com> (if that email address didn't require changing) On Thu, 1 Jul 1999 16:45:43 -0700, you wrote:

>I've read everything I can get my hands on, including former posts to this
>list.  But I'm still having trouble executing the imgdemo from the ORD demos
>package.
>
>I get the infernal "ORA-28575: Unable to open RPC connection to external
>procedure agent"
>
>I've verified that my RPC server is running, and the TNSListener service is
>running.
>
>What am I doing wrong?
>
>--Will
>
>wkallander_at_geocities.com
>

I couldn't get your listener.ora to work for me so I've put mine from a working Oracle8i NT install at the bottom. Here are some notes on doing this tho:

In the event you hit an 'rpc' error in the next steps (eg: the listner is configured wrong), the following might help as well:

You need to setup the listener.ora and tnsnames.ora file for extprocs.

Here is a sample listener.ora file:



LISTENER =
  (ADDRESS_LIST =
    (ADDRESS=(PROTOCOL=IPC)(KEY=oracle81.world))     (ADDRESS=(PROTOCOL=TCP)(Host=sheepdog)(Port=1521))   )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
(GLOBAL_DBNAME=sheepdog.us.oracle.com)
(ORACLE_HOME= /d01/home/oracle81)
(SID_NAME = oracle81)

    )
    (SID_DESC =
(SID_NAME = extproc)
(ORACLE_HOME = /d01/home/oracle81)
(PROGRAM = extproc)

    )
  )
STARTUP_WAIT_TIME_LISTENER = 0
CONNECT_TIMEOUT_LISTENER = 10

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.

The next file is the tnsnames.ora file, it needs an entry like:



extproc_connection_data =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = IPC)(KEY = oracle81.world))     (CONNECT_DATA = (SID = extproc))
  )

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.

Here is a working listener.ora from my system:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
(ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )

(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tkyte-portege)(PORT = 1521)) )

    )
    (DESCRIPTION =
(PROTOCOL_STACK =
        (PRESENTATION = GIOP)
        (SESSION = RAW)
      )

(ADDRESS = (PROTOCOL = TCP)(HOST = tkyte-portege)(PORT = 2481))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\Oracle\Ora81)
(PROGRAM = extproc)

          (ENVS=DEBUG_MODULES=all)
    )
    (SID_DESC =
(GLOBAL_DBNAME = oracle8i)
(ORACLE_HOME = d:\Oracle\Ora81)
(SID_NAME = ORACLE8I)

    )
  )

and a working tnsnames.ora file:

EXTPROC_CONNECTION_DATA.US.ORACLE.COM =   (DESCRIPTION =
    (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)

    )
  )

ORACLE8I.US.ORACLE.COM =
  (DESCRIPTION =
    (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = tkyte-portege)(PORT = 1521))
    )
    (CONNECT_DATA =
(SERVICE_NAME = oracle8i)

    )
  )

and my sqlnet.ora:

NAMES.DEFAULT_DOMAIN = us.oracle.com

SQLNET.AUTHENTICATION_SERVICES= (NTS) hope this helps.

--
See http://govt.us.oracle.com/~tkyte/ for my columns 'Digging-in to Oracle8i'... Current article is "Part I of V, Autonomous Transactions" updated June 21'st  

Thomas Kyte                   tkyte_at_us.oracle.com
Oracle Service Industries     Reston, VA   USA

Opinions are mine and do not necessarily reflect those of Oracle Corporation Received on Fri Jul 02 1999 - 07:06:27 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US