Kbase P124726: Receiving RPC error after 30 mins when extracting data from OpenEdge Database using SQL92 statements
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  03/07/2007 |
|
Status: Unverified
FACT(s) (Environment):
OpenEdge 10.1A
Oracle 10g
OpenEdge Database Category: Configuration
OpenEdge SQL Category: ODBC Drivers
Progress OpenEdge 10.1A driver
SYMPTOM(s):
Receiving RPC error when extracting data from OpenEdge Database using SQL92 statements
Client is being disconnected after 30 mins.
Using SQLNET.ORA to communicate from Oracle to a Progress Database via ODBC.
Connection to the database is successful.
Can successfully extract data from the database without receiving an RPC error.
Some jobs which are pulling an excessive amount of data terminate with an RPC error after about 30 mins.
Error seems to occur when we are finished pulling the data but are committing it to the Oracle tables.
ORA-02068: following severe error from VPAS_CONTRACT
ORA-28511: lost RPC connection to heterogeneous remote agent using
SID=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hostname)(PORT=port#))(CONNECT_DATA=(SERVICE_NAME=servicenamet)))
ORA-06512: at
"REPSTAGE.VPAS_CONTRACT_STG", line 4661 ORA-06512: at
"REPSTAGE.VPAS_CONTRACT_STG", line 4949 ORA-06512: at line 1
RPC error:
ORA-28500: connection from ORACLE to a non-Oracle system returned this message:
[Generic Connectivity Using ODBC][DataDirect-Technologies][ODBC PROGRESS
driver][PROGRESS]Error in Network Daemon (SQL S
HS Agent received unexpected RPC disconnect
Network error 1003: NCR-01003: NCRS: Read error.
No timout is being set within the OpenEdge ODBC Driver
ODBC Trace logs indicate we are receiving a normal SQLDisconnect
CAUSE:
In the SQLNET.ORA file the following parameter was set which resulted in the session being terminated after 30 mins.
SQLNET.INBOUND_CONNECT_TIMEOUT = 1800
FIX:
Either increase the SQLNET.INBOUND_CONNECT_TIMEOUT parameter so as to ensure that the job runs to completion prior to the session being disconnected or do not set the parameter. The default value for this parameter is None.
The following is a description of the parameter and its purpose.
SQLNET.INBOUND_CONNECT_TIMEOUT
Purpose
Use the SQLNET.INBOUND_CONNECT_TIMEOUT parameter to specify the time, in seconds, for a client to connect with the database server and provide the necessary authentication information.
If the client fails to establish a connection and complete authentication in the time specified, then the database server terminates the connection. In addition, the database server logs the IP address of the client and an ORA-12170: TNS:Connect timeout occurred error message to the sqlnet.log file. The client receives either an ORA-12547: TNS:lost contact or an ORA-12637: Packet receive failed error message.
Without this parameter, a client connection to the database server can stay open indefinitely without authentication. Connections without authentication can introduce possible denial-of-service attacks, whereby malicious clients attempt to flood database servers with connect requests that consume resources.
To protect both the database server and the listener, Oracle Corporation recommends setting this parameter in combination with the INBOUND_CONNECT_TIMEOUT_listener_name parameter in the listener.ora file. When specifying values for these parameters, consider the following recommendations:
Set both parameters to an initial low value.
Set the value of the INBOUND_CONNECT_TIMEOUT_listener_name parameter to a lower value than the SQLNET.INBOUND_CONNECT_TIMEOUT parameter.
For example, you can set INBOUND_CONNECT_TIMEOUT_listener_name to 2 seconds and INBOUND_CONNECT_TIMEOUT parameter to 3 seconds. If clients are unable to complete connections within the specified time due to system or network delays that are normal for the particular environment, then increment the time as neede
Default value - None
Example
SQLNET.INBOUND_CONNECT_TIMEOUT=3