炼数成金 门户 大数据 Oracle 查看内容

Oracle RAC故障分析与处理

2013-7-31 10:50| 发布者: 天空之城| 查看: 24766| 评论: 0|原作者: leonarding|来自: leonarding技术博客

摘要: RAC,全称real application clusters,译为“实时应用集群”, 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。

网络 SQL Oracle Linux RAC

 RAC环境

RAC架构,2节点信息

节点1

SQL> show parameter instance

NAME                                 TYPE        VALUE

------------------------------------ ----------- -----------------------------------------------

active_instance_count                    integer

cluster_database_instances                integer     2

instance_groups                         string

instance_name                          string      RACDB1

instance_number                        Integer     1

instance_type                           string      RDBMS

open_links_per_instance                  integer     4

parallel_instance_group                   string

parallel_server_instances                  integer     2

节点2

SQL> show parameter instance

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------------------

active_instance_count                    integer

cluster_database_instances                integer     2

instance_groups                         string

instance_name                          string      RACDB2

instance_number                        integer     2

instance_type                           string      RDBMS

open_links_per_instance                  integer     4

parallel_instance_group                   string

parallel_server_instances                  integer     2

数据库版本

SQL> select * from v$version;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE    10.2.0.1.0      Production

TNS for Linux: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

操作系统信息

节点1

[oracle@rac1 ~]$ uname -a

Linux rac1 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 i686 i386 GNU/Linux

节点2

[oracle@rac2 ~]$ uname -a

Linux rac2 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 i686 i386 GNU/Linux

RAC所有资源信息

[oracle@rac2 ~]$ crs_stat -t

Name           Type            Target     State      Host        

----------------------------------------------------------------------------------------------

ora....B1.inst    application        ONLINE    ONLINE    rac1        

ora....B2.inst    application        ONLINE    ONLINE    rac2        

ora....DB1.srv   application        ONLINE    ONLINE    rac2        

ora.....TAF.cs    application        ONLINE    ONLINE    rac2        

ora.RACDB.db  application         ONLINE    ONLINE    rac2        

ora....SM1.asm  application        ONLINE    ONLINE    rac1        

ora....C1.lsnr    application        ONLINE    ONLINE    rac1        

ora.rac1.gsd    application        ONLINE    ONLINE    rac1        

ora.rac1.ons    application        ONLINE    ONLINE    rac1        

ora.rac1.vip    application        ONLINE    ONLINE    rac1        

ora....SM2.asm  application        ONLINE    ONLINE    rac2        

ora....C2.lsnr    application       ONLINE    ONLINE    rac2        

ora.rac2.gsd    application        ONLINE    ONLINE     rac2        

ora.rac2.ons    application        ONLINE    ONLINE     rac2        

ora.rac2.vip    application         ONLINE    ONLINE     rac2


 模拟两个节点内联网不通,观察RAC会出现什么现象?给出故障定位的整个过程

本小题会模拟RAC的私有网络不通现象,然后定位故障原因,最后排除故障。

1.首先RAC是一个非常健康的状态

[oracle@rac2 ~]$ crs_stat -t

Name           Type            Target     State      Host        

----------------------------------------------------------------------------------------------

ora....B1.inst    application        ONLINE    ONLINE    rac1        

ora....B2.inst    application        ONLINE    ONLINE    rac2        

ora....DB1.srv   application        ONLINE    ONLINE    rac2        

ora.....TAF.cs    application        ONLINE    ONLINE    rac2        

ora.RACDB.db  application         ONLINE    ONLINE    rac2        

ora....SM1.asm  application        ONLINE    ONLINE    rac1        

ora....C1.lsnr    application        ONLINE    ONLINE    rac1        

ora.rac1.gsd    application        ONLINE    ONLINE    rac1        

ora.rac1.ons    application        ONLINE    ONLINE    rac1        

ora.rac1.vip    application        ONLINE    ONLINE    rac1        

ora....SM2.asm  application        ONLINE    ONLINE    rac2        

ora....C2.lsnr    application       ONLINE    ONLINE    rac2        

ora.rac2.gsd    application        ONLINE    ONLINE     rac2        

ora.rac2.ons    application        ONLINE    ONLINE     rac2        

ora.rac2.vip    application         ONLINE    ONLINE     rac2  

检查CRS进程状态(CRS  CSS  EVM

[oracle@rac2 ~]$ crsctl check crs

CSS appears healthy

CRS appears healthy

EVM appears healthy

检查OCR磁盘状态,没有问题

[oracle@rac2 ~]$ ocrcheck

Status of Oracle Cluster Registry is as follows :

         Version                  :          2

         Total space (kbytes)     :     104344

         Used space (kbytes)      :       4344

         Available space (kbytes) :     100000

         ID                       : 1752469369

         Device/File Name         : /dev/raw/raw1

                                    Device/File integrity check succeeded

                                    Device/File not configured

         Cluster registry integrity check succeeded

检查vote disk状态

[oracle@rac2 ~]$ crsctl query css votedisk

0.     0    /dev/raw/raw2                      显示2号裸设备为表决磁盘

located 1 votedisk(s).                              只定位1个表决磁盘

2.手工禁用一个私有网卡

[oracle@rac2 ~]$ cat /etc/hosts

127.0.0.1       localhost.localdomain   localhost

::1     localhost6.localdomain6 localhost6

##Public Network - (eth0)

##Private Interconnect - (eth1)

##Public Virtual IP (VIP) addresses - (eth0)

192.168.1.101   rac1                        这是RAC的共有网卡

192.168.1.102   rac2

192.168.2.101   rac1-priv                    这是RAC的私有网卡

192.168.2.102   rac2-priv

192.168.1.201   rac1-vip                     这是RAC虚拟网卡

192.168.1.202   rac2-vip

看一下IP地址和网卡的对应关系

[oracle@rac2 ~]$ ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:8F:F1:87  

          inet addr:192.168.1.102  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe8f:f187/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:360 errors:0 dropped:0 overruns:0 frame.:0

          TX packets:593 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:46046 (44.9 KiB)  TX bytes:62812 (61.3 KiB)

          Interrupt:185 Base address:0x14a4

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:8F:F1:87  

          inet addr:192.168.1.202  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          Interrupt:185 Base address:0x14a4

eth1      Link encap:Ethernet  HWaddr 00:0C:29:8F:F1:91  

          inet addr:192.168.2.102  Bcast:192.168.2.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe8f:f191/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:76588 errors:0 dropped:0 overruns:0 frame.:0

          TX packets:58002 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:65185420 (62.1 MiB)  TX bytes:37988820 (36.2 MiB)

          Interrupt:193 Base address:0x1824

eth2      Link encap:Ethernet  HWaddr 00:0C:29:8F:F1:9B  

          inet addr:192.168.203.129  Bcast:192.168.203.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe8f:f19b/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:339 errors:0 dropped:0 overruns:0 frame.:0

          TX packets:83 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:42206 (41.2 KiB)  TX bytes:10199 (9.9 KiB)

          Interrupt:169 Base address:0x18a4

lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:99403 errors:0 dropped:0 overruns:0 frame.:0

          TX packets:99403 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:18134658 (17.2 MiB)  TX bytes:18134658 (17.2 MiB)

eth 0 对应RAC的共有网卡

eth 1 对应RAC的私有网卡

eth0:1对应RAC的虚拟网卡

我们现在禁止eth1私有网卡来完成内联网网络不通现象,方法很简单

ifdown eth1                             禁用网卡

ifup   eth1                             激活网卡

[oracle@rac2 ~]$ su – root                 需要使用root用户哦,否则提示Users cannot control this device.

Password:

[root@rac2 ~]# ifdown eth1               

我从17:18:51敲入这个命令,4分钟之后节点2重启,大家知道发生了什么现象嘛?

Good 这就是传说中RAC脑裂brain split问题,当节点间的内联网不通时,无法信息共享,就会出现脑裂现象,RAC必须驱逐其中一部分节点来保护数据的一致性,被驱逐的节点被强制重启,这不节点2自动重启了么。又说回来,那为什么节点2重启,其他节点不重启呢。

这里有个驱逐原则:

     (1)子集群中少节点的被驱逐

                 2)节点号大的被驱逐

                 3)负载高的节点被驱逐

我们中的就是第二条,OK,节点2重启来了,我们登陆系统,输出用户名/密码

3.定位故障原因

1)查看操作系统日志

[oracle@rac2 ~]$ su - root

Password:

[root@rac2 ~]# tail -30f /var/log/messages

我又重新模拟了一遍,由于信息量很大,我从里面找出与网络有关的告警信息

Jul 17 20:05:25 rac2 avahi-daemon[3659]: Withdrawing address record for 192.168.2.102 on eth1.

收回eth1网卡的ip地址,导致节点1驱逐节点2,节点2自动重启

Jul 17 20:05:25 rac2 avahi-daemon[3659]: Leaving mDNS multicast group on interface eth1.IPv4 with address 192.168.2.102.

网卡eth1脱离多组播组

Jul 17 20:05:25 rac2 avahi-daemon[3659]: iface.c: interface_mdns_mcast_join() called but no local address available.

Jul 17 20:05:25 rac2 avahi-daemon[3659]: Interface eth1.IPv4 no longer relevant for mDNS.

网卡eth1不在与mDNS有关

Jul 17 20:09:54 rac2 logger: Oracle Cluster Ready Services starting up automatically.

Oracle集群自动启动

Jul 17 20:09:59 rac2 avahi-daemon[3664]: Registering new address record for fe80::20c:29ff:fe8f:f191 on eth1.

Jul 17 20:09:59 rac2 avahi-daemon[3664]: Registering new address record for 192.168.2.102 on eth1.

注册新ip地址

Jul 17 20:10:17 rac2 logger: Cluster Ready Services completed waiting on dependencies.

CRS完成等待依赖关系

从上面信息我们大体知道,是因为eth1网卡的问题导致节点2重启的,为了进一步分析问题我们还需要看一下CRS排错日志

[root@rac2 crsd]# tail -100f $ORA_CRS_HOME/log/rac2/crsd/crsd.log

Abnormal termination by CSS, ret = 8

异常终止CSS

2013-07-17 20:11:18.115: [ default][1244944]0CRS Daemon Starting

2013-07-17 20:11:18.116: [ CRSMAIN][1244944]0Checking the OCR device

2013-07-17 20:11:18.303: [ CRSMAIN][1244944]0Connecting to the CSS Daemon

重启CRS  CSS进程

[root@rac2 cssd]# pwd

/u01/crs1020/log/rac2/cssd

[root@rac2 cssd]# more ocssd.log       查看cssd进程日志

[CSSD]2013-07-17 17:26:18.319 [86104976] >TRACE:   clssgmclientlsnr: listening on (ADDRESS=(PROTOCOL=ipc)(KEY=OCSSD_LL_rac2_crs))

这里可以看到rac2节点的cssd进程监听出了问题

[CSSD]2013-07-17 17:26:19.296 [75615120] >TRACE:   clssnmHandleSync: Acknowledging sync: src[1] srcName[rac1] seq[13] sync[12]

请确认两个节点的同步问题

从以上一系列信息可以分析出这是内联网通信问题,由于两个节点的信息无法同步导致信息无法共享从而引起脑裂现象


123下一页
2

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (2 人)

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2019-5-24 08:43 , Processed in 0.187509 second(s), 22 queries .