Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Oracle 8.04 External prozedure Call
HELP!!!!!
We are going to use Oracle 8.04. We installed a Oracle 8 Server with a
database, connected the
Client with it.
Then we must use the external Procedure Call. We read in the online
Documentation that we
have to initialiye a second Listener named external_prozedure_listener.
OK, he is running, and I can look at him with the Admin Tool lsnrctl80.
But if I try to call the "C" Programm included in a DLL(Library/Package) the Error 28575 appears.
I don't know what we have configured wrong....
I copied the TNSNAMES.ORA, LNSNAMES.ORA, SQLNET.ORA file into this mail,
and
the PL/SQL Scripts for creating and calling the c-programm.
Do you know the error's ???
Thanks for answering
bye Franz Bachtraegl , Germany
Die Datei TNSNAMES.ORA:
# C:\ORANT\NET80\ADMIN\TNSNAMES.ORA Configuration
File:C:\orant\net80\admin\tnsnames.ora
# Generated by Oracle Net8 Assistant
APROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = erlm568a)(PORT = 1521))
(CONNECT_DATA = (SID = prod))
)
TFTP.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(CONNECT_DATA = (SID = tftp))
)
PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = erlm568a)(PORT = 1521))
(CONNECT_DATA = (SID = prod))
)
EXTPROC_CONNECTION_DATA.WORLD =
(DESCRIPTION =
(SDU = 2048)
(ADDRESS = (PROTOCOL = IPC)(Key = exkey))
(CONNECT_DATA = (SID = extproc)(GLOBAL_DBNAME = entw))
(SOURCE_ROUTE = YES)
)
ENTW =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = erlm568a)(PORT = 1521))
(CONNECT_DATA = (SID = entw))
)
BEQ-LOCAL.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(Key = export))
(CONNECT_DATA = (SID = entw))
)
SFINGER.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(Key = entw))
(CONNECT_DATA = (SID = entw))
)
TCP-LOOPBACK.WORLD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA = (SID = ORCL))
)
Die Datei LISTENER.ORA :
# C:\ORANT\NET80\ADMIN\LISTENER.ORA Configuration
File:C:\orant\net80\admin\listener.ora
# Generated by Oracle Net8 Assistant
PASSWORDS_LISTENER= (oracle)
LISTENER =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = oracle.world))
(ADDRESS = (PROTOCOL = IPC)(KEY = ORCL))
(ADDRESS = (PROTOCOL = IPC)(KEY = ENTW))
(ADDRESS = (PROTOCOL = IPC)(KEY = exkey))
(ADDRESS = (PROTOCOL = TCP)(HOST = ERLM568A)(PORT = 1521))
)
EXTERNAL_PROCEDURE_LISTENER =
(ADDRESS = (PROTOCOL = IPC)(KEY = exkey))
SID_LIST_EXTERNAL_PROCEDURE_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = extproc) (SID_NAME = extproc)
(GLOBAL_DBNAME = entw) (ORACLE_HOME = c:\orant) (SID_NAME = entw)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = tftp) (PROGRAM = tftpd)
(SID_NAME = sfinger) (PROGRAM = sfingerd)
(SID_NAME = extproc) (PROGRAM = extproc)
(GLOBAL_DBNAME = erlm568a) (SID_NAME = entw)
(GLOBAL_DBNAME = erlm568a) (SID_NAME = prod)
################ # Filename......: listener.ora # Node..........: local.world
################
TRACE_LEVEL_EXTERNAL_PROCEDURE_LISTENER = SUPPORT
Skript for creating the Library and the Package......
REM
REM Name GetTZ.sql
REM
REM Description This SQL script creates the package GetTZpkg containing
REM function OGetTimeZone which defines the external
procedure
REM for the OGetTimeZone call exported in GETTZ.DLL.
REM
REM Functions
REM OGetTimeZone() ==> Name of the Current TimeZone and
the
REM difference in minutes between itand UTC.
CREATE OR REPLACE PACKAGE GetTZpkg AS
FUNCTION OGetTimeZone ( lBias OUT PLS_INTEGER, lpTZName OUT VARCHAR2,
bDaylight OUT PLS_INTEGER, lpErrMsg OUTVARCHAR2 )
CREATE OR REPLACE PACKAGE BODY GetTZpkg AS FUNCTION OGetTimeZone ( lBias OUT PLS_INTEGER, lpTZName OUT VARCHAR2,
bDaylight OUT PLS_INTEGER, lpErrMsg OUTVARCHAR2 )
EXTERNAL LIBRARY GETTZ NAME "OGetTimeZone" LANGUAGE C CALLING STANDARD C PARAMETERS ( lBias LONG, lpTZName STRING, lpTZName MAXLEN UNSIGNED SHORT, bDaylight INT, lpErrMsg STRING, lpErrMsg MAXLEN UNSIGNED SHORT );
END;
/
PL/SQL Script start:
Oracle8 Release 8.0.4.0.0 - Production
PL/SQL Release 8.0.4.0.0 - Production
SQLWKS> @D:\Pcd98\ExterneProzeduren\GetTZ\aufruf.sql SQLWKS> Rem SQLWKS> Rem Aufruf externe Prozedur SQLWKS> Rem SQLWKS> SQLWKS> DECLARE 2> 3> result PLS_INTEGER; 4> 5> lBias PLS_INTEGER; 6> 7> lpTZName VARCHAR2(100); 8> 9> bDaylight PLS_INTEGER; 10> 11> lpErrMsg VARCHAR2(100); 12> BEGIN 13> result := GetTZpkg.OGetTimeZone(lBias, lpTZName, bDaylight,lpErrMsg);
14> 15> dbms_output.put_line('Result = ' || to_char(result) ); 16> dbms_output.put_line('Bias = ' || to_char(lBias) ); 17> dbms_output.put_line('TZName = ' || lpTZName ); 18> dbms_output.put_line('Daylight = ' || to_char(bDaylight) ); 19> dbms_output.put_line('ErrMsg = ' || lpErrMsg ); 20> END; 21> ORA-28575: unable to open RPC connection to external procedure agentORA-06512: at "PCD98.GETTZPKG", line 0
SQLWKS> @D:\Pcd98\ExterneProzeduren\GetTZ\aufruf.sql SQLWKS> Rem SQLWKS> Rem Aufruf externe Prozedur SQLWKS> Rem SQLWKS> SQLWKS> DECLARE 2> 3> result PLS_INTEGER; 4> 5> lBias PLS_INTEGER; 6> 7> lpTZName VARCHAR2(100); 8> 9> bDaylight PLS_INTEGER; 10> 11> lpErrMsg VARCHAR2(100); 12> BEGIN 13> result := GetTZpkg.OGetTimeZone(lBias, lpTZName, bDaylight,lpErrMsg);
14> 15> dbms_output.put_line('Result = ' || to_char(result) ); 16> dbms_output.put_line('Bias = ' || to_char(lBias) ); 17> dbms_output.put_line('TZName = ' || lpTZName ); 18> dbms_output.put_line('Daylight = ' || to_char(bDaylight) ); 19> dbms_output.put_line('ErrMsg = ' || lpErrMsg ); 20> END; 21> ORA-28575: unable to open RPC connection to external procedure agentORA-06512: at "PCD98.GETTZPKG", line 0
SQLWKS> @D:\Pcd98\ExterneProzeduren\GetTZ\aufruf.sql SQLWKS> Rem SQLWKS> Rem Aufruf externe Prozedur SQLWKS> Rem SQLWKS> SQLWKS> DECLARE 2> 3> result PLS_INTEGER; 4> 5> lBias PLS_INTEGER; 6> 7> lpTZName VARCHAR2(100); 8> 9> bDaylight PLS_INTEGER; 10> 11> lpErrMsg VARCHAR2(100); 12> BEGIN 13> result := GetTZpkg.OGetTimeZone(lBias, lpTZName, bDaylight,lpErrMsg);
14> 15> dbms_output.put_line('Result = ' || to_char(result) ); 16> dbms_output.put_line('Bias = ' || to_char(lBias) ); 17> dbms_output.put_line('TZName = ' || lpTZName ); 18> dbms_output.put_line('Daylight = ' || to_char(bDaylight) ); 19> dbms_output.put_line('ErrMsg = ' || lpErrMsg ); 20> END; 21> ORA-28575: unable to open RPC connection to external procedure agentORA-06512: at "PCD98.GETTZPKG", line 0