`
danwind
  • 浏览: 225148 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

Oracle 连接故障的排查

阅读更多

Oracle 连接故障的排查

 

1、  故障现象

通过resin中间件建立连接池,时间特别长。

2、  故障分析和排除

1)检查建立连接的jsp程序,非常简单的调用jdbc,没有问题。担心jdbc driver for oracle在数based on IBM AIX,但因为找不到更合适的版本,只能放弃这个方向。

2)在数据库端执行lsnrctl status反应时间特别长。Lsnrtcl start,lsnrctl stop也很慢。

检查发现listenerlog很大,对该log改名

Mv listener.log listener.log.old

Touch listener.log

执行lsnrctl的时间很快缩短,似乎问题得到了解决。

标准的listener.ora的格式如下(支持两个instance):

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = IPC)(KEY = ora92))

      )

     (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.11)(PORT = 1521))

      )

    )

  )

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

     (SID_NAME = client)

     (ORACLE_HOME = /app/oracle/product/9.2.0)

    )

  (SID_LIST =

    (SID_DESC =

     (SID_NAME = bbnec)

     (ORACLE_HOME = /app/oracle/product/9.2.0)

    )

  )

 

3)在数据库端和另一台服务器(双机环境)执行sqlplus conn,发现还是很慢。Lsnrctl依然很慢。

 

典型的listener故障报错信息如下:

aix broken pipe

lost contact

等等。

 

重新启动数据库,故障现象没有好转。

  SQL>shutdown immediate

  SQL>startup

4)无奈之下,重新启动计算机。

重新启动计算机时,由于没在主控台,需要通过网络远程登录过去。在服务器的ip 地址能ping通,而且确认服务器已经启动的情况下,telnet该服务器需要等待非常长的时间,以致于好几次都放弃telnet登录了。最终通过telnet能顺利登录服务器,但故障现象依旧。

为什么telnet 需要很长时间呢?

检查 DNS 设置,原来服务器配置了/etc/resolv.conf。这个文件的意义在于,如果不存在,表示本机的域名服务由/etc/hosts提供,如果存在且空,表示本机是域名服务器,如果存在且非空,表示本机是由域名服务器提供域名解析的客户机。

非常生气地给这个文件改名,所有故障现象灰飞烟灭。

 

3、  总结

在排除故障的过程中,曾经猜想过可能是DNS问题,因为在ping hostname的时候就非常慢。但是,做梦也没想到,在一个正式的生产系统中,有人会做这样一个有害的dns设置。而且,连接慢应该是一个久已存在的问题,只是以前没有注意到而已。问题的原因很简单,但排除故障的过程很长,花了整整一天,只是因为发生了不该发生的事情。

本文转载自:http://wenku.baidu.com/view/d046670552ea551810a68766.html?from_page=view&from_mod=download

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics