ORA-12542: TNS:address already in use

博客讲述了作者遇到的一个问题:Python编写的Oracle和DataGuard环境巡检程序在Windows2003服务器上运行时,由于大量并发导致端口耗尽。通过排查,作者发现是Windows默认的临时端口范围限制导致的问题。解决方案是调整注册表中MaxUserPort值,扩大端口范围至1024-65534,重启后问题得到解决。
部署运行你感兴趣的模型镜像

用python写了个oracle和dataguard环境日常巡检的程序,跑了有几年了,上周六晚上突然爆出这样的错误。

恰巧当晚有停机维护,以为是网络那边动了东西导致的,后来查了点相关信息。感觉不是网络问题,还是我这边程序出问题。

程序是将根据ip列表依次巡检各个数据库,然后将巡检信息写入到我的一个oracle里面,我以为是由于现在巡检的数据库太多,并发量大,导致这台oracle服务器无法分配更多的tcp端口来处理。折腾了半天,还是没有解决问题。

查了些资料,应该是我程序所在的windows2003服务器的问题。

对于windows2003,Windows默认为匿名(临时)端口保留的端口号范围是从1024到5000,也就是不到4000个端口,当我程序大量并发的时候,会超过这个数字。

于是打开注册列表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters注册表子键,在Parameters子键下创建或修改名为MaxUserPort的REG_DWORD值,该值的范围是从5000到65534,缺省值为5000,建议将该值设置为65534

也就是允许的端口号范围改为1024-65534,这样的话,就不会出现端口号不足的问题。

增加了该值后,重启操作系统,执行python巡检程序,就没有报错发生了。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值