Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1104836
  • 博文数量: 276
  • 博客积分: 10077
  • 博客等级: 上将
  • 技术积分: 2513
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-24 20:31
文章分类

全部博文(276)

文章存档

2020年(1)

2015年(5)

2012年(2)

2011年(6)

2010年(7)

2009年(224)

2008年(31)

我的朋友

分类: Oracle

2009-07-27 10:39:14

客户端出现TNS-12542和TNS-12560,但有时连接也正常.
在客户端SQLNET.ORA设置trace
+++++++++++++++++++++++++++++
TRACE_LEVEL_CLIENT=16
TRACE_FILE_CLIENT=CLIENT
TRACE_DIRECTORY_CLIENT=c:\arc
TRACE_TIMESTAMP_CLIENT=on
TRACE_UNIQUE_CLIENT=on
+++++++++++++++++++++++++++++
在trace log可以看到如下错误信息
+++++++++++++++++++++++++++++
[27-JUL-2009 09:53:16:259] nttcni: trying to connect to socket 728.
[27-JUL-2009 09:53:16:259] ntt2err: entry
[27-JUL-2009 09:53:16:259] ntt2err: soc 728 error - operation=1, ntresnt[0]=512, ntresnt[1]=48, ntresnt[2]=0
[27-JUL-2009 09:53:16:259] ntt2err: exit
[27-JUL-2009 09:53:16:368] nttcni: exit
[27-JUL-2009 09:53:16:368] nttcon: exit
[27-JUL-2009 09:53:16:368] nserror: entry
[27-JUL-2009 09:53:16:368] nserror: nsres: id=0, op=65, ns=12542, ns2=12560; nt[0]=512, nt[1]=48, nt[2]=0; ora[0]=0, ora[1]=0, ora[2]=0
[27-JUL-2009 09:53:16:368] nsopen: unable to open transport
+++++++++++++++++++++++++++++
 

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.

Solution

There 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\Parameters

On 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.
 
 
详细可参考MicorSoft上的说明
阅读(1668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~