Oracle 连接故障的排查

本文记录了一次通过Resin中间件建立Oracle连接池时遇到的长时间延迟问题及其排查过程。问题涉及JDBC驱动、listener配置及DNS设置等环节,并最终定位为DNS配置不当导致的连接缓慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1 由于ARCHIVE挂起导致数据库挂死 2 NIT文件中SGA区设置太大,导致内存不够用,数据库和系统都挂死 3 由于临时表空间无法扩展导致数据库被挂起 4由于未打补丁导致RMAN备份时将数据库挂起 5由于BLOB类型的表记录数太多操作又太频繁导致数据库效率急差 6由于未对特大表(达到或超过100万条记录)定期做表分析导致数据库操作特别慢 7由于空间不够导致插入数据时扩展索引失败 8由于REDOLOG破坏导致数据库异常 9由于控制文件被破坏导致数据库无法正常启动 10由于数据文件丢失或破坏导致数据库无法正常启动 11由于空间参数设置不合理导致扩展表空间、索引等失败 12由于时间格式的环境变量设置问题导致话单无法入库 13由于大事务未使用大回滚段导致事务挂起 14由于数据库连接数太多导致服务器进程数多或内存耗尽 15由于使用了MTS方式,导致数据库操作特别慢(包括备份) 16由于存在一个大事务操作,导致数据库性能特别差或产生频繁日志切换 17由于没有COMMIT,导致数据库表被锁住 18索引创建不合理,导致数据库查询特别慢 19 由于BUFFER参数设置不合理导致EXP失败 20由于EXP不向上兼容,语言不兼容,导致不同版本、不同字符集的数据库无法导入 21 由于创建表空间时误将其创建在以‘本地管理’,导致在表空间上的所有对象无法修改其存储参数 22 错误地在系统表空间上建无关的数据文件 23 ORACLE客户端在P4上安装不成功 24由于LISTENER.ORA或TNSNAMES.ORA配置问题导致网络问题 25由于环境变量设置问题导致VERSOIN版本启动问题 26用户数据、表破坏下的数据恢复 27 由于OS层问题导致数据库ORA-600错误 .....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值