oracle数据库监听由于resolv.conf配置导致连接异常

来源:这里教程网 时间:2026-03-03 19:25:03 作者:

问题描述

数据库和监听都能正常起来,但是应用不能连接,使用“lsnrctl status”超时报错。

出现问题过程是:做了虚拟机迁移,对存储进行扩容,迁移后应用不能正常访问数据库。重启监听操作,监听不能正常停止,通过杀进程然后再启动,能正常起来,但不能查看监听状态。

查看数据库连接情况,并没有连接进来,客户端直接访问不能连接上,看后台alert日志发现有很多终止监听进程ora-609的报错,这种情况一般只有在连接超时的时候才会发生。

处理过程

1)“lsnrctl stop”不能正常停止,通过“ps –ef|grep tns”查询出进程号,使用“kill -9 进程号”杀掉进程,再进行启动监听,监听能够正常起来

[oracle@zjxsdb admin] lsnrctl start

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 20-DEC-2019 9:16:38

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

Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production

System parameter file is /u01/app/product/11.2.0/dbhome_1/network/admin/listener.ora

Log messages written to /u01/app/diag/tnslsnr/oracle/listener/alert/log.xml

Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=80.12.140.218)(PORT=12355)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=80.12.140.218)(PORT=12355)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production

Start Date                20-DEC-2019 9:16:38

Uptime                    0 days 0 hr. 2 min. 11 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/app/product/11.2.0/dbhome_1/network/admin/listener.ora

Listener Log File         /u01/app/diag/tnslsnr/oracle/listener/alert/log.xml

Services Summary...

Service "PLSExtProc" has 1 instance(s).

 Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...

Service "zjxssc" has 1 instance(s).

 Instance "zjxssc", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

在使用客户端去连接,发现一直卡在那,通过“lsnrctl status”查看发现一直卡在连接端口那

[oracle@oracle ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 20-DEC-2019 9:16:50

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=80.12.140.218)(PORT=12355)))

通过修改监听端口,把监听端口改成12356,在进行重启监听,发现监听正常,客户端访问该端口能够正常访问,但是连接超时严重,差不多要10秒才能连上,另外查询数据也很慢,也要延时10秒差不多。

2)查看alert日志,发现很多连接被终止的操作

opiodr aborting process unknown ospid (28725) as a result of ORA-609

监听修改回12355

  3)检查dns配置,本地hosts

      检查dns配置,发现dns地址能够正常ping通,怀疑dns解析错误导致访问路径不正常。Dns配置如下:

注释掉/etc/resolv.conf中的nameserver解析,查看监听状态,监听状态恢复,客户端连接恢复,检查业务也恢复。

结论

对于这个问题,这是版本11.2.0.1的一个bug,当用lsnrctl status查看监听器状态时,卡住,客户端连接会报TNS-12537: TNS:connection closed,删除主机文件/etc/resolv.conf的dns配置信息就恢复了,要想彻底解决,应该要升级版本,在实际应用中,数据库一般用不到dns解析,建议不要去配置dns,特别是dns不是正确的配置,或者dns不通都会造成影响, 如果是rac数据库甚至造成节点重启。

相关推荐