今日客户数据库连接报错,在使用plsql进行数据库连接时出现如下报错信息:

ORA-12542 TNS 地址已被占用。

问题排查:

1  使用其他服务器客户端连接数据库正常。

2  只有这一台机器连接数据库异常

查询相关的metalink文档发现如下:

2016/11/22 文档显示

https://support.oracle.com/epmos/faces/SearchDocDisplay?_adf.ctrlstate=

eur163egx_9#SYMPTOM 1/3

TNS-12542 Error When Executing Batch Jobs or in High Transaction Environment (文档 ID

276812.1)

In this Document

Symptoms

Cause

Solution

References

APPLIES TO:

Oracle Net Services - Version 8.1.7.4 to 11.2.0.3 [Release 8.1.7 to 11.2]

Oracle Net Services - Version 11.2.0.4 to 11.2.0.4 [Release 11.2]

Microsoft Windows (32-bit)

Checked for relevance on 30-SEP-2011

Checked for relevance on 14-MAY-2013

SYMPTOMS

TNS-12542 errors in log files when executing batch jobs or in high transaction environments. Client trace

files will show

CLIENT TRACE FILE:

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

(3752) [10-JUN-2004 15:20:50:899] niotns: Calling address:

(DESCRIPTION=(SOURCE_ROUTE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=tst81)(PORT=1526)))(CONNECT_DATA=

(SID=sec)(SRVR=DEDICATED)(CID=(PROGRAM=c:\windows\system32\inetsrv\w3wp.exe)(HOST=SRVPDFTEST)

(USER=userarchive))))

(3752) [10-JUN-2004 15:20:50:899] nscall: connecting...

(3752) [10-JUN-2004 15:20:50:899] nttgetport: port resolved to 1526

(3752) [10-JUN-2004 15:20:50:899] nttbnd2addr: looking up IP addr for host:tst81

(3752) [10-JUN-2004 15:20:50:899] nsopen: opening transport...

(3752) [10-JUN-2004 15:20:50:899] nttcnp: Validnode Table IN use; err 0x0

(3752) [10-JUN-2004 15:20:50:899] nttcni: trying to connect to socket 6628.

(3752) [10-JUN-2004 15:20:50:899] ntt2err: soc 6628 error - operation=1, ntresnt[0]=512, ntresnt[1]=48,

ntresnt[2]=0

(3752) [10-JUN-2004 15:20:50:899] 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

(3752) [10-JUN-2004 15:20:50:899] nsopen: unable to open transport

(3752) [10-JUN-2004 15:20:50:899] nioqper: error from nscall

(3752) [10-JUN-2004 15:20:50:899] nioqper: nr err code: 0

(3752) [10-JUN-2004 15:20:50:899] nioqper: ns main err code: 12542

(3752) [10-JUN-2004 15:20:50:899] nioqper: ns (2) err code: 12560

(3752) [10-JUN-2004 15:20:50:899] nioqper: nt main err code: 512

(3752) [10-JUN-2004 15:20:50:899] nioqper: nt (2) err code: 48

(3752) [10-JUN-2004 15:20:50:899] nioqper: nt OS err code: 0

(3752) [10-JUN-2004 15:20:50:899] niqme: reporting NS-12542 error as ORA-12542

(3752) [10-JUN-2004 15:20:50:899] niomapnserror: returning error 12542

(3752) [10-JUN-2004 15:20:50:899] niotns: Couldn't connect, returning 12542

(432) [10-JUN-2004 15:20:50:899] nstimarmed: no timer allocated

SQLNET.LOG file:

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

Fatal NI connect error 12542, connecting to:

(DESCRIPTION=(SOURCE_ROUTE=OFF)(ADDRESS=(PROTOCOL=TCP)(HOST=tst81)(PORT=1526))(CONNECT_DATA=(SID=sec)

(SRVR=DEDICATED)(CID=(PROGRAM=c:\windows\system32\inetsrv\w

3wp.exe)(HOST=SRVPDFTEST)(USER=userarchive))))

VERSION INFORMATION:

