3 Replies Latest reply: Oct 17, 2011 8:25 AM by user13412148 RSS

    ORA-28575: unable to open RPC connection to external procedure agent

    user13412148
      Hello,

      we have a problem with our external procedure agent, when accessing:

      ORA-28575: unable to open RPC connection to external procedure agent



      TNSNAMES.ORA:

      comastest =
      (DESCRIPTION =
      (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ACCELRYS-TEST.MPI-DORTMUND.MPG.DE)(PORT = 1521))
      )
      (CONNECT_DATA =
      (GLOBAL_NAME = comas.accelrys-server.mpi-dortmund.mpg.de)
      (INSTANCE_NAME = comas)
      (SERVICE_NAME = comas.accelrys-server.mpi-dortmund.mpg.de)
      (SID = comas)
      )
      )

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



      -----



      LISTENER.ORA:

      SID_LIST_LISTENER =
      (SID_LIST =
      (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc32)
      (ENVS="EXTPROC_DLLS=ANY,LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db_1/lib32")
      )

      (SID_DESC =
      (ORACLE_HOME = /opt/oracle/product/10.2.0/db_1)
      (SID_NAME = comas)
      (GLOBAL_DBNAME = comastest.accelrys-server.mpi-dortmund.mpg.de)
      )
      )


      # dynamic service
      LISTENER =
      (DESCRIPTION_LIST =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = accelrys-test.mpi-dortmund.mpg.de)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      )


      -----


      I'm not sure, if there is a mistake in a variable.
      The SID is correct. We have named the INSTANCE_NAME as the SID - is that correct, too? Or where can I find the real INSTANCE_NAME?
      We set the GLOBAL_NAME to a combination of DB_NAME + DB_DOMAIN - is that correct?
      The same is for the SERVICE_NAME - a combination of DB_NAME + DB_DOMAIN. Correct?
      The problem is, that it is a copy of a working server so that the DB_NAME + DB_DOMAIN is different from SID and HOSTNAME.
      Can the problem be in these configuration files?

      -----


      The listener is running and I'm able to login with sqlplus and I can connect to the database. But I cannot use extproc.

      lsnrctl status

      LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 11-OCT-2011 08:32:47

      Copyright (c) 1991, 2005, Oracle. All rights reserved.

      Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=accelrys-test.mpi-dortmund.mpg.de)(PORT=1521)))
      STATUS of the LISTENER

      Alias LISTENER
      Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
      Start Date 10-OCT-2011 10:25:50
      Uptime 0 days 22 hr. 6 min. 57 sec
      Trace Level off
      Security ON: Local OS Authentication
      SNMP OFF
      Listener Parameter File /opt/oracle/product/10.2.0/db_1/network/admin/listener.ora
      Listener Log File /opt/oracle/product/10.2.0/db_1/network/log/listener.log
      Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=accelrys-test.MPI-DORTMUND.MPG.DE)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
      Services Summary...
      Service "PLSExtProc" has 1 instance(s).
      Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
      Service "comas" has 1 instance(s).
      Instance "comas", status UNKNOWN, has 1 handler(s) for this service...
      Service "comas.accelrys-server.mpi-dortmund.mpg.de" has 1 instance(s).
      Instance "comas", status READY, has 1 handler(s) for this service...
      Service "comasXDB.accelrys-server.mpi-dortmund.mpg.de" has 1 instance(s).
      Instance "comas", status READY, has 1 handler(s) for this service...
      Service "comas_XPT.accelrys-server.mpi-dortmund.mpg.de" has 1 instance(s).
      Instance "comas", status READY, has 1 handler(s) for this service...
      The command completed successfully


      -------

      The listener.log shows me the following error when trying to run extproc:

      06-OCT-2011 09:10:49 * (CONNECT_DATA=(SID=PLSExtProc)(PRESENTATION=RO)(CID=(PROGRAM=)(HOST=MPI-DORTMUND\M10020-VMXP)(USER=costerma))) * (ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)) * establish * PLSExtProc * 12518
      TNS-12518: TNS:listener could not hand off client connection
      TNS-12547: TNS:lost contact
      TNS-12560: TNS:protocol adapter error
      TNS-00517: Lost contact
      Linux Error: 32: Broken pipe
      06-OCT-2011 09:13:10 * service_update * comas * 0
      06-OCT-2011 09:15:47 * (CONNECT_DATA=(SID=PLSExtProc)(PRESENTATION=RO)(CID=(PROGRAM=)(HOST=accelrys-test)(USER=root))) * (ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)) * establish * PLSExtProc * 12518
      TNS-12518: TNS:listener could not hand off client connection
      TNS-12547: TNS:lost contact
      TNS-12560: TNS:protocol adapter error
      TNS-00517: Lost contact
      Linux Error: 32: Broken pipe


      ---------


      The listener tracelog shows me following error when trying to run extproc:

      [07-OCT-2011 10:53:53:432] nsglhe: entry
      [07-OCT-2011 10:53:53:432] nsglhe: Direct handoff errors: ns=12547, ns2=12560
      [07-OCT-2011 10:53:53:432] nsrefuse: error exit (nssndrsp)

      --------

      Any hints?
        • 1. Re: ORA-28575: unable to open RPC connection to external procedure agent
          780786
          Hi,
          Check the below my Oracle support note,It will help.

          ORA-28575: unable to open RPC connection to external procedure agent [ID 945396.1]

          Best regards,

          Rafi.
          • 2. Re: ORA-28575: unable to open RPC connection to external procedure agent
            CKPT
            Error:     ORA-28575
            Text:     unable to open RPC connection to external procedure agent
            ---------------------------------------------------------------------------
            Cause:     Initialization of a network connection to the extproc agent did not
                 succeed. This problem can be caused by network problems, incorrect
                 listener configuration, or incorrect transfer code.
            Action:     Check listener configuration in LISTENER.ORA and TNSNAMES.ORA, or
                 check Oracle Names Server.
            TNS-12518: TNS:listener could not hand off client connection
            TNS-12547: TNS:lost contact
            TNS-12560: TNS:protocol adapter error
            TNS-00517: Lost contact
            check
            TROUBLESHOOTING GUIDE TNS-12518 TNS listener could not hand off client connection [ID 550859.1]
            • 3. Re: ORA-28575: unable to open RPC connection to external procedure agent
              user13412148
              Thank you, I've checked the Metalinks and found these possibilities:

              Error: 32: Broken pipe
              Error stack in listener log:
              TNS-12518: TNS:listener could not hand off client connection
              TNS-12547: TNS:lost contact
              TNS-12560: TNS:protocol adapter error
              TNS-00517: Lost contact
              IBM/AIX RISC System/6000 Error: 32: Broken pipe
              Cause:
              The error 32 indicates the communication has been broken while the listener is trying to hand off the client connection to the server process or
              dispatcher process.
              Action:
              1. One of reason would be processes parameter being low, and can be verified by the v$resource_limit view.
              2. In Shared Server mode, check the 'lsnrctl services' output and see if the dispatcher has refused any connections, if so, then consider
              increasing the number of dispatchers.
              3. Check the alert log for any possible errors.
              4. Memory resource is also another cause for this issue. Check the swap, memory usage of the OS.


              -------------
              *1.)* It seem to be enough:

              SQL> select * from v$resource_limit;
              processes     27     33     250     250
              sessions     32     37     280     280
              enqueue_locks     14     24     3520     3520



              --------------
              *2.)* Yea, here is a problem. The dispatcher has refused my extproc connection:

              $ lsnrctl service

              LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 17-OCT-2011 13:57:42

              Copyright (c) 1991, 2005, Oracle. All rights reserved.

              Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=accelrys-test.mpi-dortmund.mpg.de)(PORT=1521)))
              Services Summary...
              Service "PLSExtProc" has 1 instance(s).
              Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
              Handler(s):
              "DEDICATED" established:0 refused:1
              LOCAL SERVER
              [...]

              I've tried to add an additional dispatcher with

              SQL> alter system set dispatchers = '(PROTOCOL=IPC)(SERVICE=PLSExtProc)';

              Now the listener output looks like this but still refuses my extproc connection

              $ lsnrctl service

              LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 17-OCT-2011 14:10:28

              Copyright (c) 1991, 2005, Oracle. All rights reserved.

              Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=accelrys-test.mpi-dortmund.mpg.de)(PORT=1521)))
              Services Summary...
              Service "PLSExtProc" has 1 instance(s).
              Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
              Handler(s):
              "DEDICATED" established:0 refused:1
              LOCAL SERVER
              Service "PLSExtProc.accelrys-server.mpi-dortmund.mpg.de" has 1 instance(s).
              Instance "comas", status READY, has 1 handler(s) for this service...
              Handler(s):
              "D001" established:0 refused:0 current:0 max:972 state:ready
              DISPATCHER <machine: accelrys-test, pid: 13444>
              (ADDRESS=(PROTOCOL=ipc)(KEY=#13444.1))


              Is that the wrong way to add an additional dispatcher?

              I also have tried:

              SQL> alter system set dispatchers = '(PROTOCOL=IPC)(DISP=2)';

              but with the same result - refusing my extproc connection.

              --------------
              *3.)* There is nothing added to the alert log.
              --------------
              *4.)* The CPU is idle and not using any swap:

              Mem: 3526604k total, 3477868k used, 48736k free, 194432k buffers
              Swap: 4915880k total, 0k used, 4915880k free, 2611244k cached

              --------------

              Any ideas anyone? Thanks in advance!