Here are some detailed tuning measures that should help:
The ora-12571 usually indicates an instability between Oracle and the network. Try performing the following to eliminate the error:
- Shutdown the database
- Stop the listener
- Remove all the *.dat files in the c:\orant\otrace80\admin directory
- Specify the parameter HASH_JOIN_ENABLED = FALSE in the file
INIT(sid).ORA file
- Specify the parameter EPC_DISABLED =TRUE in the registry
(REGEDT32 -> HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE)
- Restart the database
- Specify the parameter TCP_KEEPALIVE in the Windows NT registry
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
Edit - Add value : KeepAliveTime (REG_DWORD)
Decimal -> 180000 (for example = 3 minutes)
- Edit the file listener.ora. Configure the parameter
TRACE_LEVEL_LISTENER = OFF
- Remove unused protocol addresses, like Named Pipes and SPX, from the LISTENER.ORA file - Start the listener
- Specify the SQLNET.EXPIRE_TIME = 0 parameter in the sqlnet.ora file
- Monitor your network
This can also be a result of a client machine abnormally disconnecting (such as a PC rebooting while a query is running), the server process tries to communicate with the client, the client is no longer there, thus the error is generated.
This error can also be caused by a client issuing a CTRL-C while query results are being returned.
This error i sometimes caused by poorly written applications that do not wait for all data to be returned before continuing. The server tries to send data to the client, but the client is not waiting for data.
The listener may be timing out. Go to the listener.ora file to see what the CONNECT_TIMEOUT_ parameter is set to. Try increasing this in
increments of 5 (10 to 15). Once the parameter is changed, stop and restart the listener.
It is important to note that the 'LISTENER' part of this parameter is really the listener name, and is not a static part of the parameter name.
There should be one CONNECT_TIMEOUT_ for each and every listener defined in the listener.ora file. A default value of 10 seconds will be used if one is not specified in CONNECT_TIMEOUT_ parameter.
Also, checking the listener.log may provide more detailed error messages.