Oracle常见故障——Listener类:Hang、Crash及连接风暴的判断


 
 

目录

 

  • 监听状态正常,应用反馈时断时连
  • Listener进程crash
  • ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
  • 11G SCAN LISTENER无法注册服务故障
  • Listener hang
  • TNS-12535 TNS-00505处理
  • 应用测试连接不上数据库,连接直接报TNS-12547: TNS:lost contact处理

由Oracle的Listener引起的报错很多,很大一部分是由于配置不当导致的。通常,我们要么从tnsnames.ora找原因,要么从lisntener.ora找原因。基本上,我们从Oracle连接的时候报出的错误代码可以快速查到原因。

 

下面介绍的几类故障及处理方法,难度稍微要大一些

 

1监听状态正常,应用反馈时断时连

 
 

故障现象:

 

客户端新发起的短连接时断时连,如下所示:


 

故障原因:

 

因短连接持续性发起连接耗尽监听ip 1521端口资源,导致监听无法正常处理连接请求。

 

超过每秒50次连接则需要关注,可通过tail -20f listener.log 观察,如持续性快速刷屏则可能已经出现连接风暴.

 


 

故障解决/日志分析:

 


 

 

2Listener进程crash

 
 

 

故障环境:

 

操作系统为:SunOS 5.10

 

数据库版本:Oracle 10.2.0.4

 

 

故障现象:

 

Listener进程已经crash, 查看主机数据库监听日志listener_ngsetdb3/4.log如下:


 

系统日志:

 


 

 

故障分析:

 

Listener进程crash是由于IPMP出现故障所致,Listener随后在探测不到服务节点时,直接crash。Oracle MOS文章Solaris Cluster 3.x: IPMP group failure impact [ID 1006916.1]对此有详细描述:在Sun Cluster中,短暂的网络故障会导致IPMP组失败,并触发资源组切换。并且,它会在38秒后回切!

 

 

处理方法:

 

查看监听日志listener.log跟系统日志(/var/adm/ messages)。

手动重启两个节点的Listener,Oracle提供了一个解决方案:修改/etc/default/mpathd文件下的IPMP FAILURE_DETECTION_TIME变量值,即将失败检测时间从默认的10秒(10000)增加到20秒(20000)以上

 

注:修改该参数需要重启mpathd服务。

 

 

3ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务

 

 

故障现象:

客户端无法通过监听连接数据库

 

故障原因:

1.实例未注册到listener中,可通过lsnrctl status 查看

2.oracle process达到上限无法建立新的连接。

 

故障解决:

  1. 手工注册数据库,alter system register;
  2. 检查数据库用户连接分布情况,并show process 查看连接限制

Select username,count(1) from v$session group by username order by 2 asc;

 

 Ps :大部分情况由开发商程序bug引起。

 

 

411G SCAN LISTENER无法注册服务故障

 

 

故障现象:

scan listener 无法注册service服务

 

故障原因:

bug 13066936

 

故障解决:

 

 

5Listener hang

 

 

故障环境:

任意环境

 

故障现象:

从其他应用主机tnsping发现延迟很大

查看监听状态报如下错:

 

listener.log有如下报错:

 

故障分析:

 

Too many open files意味着Maximum Number Of Open Files Per Process 达到了上限。因此listener hang住的原因是该limit设置过小。

 

处理方法:

 

将oracle用户的soft limit提升为至少1024,然后重新oracle用户登录,检验ulimit合格后,重新启动数据库和监听。

 

具体解决办法如下:

  1. 在/etc/system增加以下行

    set rlim_fd_max=65536

    set rlim_fd_cur=4096

  2. 重新登录ORACLE并检验oracle用户的限制

    su – oracle

    ulimit -Ha

    ulimit –Sa

  3. 重新启动数据库和监听

 

 

6TNS-12535 TNS-00505处理

 

 

故障环境:

任意环境

 

故障现象:

Db alert日志报如下错误:


 

 

故障分析:

 

一个客户端连接整个步骤:

  1. 客户端发起一个connection连接监听
  2. 监听启动一个专属进程(服务器进程,也就是我们通常说的LOCA=NO进程)用于接收这个connection
  3. 在专属进程启动之后,监听会将这个connection传递给这个专属进程
  4. 专属进程通过这个connection来跟客户端握手
  5. 专属进程跟客户端信息交换需要建立一个session
  6. session打开

 

当在以上的第3步到第4步时客户端关闭,所以当专属进程尝试跟客户端联系时发现连接已关闭时,就会报出我们看到的错误!!

 

错误一般是由于程序异常断开导致超时,11g R1如果出现如上的错误信息会写入到sqlnet.log,11g R2会写入到alert.log,

 

其实出现此错误是正常的现象。

 

 

处理方法:

 

如果不想这样的信息打印在alert日志中,

在sqlnet.ora设置

DIAG_ADR_ENABLED = OFF

在listener.ora设置

DIAG_ADR_ENABLED_ = OFF

 

重启监听

 

 

7应用测试连接不上数据库,连接直接报TNS-12547: TNS:lost contact处理

 

 

故障环境:

环境:HP-UX 11.31 ia64

数据库版本:11.2.0.4

 

 

故障现象:

 

应用测试连接不上数据库,连接直接报TNS-12547: TNS:lost contact。

 

但查看监听状态,CRS状态,数据库状态均正常。CRS日志、CSS日志及AGENT日志均无报错。

 

 

故障分析:

 

  1. 应用连接数据库直接报TNS-12547: TNS:lost contact
  2. 监听日志发现一直在报连接失败:

     

 

