数据库Oracle
10.2.0.4 for linux x86 64bit,正常运行430天。在今天早上10点钟,Oracle监听器进程突然宕机。
在操作系统的message中显示错误信息为”tnslsnr segfault error
4”,监听器日志文件因为体积达到4GB,没有记录下这次出错日志。
根据错误关键字“tnslsnr segfault error 4”,搜索发现该问题是在负载比较大时,物理内存不足出现页面换入换出触发了bug 6139856 ,从而导致了监听器进程宕机。
说明一点,监听器进程宕机,不会影响已有的连接,只是新建连接不可以了。对于使用连接池的WEB应用影响不大。只要监控机制及时发现该问题,及时重启监听器,就不会带来多大危害。如果内存页面换入换出频繁发生,则需要想办法解决这个问题。
Oracle提供了三种解决方法。第一个方法是增加服务器的物理内存;第二个方法是下载补丁包修复该bug;第三个方式是采用hugepage内存管理机制,替代目前的内存管理机制。
我们去metalink上下载补丁包”p6139856_10204_Linux-x86-64.zip”,安装一下即可。
(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1596293)
在操作系统日志文件( (/var/log/messages)中错误提示如下:
Jul 17 10:08:44 db200 kernel:tnslsnr[29794]: segfault at 0000000000000018 rip 0000003eab66854d rsp 0000007fbfff9230 error 4
在listener.log中没有记录了,因为该日志文件大小已经4GB,不再有新日志记录进来。
在网上查到的类似日志是这样:
19-NOV-2007
13:40:49 *
(CONNECT_DATA=(SID=ORAC)(CID=(PROGRAM=C:\pegasos\te\usys\bin\uniface.exe)(HOST=TERVI-NB179)(USER=kjokioja)))
* (ADDRESS= (PROTOCOL=tcp)(HOST=10.12.152.5)(PORT=1670)) * establish * ORAC *
12518
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
19-NOV-2007 13:40:49 *
(CONNECT_DATA=(SID=ORAC)(CID=(PROGRAM=C:\pegaos\te\usys\bin\uniface.exe)(HOST=TERVI-0184A)(USER=paitasal)))
* (ADDRESS=(PROTO COL=tcp)(HOST=10.12.176.136)(PORT=1574)) * establish * ORAC *
12518
TNS-12518: TNS:listener could not hand off client connection
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 32: Broken pipe
因为这个错误可能是bug,所以官方对这个bug的现象列出了下列特征信息。
nCPU的使用率直达100%
n数据库的会话数接近于初始化参数的会话数配置
n高CPU使用率负载下监听器突然宕机生成core文件
n监听器配置文件有这个配置,SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
该数据库系统没有配置OSW的性能监控,只有一个CACTI的监控,看到的CPU负载情况如下所示:
从时间上看,在10点08分时,系统的CPU使用率确实快到100%,系统负载也很高。
该信息符合bug描述的特征点。
但是,因为没有详细的vmstat的数据,所以也看不到真实的swap in 和swap out的大小。
本着解决问题的思路,我们下载补丁,安装后继续观察。增加OSW的性能监控配置,实时记录系统的性能数据,便于诊断类似问题。
分享到:
相关推荐
配置Oracle监听器 配置Oracle监听器
本文介绍了配置Oracle监听器的方法。
tnsnames,呵呵,办公室网速不是很好,只能先上传比较小一点的文件来赚取积分了
深入全面的讲解了ORACLE监听器的工作原理和工作过程、 如何配置以及经常出现的问题和解决方法。
Oracle 监听器 Listener资料.docx
oracle监听程序安装 实用简单
浅析Oracle监听器安装与配置.pdf
oracle监听服务无法启动问题解决,ORA-12541解决办法
Oracle监听器维护管理v1.1 1 一、监听器工作原理 3 二、监听器Lisener功能 4 1、 监听客户端请求 4 2、 为客户端请求分配Server Process 4 3、 注册实例服务 4 4、 错误转移failover 4 5、 负载均衡衡量 4 三、监听...
Oracle监听器中的XDB、_XPT、_DGMGRL 、_DGB、PLSExtProc服务_ITPUB博客.mhtml
说说Oracle监听器(二).doc 本系列的两篇文章之一,网上找的,共享下,如果侵犯了您的版权,请告诉我,我会删除掉~~
解决oracle监听器不能识别描述符
快速关闭oracle和监听器,节约资源!
Oracle监听器服务不能启动的问题.docx
针对Oracle监听器的DoS防范.pdf
在linux下重启oracle数据库及监听器
监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。