一次goldengate故障引发的操作系统hang起,HA自动切换

现场:

跑着数据库的主机A报警应用连接不上数据库,我们无法ssh到主机。第一反应是通过telnet到远程控制口,发现数据库资源和硬件资源在被切换到HA架构的主机B(备机,通常性能比主机A的差,抗不住应用)。此时HA已经把数据库切到了备机上,勉强抗着应用。

分析:

一、查看故障机(主机A)的操作系统日志和oracle alert日志有大量的如下报错:

OS:

Mar 17 14:20:00 mktdb1 genunix: [ID 470503 kern.warning] WARNING: Sorry, no swap space to grow stack for pid 21868 (oracle)

Mar 17 14:20:13 mktdb1 Cluster.PMF.pmfd: [ID 972610 daemon.error] fork: Not enough space

Mar 17 14:20:13 mktdb1 Cluster.PMF.pmfd: [ID 837760 daemon.error] monitored processes forked failed (errno=12)

Mar 17 14:20:13 mktdb1 last message repeated 3 times

Mar 17 14:20:13 mktdb1 Cluster.PMF.pmfd: [ID 972610 daemon.error] fork: Not enough space

Mar 17 14:20:13 mktdb1 Cluster.PMF.pmfd: [ID 837760 daemon.error] monitored processes forked failed (errno=12)

Mar 17 14:20:13 mktdb1 last message repeated 3 times

Mar 17 14:20:13 mktdb1 Cluster.PMF.pmfd: [ID 972610 daemon.error] fork: Not enough space

Mar 17 14:20:13 mktdb1 Cluster.PMF.pmfd: [ID 837760 daemon.error] monitored processes forked failed (errno=12)

Mar 17 14:20:13 mktdb1 last message repeated 3 times

Mar 17 14:20:13 mktdb1 Cluster.PMF.pmfd: [ID 972610 daemon.error] fork: Not enough space

DB alert_log:

Errors in file /oracle/admin/mktdb/bdump/mktdb_psp0_15535.trc:
ORA-27300: OS system dependent operation:fork failed with status: 12
ORA-27301: OS failure message: Not enough space
ORA-27302: failure occurred at: skgpspawn3

至此,断定是由于交换空间被耗尽而导致的系统挂起,HA自动切换。但是具体是什么原因导致swap耗尽,或者说具体什么进程消耗了大量的swap,swap相关参阅:

