Wednesday, April 8, 2009

TNS-12542: address already in use.

TNS-12542: address already in use.
Cause
Problem is caused due to the fact that the free ports in the windows client has been exhausted and it is trying to make use of a port which is in TIME_WAIT state which gives the error tns-12542: address already in use.

FixThere are 2 solutions available:

1.) increase the free port range:

======================

Start Registry Editor (Regedt32.exe).Locate the following key in the registry:HKEY_LOCAL_MACHinE\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersOn the Edit menu, click Add Value, and then add the following registry value:

Value Name: MaxuserPort Data Type: REG_DWORD
Value: 65534 Valid Range: 5000-65534 (decimal)
Default: 0x1388 (5000 decimal)

Description: This parameter controls the maximum port number used when an application requests any available user port from the system. Normally, ephemeral (that is, short-lived) ports are allocated between the values of 1024 and 5000 inclusive.

2.) Decrease the value for TIME_WAIT state:

================================

TcpTimedWaitDelay (new in Windows NT versions 3.51 SP5 and later)

Key: Tcpip\Parameters Value Type: REG_DWORD - Time in seconds

Valid Range: 30-300 (decimal)Default: 0xF0 (240 decimal)

Description: This parameter determines the length of time that a connection will stay in the TIME_WAIT state when being closed. While a connection is in the TIME_WAIT state, the socket pair cannot be re- used. This is also known as the "2MSL" state, as by RFC the value should be twice the maximum segment lifetime on the network. See RFC793 for further details.

No comments: