Ora-28578 From Extproc After Configuring Wallet (Doc ID 753530.1)

Last updated on JULY 18, 2017

Applies to:

Advanced Networking Option - Version 10.2.0.1 to 11.1.0.7.0 [Release 10.2 to 11.1]
Oracle Net Services - Version 10.2.0.1.0 to 11.1.0.7.0 [Release 10.2 to 11.1]
Information in this document applies to any platform.
Advanced Networking Option - Version: 10.2.0.1.0 to 11.1.0.7.0
This problem can occur on any platform.

Symptoms

After configuring password credentials for connecting to databases stored in a client-side Oracle wallet using mkstore, extproc programs start to fail as follows:

set serveroutput on;
begin
dbms_output.put_line(test_proc(0));
end;

ORA-28578: protocol error during callback from an external procedure
ORA-06512: at "SCOTT.TEST_PROC", line 1
ORA-06512: at line 2

You may also find the extproc process is just hanging, if you dump a call stack using a debugger like gdb you will see:

(gdb) where
#0 0x000000309900cc50 in __read_nocancel () from /lib64/libpthread.so.0
#1 0x00002b4f14a6e981 in ntusread ()
from /opt/oracle/product/10.2/db/lib/libclntsh.so.10.1
#2 0x00002b4f13ea16b2 in nsprecv ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#3 0x00002b4f13ea52f7 in nsrdr ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#4 0x00002b4f13e7f54c in nsdo ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#5 0x00002b4f13e7ee2e in nsbrecv ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#6 0x00002b4f13ebf53e in nioqrc ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#7 0x00002b4f13d80b4e in hottcr_Receive ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#8 0x00002b4f14051f87 in ttcrbur ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#9 0x00002b4f140506e8 in ttcbur ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so
#10 0x00002b4f14a98ebd in ttcdrv ()
from /opt/oracle/product/10.2/db/lib/libclntsh.so.10.1
#11 0x00002b4f13ec6ce0 in nioqwa ()
from /opt/oracle/product/10.2/db/lib/libagtsh.so



Changes

You configured the Secure External Password Store using mkstore and set associated parameter SQLNET.WALLET_OVERRIDE = TRUE in the server side sqlnet.ora parameter. You also are using the external procedure callout agent (extproc) to run routines from C libraries from Pl/Sql.

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms