背景介绍

这是一套windows的rac系统。数据库后台日志报ORA-00474:SMON process terminated with error。接着报ORA-00603,ORA-27501,ORA-27300,ORA-27301,ORA-27302等错误。

问题分析:

1.数据库alert日志

  1. Fri Feb 28 04:12:09 2014
  2. Reconfiguration started (old inc 32, new inc 34)
  3. List of nodes:
  4. Global Resource Directory frozen
  5. * dead instance detected - domain 0 invalid = TRUE
  6. Communication channels reestablished
  7. Master broadcasted resource hash value bitmaps
  8. Non-local Process blocks cleaned out
  9. Fri Feb 28 04:12:09 2014
  10. LMS 2: 0 GCS shadows cancelled, 0 closed
  11. Fri Feb 28 04:12:10 2014
  12. LMS 1: 0 GCS shadows cancelled, 0 closed
  13. Fri Feb 28 04:12:11 2014
  14. LMS 3: 0 GCS shadows cancelled, 0 closed
  15. Fri Feb 28 04:12:12 2014
  16. LMS 0: 2 GCS shadows cancelled, 2 closed
  17. Set master node info
  18. Submitted all remote-enqueue requests
  19. Dwn-cvts replayed, VALBLKs dubious
  20. All grantable enqueues granted
  21. Post SMON to start 1st pass IR
  22. Fri Feb 28 04:12:12 2014
  23. Instance recovery: looking for dead threads
  24. Fri Feb 28 04:12:12 2014
  25. LMS 3: 10102 GCS shadows traversed, 0 replayed
  26. Fri Feb 28 04:12:12 2014
  27. LMS 1: 10083 GCS shadows traversed, 0 replayed
  28. Fri Feb 28 04:12:13 2014
  29. Beginning instance recovery of 1 threads
  30. Fri Feb 28 04:12:14 2014
  31. Errors in file d:\oracle\product\10.2.0\admin\uaprac\bdump\uaprac1_smon_6456.trc:
  32. ORA-00603: ORACLE server session terminated by fatal error
  33. ORA-27501: IPC error creating a port
  34. ORA-27300: OS system dependent operation:IPC_CreateNamedSocket failed with status: 10049
  35. ORA-27301: OS failure message: The requested address is not valid in its context.
  36. ORA-27302: failure occurred at: initport_1

从数据库的alert日志,可以看到rac实例发生了重新配置(另外一个节点重启),节点1的SMON进程开始恢复事务,在恢复事务的过程中创建ipc端口失败,Oracle数据库在创建端口的这一个过程中需要调用操作系统的一些函数,在调用操作系统的函数过程中遇到错误并返回错误代码10049。我们进一步看SMON trace的日志内容。

  1. *** 2014-02-28 04:10:26.269
  2. *** SERVICE NAME:(SYS$BACKGROUND) 2014-02-28 04:10:26.238
  3. *** SESSION ID:(1091.1) 2014-02-28 04:10:26.238
  4. IPCSendMsg: could not initiate send on conn 0x1f157b40 to node [uap : 4920 : 6200 : 223515], err 10054
  5. IPCGetRequestInfo: failed a request rqh(0x13582080), type(6), status(2), bytes(0)
  6. *** 2014-02-28 04:12:12.928
  7. Start recovery for domain 0, valid = 0, flags = 0x0

IPC_CreateNamedSocket: bind failed for [10.0.0.3 : 11716], err(10049)

  1. IPCInitPort: could not create listening socket err 10049

在这个trace里面,我们能够更加清楚的看到一些信息。比如bind failed for [10.0.0.3:11716],err(10049)。这个是什么意思呢?要了解这一块需要对socket编程有一定的了解。在socket编程里面有一个非常重要的函数叫bind。在进行网络通信的时候,必须把一个套接字和一个地址相关联。这个过程就是地址绑定的过程。在许多时候内核会为我们绑定一个地址,然而有时候用户可能需要自己来完成这个绑定的过程,以满足实际的需要。下面是bind函数的定义。

  1. #include
  2. int bind(int sockfd, struct sockaddr* addr, socklen_t addrlen)

