BIOVIA Direct: Oracle error ORA-28579 or ORA-28576 encountered with long-running SQL statements on the Linux platform

Program

BIOVIA Direct (all supported versions)

 

Operating System

Red Hat Enterprise Linux, Oracle Linux (all supported versions)

 

Summary

If you execute a BIOVIA Direct statement that takes a long time to complete, you may encounter an Oracle error 'ORA-28579: Network error during callback from external procedure agent'. The most typical workflow affected is the creation of a BIOVIA Direct domain index or a maintenance operation on an existing domain index.

Depending on the environment, a similar error may also occur with two regular Direct commands executed within the same Oracle session at a greater time interval. In such cases, you will typically encounter the related Oracle error 'ORA-28576: lost RPC connection to external procedure agent'.

Both Oracle errors are generic and can have different causes. The following description applies to the specific case where you are running Direct on the Linux platform and the command, or a previous command, initially worked without problems for some time before the error occurred.  

 

Background & Solution

BIOVIA Direct is based on Oracle Cartridge technology. When the user calls a BIOVIA Direct function for the first time in an Oracle session, the dedicated Direct EXTPROC listener spawns an instance of a generic Oracle executable called 'extproc'. The extproc process then loads the BIOVIA Direct library and finally connects to the calling Oracle process using a local operating system pipeline. This process is comparable to the establishment of a listener-mediated connection between an Oracle client and the Oracle server. Accordingly, settings such as those set in the sqlnet.ora configuration file may also apply to the connection between the extproc process and the calling Oracle session.

In this case, the particular sqlnet.ora parameter SQLNET.INBOUND_CONNECT_TIMEOUT has a fatal effect on the lifetime of the connection between the Oracle session and the extproc process: for some reason, Oracle on the Linux platform terminates the connection after the time set in this parameter. This is not observed on the Microsoft Windows plattform. To avoid this problem, set the parameter SQLNET.INBOUND_CONNECT_TIMEOUT to 0 in your active sqlnet.ora file. Alternatively, delete this parameter. This necessary configuration is also listed in the BIOVIA Direct Installation Guide for Linux, but is sometimes overlooked or ignored.

Please note that the sqlnet.ora file that is active for your Direct EXTPROC listener does not necessarily have to be the standard sqlnet.ora file located in the \$ORACLE_HOME/network/admin directory. For example, if you have configured the BIOVIA Direct EXTPROC Listener to run from a non-privileged operating system account for security reasons, you have typically set the TNS_ADMIN environment variable for this account, and the active sqlnet.ora is then usually located in the \$TNS_ADMIN directory. For details see the chapter 'Prepare the EXTPROC Listener to Run from a Non-privileged Operating System Account' in the BIOVIA Direct Installation Guide for Linux.