TNS12541: TNS: 无监听程序与TNS12560: TNS: 协议适配器

2023年 4月 29日 52.1k 0

一、环境描述: OS : Windows Server 2008 32Bit DB : Oracle 11.2.0 二、排错过程: 前天应用不能访问Oracle数据库了 (后台应用能访问数据库),故障发生。 马上登录到服务器里查看监听状态,发现有

一、环境描述:

OS : Windows Server 2008 32BitDB : Oracle 11.2.0

二、排错过程:

前天应用不能访问Oracle数据库了 (后台应用能访问数据库),故障发生。马上登录到服务器里查看监听状态,发现有TNS-12541 ,TNS-12560等错误

手动把监听服务启动,这时候服务状态上显示为已启动,但在CMD窗口执行lsnrctl status的时候依然返回错误信息:

C:>lsnrctl status

LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 13-2月 -2018 10:39:47

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=john-PC)(PORT=TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误  TNS-00511: 无监听程序  32-bit Windows Error: 61: Unknown error正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

过段时间回显非常慢。

三、解决方案步骤

**网上有个解决TNS-12535错误的案例,平台和版本都很类似,如下:

1、在 sqlnet.ora文件中 增加如下行:

DIAG_ADR_ENABLED = OFF

2、在listener.ora文件中增加如下行:

DIAG_ADR_ENABLED_<listenername> = OFF如果监听是listener时,则前面的名称为:DIAG_ADR_ENABLED_LISTENER = OFF

3、重新启动windows服务管理中的监听程序.先停止,然后再重新启动.

4、检查结果.发现可以了,返回的值在10毫秒.有时为0毫秒.成功!!

但这并不是问题发生原因,在继续排查过程中偶然发现监听日志大小居然为4G。

Oracle一个BUG,BUG号为9879101 : THE CONNECT THROUGH LISTENER WAS SLOW WHEN LISTNER LOG GROWED 4GB。

有MOS上一篇文章,ID 1319797.1 : WINDOWS: Listener Hangs & Lsnrctl Commands Are Slow or Hang,里面给出了解决方法:

You can solve this problem by deleting the large listener in $ORACLE_BASEdiagtnslsnr<hostname>listenertrace<listener_name>.log1)  Stop the listener process using the command line or Control Panel Service.

2) Delete the log file(s) that are at or approaching the 4G size limit at this location:$ORACLE_BASEdiagtnslsnr<hostname>listenertrace<listener_name>.log3)  Issue any lsnrctl command and you will see a new listener.log in its place under:$ORACLE_BASEdiagtnslsnr<hostname>listenertrace

Since ADR Diagnostics are enabled for this listener these steps cannot be done dynamically using the lsnrctl utility. e.g.LSNRCTL>set log_file mylogWill yield:  TNS-01251: Cannot set trace/log directory under ADR.

However, it is possible to disable the flat file listener logging using the following commands:

LSNRCTL>set current_listener <listener_name>LSNRCTL>set log_status OFFLSNRCTL>save_config

5、按照以上说明如下进行:

1)LSNRCTL进入交互模式2)set log_file mylog3)执行set current_listener LISTENER4)set log_status off5)save_config6)stop 停止监听器7)手工删除ADR指定的监听日志路径下的listener.log文件8)start重启监听器9)status查看状态

到此问题解决。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论