当前位置: 首页 > news >正文

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

一次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分区的进程:
root@mktdb1 # root@mktdb1 # 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,恢复业务
posted on 2014-11-17 16:57  木林森2014 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/yiyuf/p/4103940.html

相关文章:

  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring--JdbcTemplate
  • Swift 项目主管和大家聊了聊 Swift 5,ABI 稳定性最受关注
  • 什么是测试需求?(转)
  • JavaScript对象:我们真的需要模拟类吗?
  • 深入理解C语言
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • .NET Core跨平台微服务学习资源
  • ZOJ 3329
  • 避雷针 Lightning Conductor
  • 搭建Selenium-Grid环境
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Spring 之 第一个hellword
  • nodejs实现webservice问题总结
  • matlab2014在mac Yosemite下出现java空指针情况
  • 时间复杂度分析经典问题——最大子序列和
  • @angular/forms 源码解析之双向绑定
  • [译]前端离线指南(上)
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • ComponentOne 2017 V2版本正式发布
  • Cookie 在前端中的实践
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Fastjson的基本使用方法大全
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • react-native 安卓真机环境搭建
  • SpiderData 2019年2月16日 DApp数据排行榜
  • XForms - 更强大的Form
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 说说动画卡顿的解决方案
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #ifdef 的技巧用法
  • #每天一道面试题# 什么是MySQL的回表查询
  • #在 README.md 中生成项目目录结构
  • (27)4.8 习题课
  • (6)设计一个TimeMap
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • .NET 8.0 中有哪些新的变化?
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .net6 webapi log4net完整配置使用流程
  • .NET多线程执行函数
  • .Net各种迷惑命名解释
  • .NET基础篇——反射的奥妙
  • .net下的富文本编辑器FCKeditor的配置方法
  • .net中的Queue和Stack
  • /var/spool/postfix/maildrop 下有大量文件
  • @RequestBody的使用