点击打开链接 (http://blog.csdn.net/yiyuf/article/details/21458957)

二、继续查找大量消耗swap分区的进程:

[email protected] # [email protected] # prstat 
Please wait...
 PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 22879 oracle     11G  273M cpu8     0    0   0:13:47 3.6% extract/6
 18091 oracle     48G   48G sleep   59    0   0:10:05 1.6% oracle/1
 26397 oracle     48G   48G cpu529  59    0   0:00:05 1.0% oracle/1
 25929 oracle     48G   48G sleep   51    0   0:00:27 0.7% oracle/11
 21656 oracle     48G   48G sleep   40    0   0:00:31 0.7% oracle/11
 19298 oracle     48G   48G cpu528  59    0   0:01:19 0.6% oracle/11
 21610 oracle     48G   48G sleep   59    0   0:00:29 0.6% oracle/11
 23695 oracle     48G   48G sleep   22    0   0:00:27 0.6% oracle/11
 19583 oracle     48G   48G cpu512  11    0   0:01:29 0.6% oracle/11
 18770 oracle     48G   48G sleep   31    0   0:01:56 0.6% oracle/11
 21688 oracle     48G   48G sleep   22    0   0:00:42 0.6% oracle/11

prstat命令解释参见:点击打开链接 (http://blog.csdn.net/yiyuf/article/details/21470073)

从上面prstat结果可以看出,22879进程确实使用了大量的swap分区,用ps -ef |grep 22879看具体是什么进程:

oracle 22879 19596  4 16:02:45 ?       22:53 /oracle/oradata/u2/gg/extract PARAMFILE /oracle/oradata/u2/gg/dirprm/extcf.prm

到此就很明确了。查看ogg状态,一直卡在一个某个大事物上,而分析读取队列(或归档日志)时需要(消耗)了大量的内存。

既然排查不是主机A的硬件问题,立即把库切回主机A,恢复业务

时间: 2024-10-09 17:55:00

一次goldengate故障引发的操作系统hang起,HA自动切换的相关文章

记一次因网卡心跳故障引发RAC节点重启故障分析

数据库与CRS版本:10.2.0.4 down机过程分析 序号 节点 时间 动作 日志源 1 二 Jul 4 22:48:15 XXdb2 kernel: NETDEV WATCHDOG: eth1: transmit timed out bnx2: fw sync timeout, reset code = 1020015 OS 2 二 Jul 4 22:48:29 -- Jul 4 22:49 CRS-1612:node XXdb1 (1) at 50% heartbeat fatal, e

Redis主从、sentinel故障自动切换

一.什么是redis主从复制? 主从复制,当用户往Master端写入数据时,通过Redis Sync机制将数据文件发送至Slave,Slave也会执行相同的操作确保数据一致:且实现Redis的主从复制非常简单. 二.redis主从复制特点 1.同一个Master可以拥有多个Slaves. 2.Master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即Master->Slave->Slave模式: 3.Master以非阻塞的方式同步数据至slave,这将

mongodb----副本集搭建及故障自动切换

mongodb副本集搭建 mongodb单台服务器 数据会有丢失的风险 单台服务器无法做高可用 mongodb副本集能够预防数据丢失,多台mongodb数据一致. mongodb副本集能够在有问题的时候自动切换. 每台服务器的内核设置必须一样,不然可能会报错. mongodb配置 systemLog:  destination: file #日志路径  logAppend: true #每次启动用追加的模式生成日志  path: /data/mongodb/27017/mongodb.logst

一则因为numa引发的mysqldump hang住

新买的dell r430服务器,双CPU,64G内存,单CPU32g,swap 3G 出现故障现像:mysqldump时会hang住,innodb_buffer_pool_size        = 35G,数据量有187G 试验各种方法,最后发现关闭numa可正常导出 vi /etc/grub.conf ... numa=off 分析原因:单CPU只有32G,加交换3G=35G,需要分配的内存多于此数导致分配时hang住

一次DNS 故障引发的linux telnet 各端口缓慢的问题解决过程

昨天部署好了lvs+keepalived 并通过测试,  没有发现问题.今天上午忽然发现, 用ipvsadm –l  查看lvs信息,响应很慢,  然后去从LVS  telnet 节点的22号端口, 发现特别慢. 开始我检查了一下keepalived.conf配置文件, 以为是同网段内多个lvs 设置,造成多播冲突,阻塞网络.  后来停止了lvs后故障依旧.  突然想到使用strace来分析, 一下找到了原因. telnet 命令 调用了如下共享对象库及文件, 说明telnet 先做权限和安全检

[计算机故障]excel无法存盘,总是自动重启恢复

同事的excel文档,无法保存.总是提示什么要发送错误报告.错误报告中的错误信息包含event type:BXE.这个文件大小约1M多.工作簿中包含表大约有30张,表名称为中文.我去看了看,其他电子表格文件都正常.打开这个表格总是提示"此工作簿包含到其他数据源的链接",问是否更新.解决步骤如下(包含尝试的步骤):步骤1:先是把计算机虚拟内存调大了,还是不行.步骤2:把文件拷贝到其他电脑,结果运行正常.但是一拿回原来电脑还是打不开.步骤3:将工作重点放在电子表格本身.查找"[&

SharePoint 高可用和备份恢复方案(一, 系统层面的要求与介绍)

 SharePoint 高可用和备份恢复方案(一 SharePoint 层面) 高可用性(High Availability),是指在服务器出现硬件或者网络故障的时候,尽可能不会中断服务,并尽可能减少对用户的影响. SharePoint服务器场本身是一个典型的三层架构(从2007.到2010.2013再到2016,这个基本的架构都是一样的),也就是前端服务器 - 应用服务器 - 数据库服务器.当然随着系统优化和对高可用要求提升,高可用和恢复技术也有所提高. 也许大家都很清楚SharePoin

如何搭建千万级别用户的应用系统

基本情况 l AWS覆盖全世界12个国家区域 1. 每个区域都对应着世界上的一个物理位置,每个位置都有弹性计算云提供多个可用区域(Availability Zones),这些区域包含北美.南美.欧洲.中东.非洲.亚太等地区. 2. 每个可用区域(AZ)实质上是单个数据中心,尽管它可由多个数据中心构造. 3. 每个可用区域都拥有很强的隔离性,他们各自拥有独立的电源和网络. 4. 可用区域之间只能通过低延迟网络互相连接,它们可以相距5或15英里,但网络的速度相当快以至于你的应用程序像在同一个数据中心

Keeplived配置Nginx双机高可用

一.简介不管是Keepalived还是Heartbeat做高可用,其高可用,都是站在服务器脚本去说的高可用,而不是服务的角度.也就是说,如果服务器DOWN机或者网络出现故障,高可用是可以实现自动切换的.如果运行的服务,比如Nginx挂掉这些高可用软件是意识不到的,需要自己写脚本去实现服务的切换. 二.安装配置Keepalived # ./configure # make# make install # cp /usr/local/etc/rc.d/init.d/keepalived /etc/r