这里不一一介绍这些参数的含义,我们可以看到我们的trace中显示:bind函数在尝试绑定10.0.0.3和11716这个端口上出了问题,报了10049。那么操作系统的10049又是什么错误了。这里我们需要输入

  1. C:\>net helpmsg 10049
  2. The requested address is not valid in its context.

这里我们看到请求的地址在它的上下文中无效。所以从这个地方推测,我们请求的IP地址10.0.0.3应该发生了变化。出现这种情况一般是网卡出现了问题或者是交换机路由器出现了问题。导致IP地址失效。

2.CRS日志

  1. [ CSSD]2014-02-28 04:10:12.800 [5928] >TRACE: clssgmPeerDeactivate: node 2 (uap-sgs-db10), death 0, state 0x80000001 connstate 0xf
  2. [ CSSD]2014-02-28 04:10:12.800 [6080] >WARNING: clssnmeventhndlr: Receive failure with node 2 (uap-sgs-db10), state 3, con(00000000022453A0), probe(0000000000000000), rc=11
  3. [ CSSD]2014-02-28 04:10:12.800 [6080] >TRACE: clssnmDiscHelper: uap-sgs-db10, node(2) connection failed, con (00000000022453A0), probe(0000000000000000)
  4. [ CSSD]2014-02-28 04:10:35.801 [5940] >WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 50 1.135363e-320artbeat fatal, eviction in 29.594 seconds
  5. [ CSSD]2014-02-28 04:10:35.801 [5940] >TRACE: clssnmPollingThread: node uap-sgs-db10 (2) is impending reconfig, flag 1, misstime 30406
  6. [ CSSD]2014-02-28 04:10:35.801 [5940] >TRACE: clssnmPollingThread: diskTimeout set to (57000)ms impending reconfig status(1)
  7. [ CSSD]2014-02-28 04:10:36.801 [5940] >WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 50 1.138327e-320artbeat fatal, eviction in 28.594 seconds
  8. [ CSSD]2014-02-28 04:10:50.801 [5940] >WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 75 1.145244e-320artbeat fatal, eviction in 14.594 seconds
  9. [ CSSD]2014-02-28 04:10:51.801 [5940] >WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 75 1.146232e-320artbeat fatal, eviction in 13.594 seconds
  10. [ CSSD]2014-02-28 04:10:59.801 [5940] >WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 90 1.151173e-320artbeat fatal, eviction in 5.594 seconds
  11. [ CSSD]2014-02-28 04:11:00.801 [5940] >WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 90 1.152161e-320artbeat fatal, eviction in 4.594 seconds
  12. [ CSSD]2014-02-28 04:11:01.801 [5940] >WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 901.153149e-320artbeat fatal, eviction in3.594 seconds
  13. [ CSSD]2014-02-2804:11:02.801[5940]>WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 901.154137e-320artbeat fatal, eviction in2.594 seconds
  14. [ CSSD]2014-02-2804:11:03.801[5940]>WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 901.155125e-320artbeat fatal, eviction in1.594 seconds
  15. [ CSSD]2014-02-2804:11:04.801[5940]>WARNING: clssnmPollingThread: node uap-sgs-db10 (2) at 901.158090e-320artbeat fatal, eviction in0.594 seconds
  16. [ CSSD]2014-02-2804:11:05.411[5940]>TRACE: clssnmPollingThread:Eviction started for node uap-sgs-db10 (2), flags 0x0001, state 3, wt4c 0[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmDoSyncUpdate:Initiating sync 109[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmDoSyncUpdate: diskTimeout set to (57000)ms
  17. [ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmSetupAckWait:Ack message type (11)[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmSetupAckWait: node(1)is ALIVE
  18. [ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmSendSync: syncSeqNo(109)[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmWaitForAcks:Ack message type(11), ackCount(1)[ CSSD]2014-02-2804:11:05.411[6080]>TRACE: clssnmHandleSync: diskTimeout set to (57000)ms
  19. [ CSSD]2014-02-2804:11:05.411[6080]>TRACE: clssnmHandleSync:Acknowledging sync: src[1] srcName[uap-sgs-db09] seq[1] sync[109][ CSSD]2014-02-2804:11:05.411[5956]>USER: NMEVENT_SUSPEND [00][00][00][06][ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmWaitForAcks:done, msg type(11)[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmDoSyncUpdate:Terminating node 2, uap-sgs-db10, misstime(60015) state(5)[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmSetupAckWait:Ack message type (13)[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmSetupAckWait: node(1)is ACTIVE
  20. [ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmWaitForAcks:Ack message type(13), ackCount(1)[ CSSD]2014-02-2804:11:05.411[6080]>TRACE: clssnmSendVoteInfo: node(1) syncSeqNo(109)[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmWaitForAcks:done, msg type(13)[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmCheckDskInfo:Checking disk info...[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmCheckDskInfo: node 2, uap-sgs-db10, state 5with leader 2 has smaller cluster size 1;my cluster size 1with leader 1[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmEvict:Start[ CSSD]2014-02-2804:11:05.411[5920]>TRACE: clssnmEvict:Evicting node 2, uap-sgs-db10, birth 96, death 109, impendingrcfg 1, stateflags 0x1

从CRS日志上我们可以看到,这里发生了节点驱逐的现象。因为节点1发现节点2无法通信,此时节点2也发现无法与节点1通信,最终整个实例决定剔除节点2。这里我们可以看到我们的网络心跳的misscount时间是60秒。在50%左右的时候开始出现提示。CRS软件进一步确认是操作系统网络层面出现了问题。

3.操作系统日志

  1. -2-28 4:10:12 Tcpip 信息 4202 N/A UAP-SGS-DB09
  2. 系统检测到网卡 Broadcom BCM5709C NetXtreme II GigE (NDIS VBD Client) #2 与网络断开, 而且网卡的网络配置已经释放。如果网卡没有断开,这可能意味着它出现故障。请与您的供应商联系以获得更新的驱动程序。
  3. -2-28 4:10:06 l2nd 警告 4 N/A UAP-SGS-DB09
  4. Broadcom BCM5709C: The network link is down. Check to make sure the network cable is properly connected.

最终我们发现在操作系统上4:10:06秒的时候网卡出现了down的情况。而我们的CRS是在4:10:36秒的时候出现50%的心跳告警。而最终在4:11:05秒,也就是达到misscount设置的60秒的时候剔除了节点2。

结论

整个过程我们已经分析完毕,正常情况下,网卡down掉直接剔除一个节点就行了,而在这儿最大的问题是IP地址瞬间丢失,虽然导致节点2顺利剔除,但是节点1的SMON进程在进行恢复的过程中,仍然调用了socket编程中的bind函数,该函数需要对IP地址、端口进行重新绑定,在这个绑定的过程中,如果这个IP和前面的IP是不一样的(比如禁用网卡,IP地址从10.0.0.3会变成0.0.0.0)。最终会导致bind失败,bind失败导致smon恢复事务失败,最终导致节点1也宕机。所以这个案例告诉我们,心跳网卡最好做多方面的冗余措施,才能避免这种问题的发生。

转://ORA-00603,ORA-27501,ORA-27300,ORA-27301,ORA-27302故障案例一则的更多相关文章

  1. Oracle的tnsnames.ora配置(PLSQL Developer)

    首先打开tnsnames.ora的存放目录,一般为D:\app\Administrator\product\11.2.0\client_1\network\admin,就看安装具体位置了. 步骤阅读 ...

  2. PRCR-1065 Failed to stop resource ora.asm 处理

    在网上看到的一些关闭Oracle Grid Infrastructure教程中,很多在关闭数据后就开始关闭ASM,结果提示如下的错误. [grid@rhvm1 ~]$ srvctl stop asm ...

  3. TNSNAMES.ORA 配置

    上面的sqlnet.ora文件说明:SQLNET.AUTHENTICATION_SERVICES= (NTS)——这个表示采用os认证,在数据库服务器上,可以利用sqlplus “/ as sysdb ...

  4. ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

    不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数 ...

  5. Oracle Net Listener Parameters (listener.ora)(转)

    12/20 7 Oracle Net Listener Parameters (listener.ora) This chapter provides a complete listing of th ...

  6. Failed to register Grid Infrastructure type ora.mdns.type

    安装11g的集群软件的时候,在最后运行root.sh脚本时候,没有执行成功,最后提示如下错误: [root@r2 ~]# /u01/app/11.2.0/grid_1/root.sh Performi ...

  7. Oracle Ora 错误解决方案合集

    注:本文来源于 < Oracle学习笔记 --- Oracle ORA错误解决方案 > ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发 ...

  8. [20170914]tnsnames.ora的管理.txt

    [20170914]tnsnames.ora的管理.txt --//昨天朋友讲tnsnams.ora的内容太长了,而且许多不需要的.管理不方便.我记得以前写[20150409]tnsnames.ora ...

  9. 转载《Oracle的tnsnames.ora配置(PLSQL Developer)》

    源地址:https://www.cnblogs.com/qq3245792286/p/6212617.html. 首先打开tnsnames.ora的存放目录,一般为D:\app\Administrat ...

  10. Oracle 错误总结及问题解决 ORA

    参考地址 ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常.ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数O ...

随机推荐

  1. JAVA内存分配与回收策略

    对象的内存分配,大方向上讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配.少数情况下也可能会直接分配在老年代中,分配规则并不是百分百固定 ...

  2. 阿里云Ubuntu安装图形界面与中文语言包

    图形界面: http://blog.csdn.net/qq_37608398/article/details/78155568?locationNum=9&fps=1 安装中文: http:/ ...

  3. SVN就是这么简单

    什么是SVN SVN全称:Subversion,是一个开放源代码的版本控制系统 Svn是一种集中式文件版本管理系统.集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码, ...

  4. 深度学习入门实战(一):像Prisma一样算法生成梵高风格画像

    本文由云+社区发表 作者:董超 导语:现在人工智能是个大热点,而人工智能离不开机器学习,机器学习中深度学习又是比较热门的方向,本系列文章就从实战出发,介绍下如何使用MXnet进行深度学习~ 既然是实战 ...

  5. springmvc 项目完整示例03 小结

    利用spring 创建一个web项目 大致原理 利用spring的ioc 原理,例子中也就是体现在了配置文件中 设置了自动扫描注解 配置了数据库信息等 一般一个项目,主要有domain,dao,ser ...

  6. 第15章 使用EntityFramework Core进行配置和操作数据 - Identity Server 4 中文文档(v1.0.0)

    IdentityServer旨在实现可扩展性,其中一个可扩展点是用于IdentityServer所需数据的存储机制.本快速入门展示了如何配置IdentityServer以使用EntityFramewo ...

  7. C# Redis 过期机制不生效问题

    引用: https://ask.csdn.net/questions/358802 根据这里的代码写出监听事件后,事件并没有生效 在比对了多次配置文件后,终于发现了一点蹊跷,在配置中不能有与之相冲的配 ...

  8. C# ListBox实现显示插入最新的数据的方法

    在我们使用ListBox控件时,如果我们在里面不断的添加一条条数据,但是在我们添加的数据过多超过了ListBox显示的窗口时(此时会产生滑动条), 发现我们无法看到最新添加的数据.实现倒序显示此处有两 ...

  9. 【转】Js正则表达式

    //校验是否全由数字组成 var patrn=/^[0-9]{1,20}$/ //校验登录名:只能输入5-20个以字母开头.可带数字.“_”.“.”的字串 var patrn=/^[a-zA-Z]{1 ...

  10. Selenium自动化 Xpath-元素定位

    最近在教妹子做自动化测试,妹子基础差,于是想到很多初学自动化的朋友们学习的知识没有规范化,信息太过杂乱.所以,本文整理了一些自动化元素定位方式: 这次将讲Xpath定位! 什么是Xpath: Path ...