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

问题描述

数据库和监听都能正常起来,但是应用不能连接,使用“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

oracle数据库监听由于resolv.conf配置导致连接异常_第1张图片

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数据库甚至造成节点重启。

你可能感兴趣的:(oracle,数据库)