问题导致的原因有在32位平台中当listener.log超过2G会报这个错。

 

ORACLE_HOME下的一些执行文件权限不对也会导致相同的错误,但我们这个是64位的,排除第一种,

 

所以去查询执行文件的权限是否正常。

 

 

处理方法:

 

1、 通过对比发现部分执行文件少了S权限,做了relink all,重新同步执行文件

2、 由于数据库使用的是ASM,磁盘属组为asmadmin,故对比问题节点及正常节点DB ORACLE_HOME下属组为asmadmin的文件,将问题节点文件权限修正即可解决问题。

时间: 2024-07-31 22:31:30

Oracle常见故障——Listener类:Hang、Crash及连接风暴的判断的相关文章

-- Oracle 常见故障及日常规划----

--============================= -- Oracle 常见故障及日常规划 --=============================       对任何数据库系统而言,对显而易见的故障,应当避免发生本文列出了Oracle常见的故障并给出了解决方案,同时列出了一些日常规划.     一.数据库高可用性的几个目标         MTBF(Mean-Time-Between-Failures)             平均失败时间,即数据库出现失败的频繁度,应尽可能

启动Oracle常见疑难问题分析

oracle|问题 启动Oracle常见疑难问题分析 (2003-10-1)  本文出自<网管员世界>2003年第10期"故障诊断"栏目 实例和数据库的启动与关闭是DBA的重要职责之一.只有打开数据库,其他用户才能对数据库中的数据进行操作.一旦数据库关闭,便不能对其操作.对于DBA们来说,关闭和重新启动数据库以便优化.调整应用程序的运行是经常碰到的事情.如果用户已经进入了数据库,使用SHUTDOWN IMMEDIATE 或SHUTDOWN ABORT命令来执行关闭数据库,则

Linux/Unix shell 监控Oracle监听器(monitor listener)

    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linux 下使用 shell 脚本来监控 Oracle 监听器.     Linux Shell的相关参考:        Linux/Unix shell 脚本中调用SQL,RMAN脚本        Linux/Unix shell sql 之间传递变量        Linux/Unix s

Oracle基础知识-启动Oracle常见疑难问题分析

实例和数据库的启动与关闭是DBA的重要职责之一.只有打开数据库,其他用户才能对数据库中的数据进行操作.一旦数据库关闭,便不能对其操作.对于DBA们来说,关闭和重新启动数据库以便优化.调整应用程序的运行是经常碰到的事情.如果用户已经进入了数据库,使用SHUTDOWN IMMEDIATE 或SHUTDOWN ABORT命令来执行关闭数据库,则用户将失去连接,直到数据库重新启动.经常关闭和启动会对数据库性能造成一定的影响,当然也会影响到用户对数据库的使用.本文从管理数据库的角度来分析在Oracle启动

宽带路由器常见故障巧排除

宽带路由器常见故障巧排除在SOHO和中小型企业用户中,宽带路由器应用非常普遍.对于一些网络新手来说,出现一些说明手册未涉及的故障,有时难以应付.下面,笔者就一些常见的故障和问题进行分析,并提供解决方法. 一. 线路不通,无法建立连接 1. 用网线将路由器的WAN口与ADSL Modem相连,电话线连ADSL Modem的"Line"口.ADSL Modem与宽带路由器之间的连接应当使用直通线. 2. 检查路由器LAN中的Link灯信号是否显示,路由器至局域网是否正常联机.路由器的LAN

Oracle 常见错误代码的分析与解决

在使用Oracle的过程中,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法.毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免.写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步. 错误1: ORA-01650:unable to extend rollb

ORACLE常见错误代码的分析与解决(二)

oracle|错误|解决 ORACLE常见错误代码的分析与解决(二)   文章源自于  世纪易网   ORA-01578:Oracle data block corrupted(file # num,block # num)   产生原因:当ORACLE访问一个数据块时,由于1.硬件的I/O错误:2.操作系统的I/O错误或缓冲问题:3.内存或paging问 题:4.ORACLE试图访问一个未被格式化的系统块失败:5.数据文件部分溢出等上述几种情况的一种引起了逻辑坏块或者 物理坏块,这时就会报OR

七大案例解CPU常见故障

电脑用久了,难免会出现这样那样的故障.在众多电脑故障中,板卡类出现机率最大.CPU虽然是电脑中重要的配件,但出现故障的机率相当少,常见的CPU故障大致有以下几种:散热故障.重启故障.黑屏故障及超频故障.由于CPU本身出现故障的几率非常小,所以大部分故障都是因为用户粗心大意造成的. 案件一:CPU损坏导致电脑不断地重启 故障现象:朋友一台组装机,最近出现不断重启,其表现为有时刚刚出现启动画面即重启,或者进入系统后不久就重启. 分析解决:因为本机已通过ADSL连入宽带网,而且近期网上病毒肆虐,所以先

Windows 7系统三则常见故障排除技巧

Windows 7与之前的WinXP一样,安装了应用软件之后常会出现一些稀奇古怪的问题,下面列出Win7使用过程中三个常见故障及其解决办法,希望能帮助大家用好Win7! 一.按Win键+E打不开资源管理器 如果你在Win7中安装了某些优化类软件(例如不支持Win7的优化软件),一些古怪的问题就会发生,常见的故障有按下Win键+E却无法打不开资源管理器. [故障原因]:这是因为优化软件修改了Win7注册表中一些重要的项目,导致Win7调用该项目时数据异常而出错,因此在安装软件之前,你一定要先检查该