TNS-12537: TNS:connection closed

本文记录了一次解决WEB应用程序中TNSPing高延迟的问题经历。通过排查发现,问题根源在于本地域名解析配置错误导致的连接超时。通过对/etc/resolv.conf文件的修复,成功解决了连接超时的问题。
最近发现WEB应用程序监听链接不上, 登录到系统LINUX 感觉反应很慢. 监听和数据库都很正常.唯独TNSPING 本地的时候 要6000毫秒.
 
Fatal NI connect error 12537, connecting to:
 (LOCAL=NO)
  VERSION INFORMATION:
        TNS for Linux: Version 11.2.0.1.0 - Production
        Oracle Bequeath NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production
        TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production
  Time: 25-MAR-2014 11:33:49
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12537
TNS-12537: TNS:connection closed
    ns secondary err code: 12560
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
opiodr aborting process unknown ospid (9780) as a result of ORA-609
Tue Mar 25 11:33:49 2014

用PING 某个IP地址 速度很正常 用TNSPING 本机的TNSNAME.ORA 达到4000MS  就想到可能是命名解析问题
结果是发现RESOLV SEARCH LOCALDOMAIN 域名解析顺序没  search localdomain
vi /etc/resolv.conf 

这个是以前为了发邮件配置8.8.8.8 不小心被删除了.后来后来很久才出这个问题,估计跟连接池释放时间吧.
有时候这问题报出,你还想不起最近做了什么修改呢!

### 解决 `TypeError: strptime() takes exactly 2 arguments (1 given)` 和 Oracle 数据库连接问题 #### 关于 `TypeError` 错误 此错误表明在调用 `strptime()` 方法时,未提供足够的参数。`strptime()` 方法需要两个参数:一个字符串形式的日期和一个格式化字符串[^1]。 以下是解决该问题的代码示例: ```python from datetime import datetime date_string = "2023-10-05" format_string = "%Y-%m-%d" # 格式化字符串 dt_object = datetime.strptime(date_string, format_string) # 正确传递两个参数 print(dt_object) ``` 确保在调用 `strptime()` 方法时始终提供两个参数,以避免此类错误。 --- #### 关于 DPI-1080 和 ORA-3113 错误 DPI-1080 和 ORA-3113 错误通常与 Oracle 数据库连接相关,具体表现为连接意外关闭或网络通信中断[^2]。 以下是一些可能的原因及解决方案: 1. **网络问题** 确保客户端和服务器之间的网络连接稳定。可以尝试使用 `ping` 命令测试网络延迟和连通性[^2]。 2. **超时设置** 如果查询时间过长,可能会触发超时机制。可以通过调整 `cx_Oracle` 的超时参数来延长连接时间: ```python import cx_Oracle dsn_tns = cx_Oracle.makedsn("host", "port", service_name="service_name") connection = cx_Oracle.connect(user="username", password="password", dsn=dsn_tns, events=True) # 设置超时时间为 60 秒 connection.clientinfo = "MyApp" connection.module = "MyModule" connection.action = "MyAction" connection.stmtcachesize = 100 connection.calltimeout = 60000 # 单位为毫秒 ``` 3. **数据库端问题** 检查数据库服务器是否正常运行,并确认是否有其他进程导致资源耗尽或连接被强制关闭[^2]。 4. **驱动版本兼容性** 确保使用的 `cx_Oracle` 版本与 Oracle 数据库版本兼容。可以参考官方文档验证版本兼容性[^3]。 5. **异常捕获与重试逻辑** 在代码中添加异常捕获和重试机制,以应对临时性连接问题: ```python import cx_Oracle import time def connect_to_oracle(): while True: try: dsn_tns = cx_Oracle.makedsn("host", "port", service_name="service_name") connection = cx_Oracle.connect(user="username", password="password", dsn=dsn_tns) print("Connection successful") return connection except cx_Oracle.DatabaseError as e: error, = e.args if error.code == 3113 or error.code == 1080: print("Connection closed. Retrying in 5 seconds...") time.sleep(5) else: raise ``` --- ### 总结 通过正确传递两个参数给 `strptime()` 方法,可以解决 `TypeError` 问题。对于 DPI-1080 和 ORA-3113 错误,建议从网络稳定性、超时设置、数据库端状态以及驱动版本兼容性等方面排查并解决问题[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值