Wednesday, April 8, 2009

TNS-12542: address already in use.

TNS-12542: address already in use.
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: