`
mikixiyou
  • 浏览: 1098497 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:352987
社区版块
存档分类
最新评论

Oracle监听器crash问题

阅读更多

数据库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)

 

1. 问题

在操作系统日志文件( (/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 

 

2. 分析

因为这个错误可能是bug,所以官方对这个bug的现象列出了下列特征信息。

        nCPU的使用率直达100%

  n数据库的会话数接近于初始化参数的会话数配置

        nCPU使用率负载下监听器突然宕机生成core文件

        n监听器配置文件有这个配置,SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF


该数据库系统没有配置OSW的性能监控,只有一个CACTI的监控,看到的CPU负载情况如下所示:

 

从时间上看,在1008分时,系统的CPU使用率确实快到100%,系统负载也很高。

该信息符合bug描述的特征点。

但是,因为没有详细的vmstat的数据,所以也看不到真实的swap in swap out的大小。

3. 解决

本着解决问题的思路,我们下载补丁,安装后继续观察。增加OSW的性能监控配置,实时记录系统的性能数据,便于诊断类似问题。

0
0
分享到:
评论

相关推荐

    oracle 应急处理预案

    - **ORACLE监听程序crash模拟测试**:模拟监听器异常退出,考察系统如何响应并恢复监听服务。 - **2. ORACLE CRS故障模拟测试** - **CRSD进程crash模拟测试**:CRSD是CRS的关键组件之一,负责集群资源管理。通过...

    Unix和Linux下的Oracle数据库管

    3. **监听器(Listener)**:Oracle数据库服务通过监听器接收和转发连接请求。`lsnrctl`工具用于管理监听器,如启动、停止和查看状态。 三、性能优化 1. **性能监控**:使用`v$视图`进行实时性能监控,如`v$...

    oracle数据库中文手册汇集

    - 网络安全:理解Oracle的网络配置,如监听器、TNS连接等,以及如何加强网络安全。 7. **高可用性与容错** - RAC(Real Application Clusters):实现数据库集群,提高服务连续性和负载均衡。 - Data Guard:...

    oracle RAC 测试案例.doc

    - **ORACLE监听程序crash模拟测试**:监听程序是数据库服务对外的接口,如果崩溃,应能快速恢复或由备用监听接管,以保持服务可用。 3. **ORACLE CRS故障模拟测试** - **CRSD进程crash模拟测试**:Cluster ...

    Oracle停止和启动服务的快捷命令

    Oracle数据库服务通常由多个组件构成,包括Oracle实例(Instance)、数据库(Database)和监听程序(Listener)。实例是Oracle服务器运行的内存结构,而数据库则包含实际的数据文件。监听程序负责处理客户端连接...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    6.2.2 SCAN监听器 6.2.3 SCAN解析 6.2.4 SCAN兼容性配置 6.2.5动态注册与负载均衡 6.2.6 SCAN配置信息 6.2.7 SCAN VIP与节点VIP 6.2.8 CLUSTER_INTERCONNECTS参数 6.2.9 HAIP高可用性内联接 6.3 Service资源...

    Oracle DBA日常巡检最佳实践

    **1.8 检查Oracle监听状态** - **目的**:确保监听器正常运行且能够接收客户端连接请求。 - **方法**:使用`lsnrctl status`命令来检查监听器的状态。还可以通过`tnsping`工具测试监听器的连通性。 #### 二、检查...

    Oracle 11g RAC

    - 设置集群资源(如监听器、扫描器等)。 - 配置ASM磁盘组,为数据库实例提供存储支持。 - 调整Oracle参数以适应RAC环境。 4. **监控与管理工具**: - 使用OEM(Oracle Enterprise Manager)进行集中式管理。 ...

    安装Oracle 软件并构建数据库.docx

    **配置网络服务**: 设置监听器端口等网络参数。 8. **选择附加组件**: 如需安装其他组件,可在这一阶段进行选择。 9. **安装进度**: 查看安装进度条。 10. **安装完成**: 完成后,根据提示重启计算机(如果需要...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

Global site tag (gtag.js) - Google Analytics