APPLIES TO:
Oracle Applications Utilities - Version 11.5.10.2 to 12.1.3 [Release 11.5.10 to 12.1]
IBM AIX on POWER Systems (64-bit)
IBM AIX Based Systems (64-bit)
AIX5L Based Systems (64-bit)
Checked for relevance on June 4th, 2018
SYMPTOMS
All the JDBC Thin Client connections from E-Business Suite are waiting long and then failing with error :
...
java.sql.SQLException: Io exception: There is no process to read data written to a pipe.
...
SQL*Plus connections are working fine.
CAUSE
This issue is usually caused by "TimeOut" issue under the following levels :
1. Firewall level timeout
2. SQL*Net level timeout
3. Listener level timeout
Please test the JDBC connection using the following code :
//=======================================================
// Test Code: cut from here
//=======================================================
import java.sql.*;
class oraConn
{
public static void main (String args []) throws SQLException
{
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
java.util.Properties ora_property = new java.util.Properties();
Connection conn =
DriverManager.getConnection("jdbc:oracle:thin:apps/<passwd>@<host>.<domain>:<port>:<SID>");
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("select user from dual");
while (rset.next())
System.out.println(rset.getString(1));
} catch (SQLException ex) {
// A SQLException was generated. Catch it and
// display the error information. Note that there
// could be multiple error objects chained
// together.
System.out.println ("\n*** SQLException caught ***\n");
// Walk through the list of SQL exceptions and print
// each SQL exception's information
while (ex != null) {
System.out.println ("SQLState: " + ex.getSQLState ());
System.out.println ("Message: " + ex.getMessage ());
System.out.println ("Vendor: " + ex.getErrorCode ());
ex.printStackTrace();
ex = ex.getNextException ();
System.out.println ("");
}
}
}
}
//=======================================================
// End-of-Code
//=======================================================
Check if it is able to create a JDBC connection on the server. Monitor it with :
SQL> SELECT sid, serial#, logon_time, program
FROM v$session
WHERE program LIKE 'JDBC%';
Check if the test code returns following error after the above session gets killed :
...
*** SQLException caught ***
SQLState: null
Message: Io exception: There is no process to read data written to a pipe.
Vendor: 17002
java.sql.SQLException: Io exception: There is no process to read data written to a pipe.
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)
at oracle.jdbc.ttc7.TTC7Proto .handleIOException(TTC7Protocol.java:3664)
at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:353)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:371)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:551)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:351)
at java.sql.DriverManager.getConnection(DriverManager.java:559)
at java.sql.DriverManager.getConnection(DriverManager.java:211)
at oraConn.main(oraConn.java:9) ...
SOLUTION
To implement the solution, please execute the following steps :
1. Unset any timeout value at network level or firewall level, if any.
2. Modify timeout settings :
listener.ora :
INBOUND_CONNECT_TIMEOUT_LISTENER = 0
sqlnet.ora :
SQLNET.INBOUND_CONNECT_TIMEOUT = 0
3. Re-start the Database and the DB Listener
4. Retest the issue
5. Migrate the solution to appropriate Environment
No comments:
Post a Comment