问题具体内容如下:
客户那边人员说oracle数据库又问题,pgsql、navicat连接很慢,很卡,经常timeout,经过重重排查,从客户那边重设服务器网络、到自己修改oracle监听文件、映射文件等其他文件,最终还是未能解决问题。最后,开外挂上google搜到了,oracle版本的一个bug,DNS解析问题导致数据库连接很慢,连不上。
查下监听日志,主要是以下内容:
TNS-12525: TNS:listener has not received client's request in time allowed TNS-12535: TNS:operation timed out TNS-12606: TNS: Application timeout occurred
TNS-12518: TNS:listener could not hand off client connection TNS-12571: TNS:packet writer failure TNS-12560: TNS:protocol adapter error TNS-00530: Protocol adapter error Linux Error: 104: Connection reset by peer
27-NOV-2012 15:43:26 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=jdbc)(USER=oracle))(SERVICE_NAME=orcl)) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.10.1.200)(PORT=61018)) * establish * orcl * 0
数据库警告日志中也出现ora-609内容:
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: 29-FEB-2012 20:45:05 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 (12792) as a result of ORA-609
报错如下
oracle bug: Bug 9593134 - DNS or NIS mis-configuration can cause slow database connects [ID 9593134.8]
排查步骤
查看防火墙和SELinux是否关闭
查看ping是否正常
ping 127.0.0.1 正常
ping localhost 正常
ping server1 正常 server1为主机名
查看tnsping是否正常
tnsping 127.0.0.1 很慢
tnsping localhost 很慢
tnsping server1 很慢 server1为主机名
检查侦听文件listener.ora和tnsnames.ora配置是否正确
vim $ORACLE_HOME/network/admin/listener.ora
vim $ORACLE_HOME/network/admin/tnsnames.ora
listener.ora和tnsnames.ora中host必须一样
解决方法:
第一步,/etc/hosts 一定要映射主机名
通过服务器hostname命令查看主机名,然后到/etc/hosts做映射
修改服务器名
CentOS7.X : vim /etc/hostname
CentOS6.X : vim /etc/sysconfig/network
修改完最终如下
第二步,DNS配置
oracle配置成功,但是navicat、pgsql连接很慢、无响应,跟dns解析有关
vim /etc/resolv.conf
重启监听后问题重现。
解决办法就是注释掉/etc/resolve.conf 中对DNS解析内容。
重启监听,OK.