2016/11/22 文档显示

https://support.oracle.com/epmos/faces/SearchDocDisplay?_adf.ctrlstate=

eur163egx_9#SYMPTOM 2/3

TNS for 32-bit Windows: Version 9.2.0.1.0 - Production

Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 9.2.0.1.0 - Production

Time: 10-JUN-2004 15:20:50

Tracing to file: E:\oracle\ora92\temp\cli_1732.trc

Tns error struct:

nr err code: 0

ns main err code: 12542

TNS-12542: TNS:address already in use

ns secondary err code: 12560

nt main err code: 512

TNS-00512: Address already in use

nt secondary err code: 48

nt OS err code: 0

CAUSE

The problem is due to the fact that the free TCP ports on the Windows client have been exhausted and it is

trying to make use of a port which is in TIME_WAIT state and which throws the error:

TNS-12542: Address already in use

SOLUTION

There are 3 possible solutions:

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.

Note that any change to TCPIP parameters in the Windows registry would requires a restart of the server.

3.) Use of IPC protocol

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

2016/11/22 文档显示

https://support.oracle.com/epmos/faces/SearchDocDisplay?_adf.ctrlstate=

eur163egx_9#SYMPTOM 3/3

If the application or failing connection (such as local batch jobs running high transactions) is local to

the Database, use IPC for connectivity, rather than TCP.

The IPC protocol will allow a more intense connection load than TCP will.

See Note:29232.1 for details on IPC.

REFERENCES

NOTE:29232.1 - IPC Explained

关于tcpip连接的文章转载如下:

怎么解决在window下高并发TCP请求端口被占用有关问题

网友分享于:2015-08-26  浏览:273次

如何解决在window下高并发TCP请求端口被占用问题

当客户端启动到服务器的 TCP/IP 套接字连接时,客户端通常连接到服务器上的特定端口,并请求服务器通过临时(或暂时)TCP 或 UDP 端口进行响应。在 Windows Server 2003 和 Windows XP 中,客户端应用程序所使用的临时端口的默认范围为 1025 到 5000。在某些情况下,有可能耗尽默认范围的可用端口。

TCP/IP 端口耗尽会导致连接到 BizTalk Server 的应用程序及连接到远程服务器的 BizTalk 应用程序出现意外错误

TCP/IP 端口耗尽的症状随客户端应用程序的不同而不同,但通常都表现为显示网络连接失败错误。若要确定网络连接失败是否是由 TCP/IP 端口耗尽造成的,请在客户端计算机上执行以下步骤:

在运行 Windows XP 或 Windows Server 2003 的计算机上单击“开始”,再单击“运行”,然后键入 cmd,单击“确定”打开命令提示。

执行以下操作之一:

在 Windows XP 或 Windows Server 2003 计算机上的命令提示中输入以下命令,显示此计算机上 TCP/IP 协议所使用的活动连接:

复制

netstat -n 这将列出绑定到客户端计算机的 TCP/IP 地址以及 TCP/IP 地址与远程服务器通信所使用的端口。如果列出的端口使用了所有可用的端口,则出现了 TCP/IP 端口耗尽现象。

在基于 Windows Server 2003 的客户端计算机的命令提示中输入以下命令,以显示 TCP/IP 协议所使用的活动连接:

复制

netstat -b 这将列出绑定到客户端计算机的 TCP/IP 地址、TCP/IP 地址与远程服务器通信所使用的端口以及使用这些端口的应用程序。此信息可以帮助您确定那个客户端应用程序正在使用过多的 TCP/IP 端口。

与 TCP/IP 端口耗尽有关的问题

当客户端应用程序尝试使用 TCP/IP 套接字连接到 BizTalk Server,或当 BizTalk 应用程序尝试使用 TCP/IP 套接字连接到服务器时,可能会出现类似于下面的情况:

复制

System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send.

- 或者 -

复制

Unable to connect to the remote server

System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted.

当出现这些错误时,还可能出现以下问题:

客户端应用程序可能无法连接到 BizTalk Server。

BizTalk 应用程序服务可能无法连接到远程 SQL 服务器。

BizTalk Server 适配器可能无法连接到远程服务器。

客户端应用程序预留的每个端口均占用内核内存。如果预留了数目超常的客户端端口,Windows 内核内存的占用率将相应增加。

原因

如果客户端计算机中存在数目超常的 TCIP/IP 套接字连接,则客户端计算机上可能出现 TCP/IP 端口耗尽的情况。如果多个客户端应用程序都在建立连接,则可能出现这种情况。

如果所有可用的临时端口都分配给了客户端应用程序,则客户端将出现 TCP/IP 端口耗尽的情况。当 TCP/IP 端口耗尽时,将无法预留客户端端口,并且尝试通过 TCP/IP 套接字连接到服务器的客户端应用程序也将出错。

在高负载情况下,比处于正常负载时更容易出现 TCP/IP 端口耗尽的情况。

解决方法

执行以下步骤以避免 TCP/IP 端口耗尽及其相关问题:

验证客户端应用程序没有生成过多的 TCP/IP 套接字连接。这一点可以用上面提到的方法来检查,即在 Windows Server 2003 和 Windows XP 上运行 netstat -n,或者在 Windows Server 2003 和 2008 上运行 netstat -b。

如果某个客户端应用程序使用了数量超常的 TCP/IP 套接字连接,则应考虑重新设计客户端应用程序,以便更有效地使用 TCP/IP 套接字连接。

注意

如果为 BizTalk 应用程序服务 (BTSNTSvc.exe) 实例预留了数量超常的客户端端口,则需验证配置为在 BizTalk 应用程序服务中运行的任何自定义代码都没有建立过多的 TCP/IP 套接字连接。

如果大量客户端应用程序要启动已知数量的 TCP/IP 套接字连接,但没有足够数量的可用临时端口来满足连接请求,则需要进行以下注册表修改。

警告

如果注册表编辑器使用不当,则可能会产生严重问题,导致重新安装操作系统。Microsoft 不保证可以解决因注册表编辑器使用不当而造成的问题。请慎用注册表编辑器,风险自负。在修改注册表之前,请务必备份注册表,并确保您知道在发生问题时如何使用备份进行还原。有关如何备份、还原及修改注册表的详细信息,请参阅 Microsoft 知识库文章“Microsoft Windows 注册表说明”,网址为 http://go.microsoft.com/fwlink/?LinkId=62729。 增加动态分配到客户端 TCP/IP 套接字连接的临时端口的上限。

启动注册表编辑器。

在注册表中,浏览到并单击以下注册表项。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值,以增加可以动态分配到客户端的临时端口的数量:

值名称

MaxUserPort

值数据

关闭注册表编辑器。

注意

必须重新启动计算机,此更改才会生效。

注意

增加用于客户端 TCP/IP 连接的临时端口的范围将占用 Windows 内核内存。请勿将此设置的值增加至超过容纳客户端应用程序套接字连接所需要的值,以便尽可能降低对 Windows 内核内存的不必要占用。降低客户端 TCP/IP 套接字连接的超时值(默认值为 240 秒)

启动注册表编辑器。

在注册表中,浏览到并单击以下注册表项。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值,以缩短关闭连接时,该连接处于 TIME_WAIT 状态的时间。当连接处于 TIME_WAIT 状态时,套接字对无法重新使用:

值名称

TcpTimedWaitDelay

值数据

关闭注册表编辑器。

注意

必须重新启动计算机,此更改才会生效。

注意

此值的有效范围为 30 到 300(十进制)之间。默认值为 240。

进行了修改,问题得到解决

oracle地址已被占用,ORA-12542 TNS 地址已被占用相关推荐

  1. oracle地址已被占用,Listener Tns-12542:Tns:地址已被占用

    原帖由 DINGNING239 于 2008-5-31 20:20 发表 在weblogic启动的时候是否报错了? 服务器上netstat看看 [oracle@gstgateonedb arclogz ...

  2. Oracle 错误总结及问题解决 ORA

    使用 Ctrl + F 搜索错误代码 ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 OR ...

  3. ORACLE11g ORA 12514 TNS 监听程序当前无法识别连接描述符中请求的服务

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1.TN ...

  4. ORA 12514 TNS listener does not currently know of service r

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1,登录 ...

  5. oracle客户端没有tnsnames,安装好Oracle Client以后没有tnsnames.ora文件

    安装好Oracle Client以后没有tnsnames.ora文件 安装完Oracle Client以后,发现相应目录中没有tnsnames.ora文件,其实只要手动建立一个就可以了. 在 orac ...

  6. oracle 越南字符,ORACLE 12.2RAC之问题 ora.chad OFFLINE

    oracle数据库 orcale开发 oracle技术文章 ORACLE 12.2RAC之问题 ora.chad OFFLINE 问题描述: 早上巡检是发现一套RAC的ora.chad一个节点的状态是 ...

  7. MAC OS 10.11.1虚拟机免费下载已安装Xcode7图片后有下载地址

    MAC OS 10.11.1虚拟机免费下载已安装Xcode7图片后有下载地址 注意:已经下载过MAC OS 10.10.5虚拟机免费下载(可安装Xcode7) 链接:http://blog.csdn. ...

  8. oracle 12c cdb/pdb tnsnames.ora设置

    获取CDB的连接串: 1.登录cdb,查看service_names. 获取PDB的连接串: 2.show pdbs,查看pdb的名称,后面再加上db_domain(如有) SQL> show ...

  9. 更换已存在项目的svn的地址

    CreateTime--2017年11月23日16:20:14 Author:Marydon 如何更换已存在项目的svn的地址? 参考链接:http://blog.csdn.net/sinat_249 ...

  10. oracle 网络访问配置tnsnames.ora文件的路径

    oracle 网络访问配置tnsnames.ora文件的路径 oracle 9i  是:  /oracle/oracle92/network/admin/-- oracle 11g 是: /oracl ...

最新文章

  1. SQLSERVER2005安装说明
  2. asp.net 2.0中新增的AppendDataBoundItems
  3. Java学习记录(补充三:String类)
  4. kali 安装volatility_volatility取证学习-linux
  5. Quartus 使用tcl分配管脚
  6. 中文转化成拼音_五笔已经淘汰,拼音到达瓶颈,百度重拳出击,全新输入方式来袭!...
  7. 明晚直播丨基于IB网络的Oracle Extend RAC最佳实践
  8. 再看序列化与反序列化[转]
  9. html中怎么点按钮切换图片,如何只用css实现点击按钮切换图片
  10. 广州某IT公司HR招开发:“不加班的都是垃圾 ”、“考不上本科是智商有问题”,网友:听了想打人...
  11. 我是不是得工作恐惧症了
  12. 程序、代码、硬件常见的英文缩写
  13. Prometheus-监控主机基础指标配置及告警
  14. [译] FACE ID 对易用性意味着什么
  15. 开源中国.....挂掉了....有图有真相
  16. 从头到脚说单测——谈有效的单元测试(上篇)
  17. redis面试:缓存雪崩、缓存击穿、缓存穿透
  18. csma最短帧长_(CSMA CD)的最小帧长计算
  19. Linux——详细模拟实现shell(进程控制综合运用)
  20. 傲梅迁移系统后 休眠=关机问题解决(更换硬盘)

热门文章

  1. 【hadoop系列】Hadoop HDFS命令
  2. 安装python报错:Detected Windows 7 SP1 without KB2533623
  3. Java回调函数实现案例
  4. 网易云解析接口PHP源码,网易云音乐热评API抓取PHP源码
  5. 【测试理论基础】史上最强边界值用例设计与实践经验分享
  6. 机器人开发--编码器
  7. 台式计算机提示内存不足怎么办,台式电脑提示内存不足怎么回事
  8. 在Windows中用VMWare虚拟机安装Linux 64位Gaussian 09手记
  9. Xamarin教程一:创建Android项目(VS2019 C#写安卓)
  10. Android反编译工具总结