ora-12542 address in used(转载)

本文介绍了解决Windows系统下ORA-12542错误的方法,包括调整临时端口范围和减少端口等待时间等措施,有助于提高Oracle数据库的连接稳定性。
转载的,原作者网址:http://space.itpub.net/118838/viewspace-621803
讲解的很不错,转载过来,留着学习。


这主要是由于 操作系统的 临时端口 不够用而引起的。 一般系统的 临时端口为 1024-5000,这在多用户的环境下,3000多个oracle链接就用光了。由于每个链接断开以后,还要有一个等待时间,例如在 windows 系统中,这个时间是 120秒。
这就导致了一个现象: 一会可以联通,一会又出现 ora-12542 address in used 。如果有临时端口可以使用,可以联通oracle;如果暂时端口没有了,就连不通了。
一下是在 windows 系统下的解决办法。
1 进入注册表编辑器(regedit),在 HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Tcpip\Parameters 里,编译-> 添加-> MaxUserPort (类型 REG_DWORD ), 值中填写 65534,(可以的范围是5000-65534).
2 退出 注册表编辑器,重新启动机器.

这样设置, 临时端口的范围从 1024-5000,增大到 1024-65534, 足够一般用户的使用,不会再出现ora-12542.

其他系统也可以做类似的设置.

转:http://blog.sina.com.cn/s/blog_53bedb6e0100feu3.html

阿宋谈关于ORACLE的端口(TNS-12542)(2009-11-06 17:04:16)
杂谈 分类:数据库

做了这么久的数据库开发,这里留点我对ORACLE端口的掌握,ORACLE各版本默认端口均是1521,可以修改,但是ORACLE9I的 WINDOWS版,使用了动态端口技术,装上后默认的是动态端口模式,如果需要改成静态端口,则只需要在 HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0下增加一个名为 use_shared_socket的字符串键,键值为true,保存后重新启动ORACLE服务即可。

动态端口和静态端口有什么区别呢,静态端口,就是说,不管你来多少请求连接,我都是不断的开无数个1521端口上的连接给你,动态就是只有前一个是1521,后面就从1024-5000开临时端口给你。

那么,不管是哪种模式,只要消耗完了系统的临时端口,就会让ORACLE的远程连接出现暂时的当机,甚至造成操作系统的崩溃。


这主要是由于操作系统的临时端口不够用而引起的。一般windows系统的临时端口为 1024-5000,由于每个链接断开以后,还要有一个等待时间,例如在windows系统中,这个时间默认是240秒。这就导致了一个现象:一会可以联通,一会TNSPING的时候又出现 TNS-12542: TNS: 地址已被占用(ora-12542 address in used。)
如果有临时端口可以使用,可以联通oracle;如果暂时端口没有了,就连不通了



TNS-12542: TNS: 地址已被占用


问题描述:

执行 tnsping 命令提示:TNS-12542: TNS: 地址已被占用

应用中报错:

java.sql.SQLException: Io 异常: The Network Adapter could not establish the conn
ection


在WINDOWS下可以缓解的办法:


1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。 将此值设置为十进制 30,其为十六进制 0x0000001e。该值将等待时间设置为 30 秒。(超过30秒自动销毁已经断开的连接)
缺省值:0xF0,它将等待时间设置为 240 秒(4 分钟)。建议值:最小值为 0x1E,它将等待时间设置为 30 秒。
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键并创建名为 MaxUserPort 的新 REG_DWORD 值。缺省值:无 建议值:至少十进制 32768,最大65534,这个对动态端口有用,用来表示最大可以分配到的端口号


修改保存后重启机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值