clusterware启动顺序——CSS

CSS层面

1.ocssd.bin守护进程

该层面最主要的工作就是启动ocssd.bin守护进程。使本地节点能够成功地加入集群。ocssd.bin守护进程的启动过程可以通过以下的图形进行描述。

1) ocssd.bincssdagent代理进程启动

2) ocssd.bin访问gpnp profile,以便能获得集群的名称、私网信息、VF搜索路径(Discovery String)等基本信息。

3) ocssd.binVF搜索路径中找到足够多的VF,并在VF的租借块中续租本地节点的编号,同时将本地节点的信息添加到VF,并开始和VF进行磁盘心跳。

4) 根据gpnp profile中的信息,和gipcd进程通信,获取集群间通信所需的信息(endpoint)。

5) 向集群的其他节点发送消息,建立连接。

6) 集群重新配置开始。重新配置主节点向集群的其他节点发送消息,通知其他节点有新的节点加入,其他节点接收消息。

7) 重新配置结束,本地节点加入集群。

注意:如果本地节点是第一个被启动的节点,那么重新配置是不会发生的。

在整个过程中,可能导致ocssd.bin启动失败的原因如下。

原因1cssdagent代理进程没有被启动,这导致了ocssd.bin守护进程没有被启动。

原因2gpnpd.bin守护进程没有启动成功或者gpnp profile中相关的信息有问题,这导致了ocssd.bin无法读取集群相关的信息,或者读取了错误的信息。

注意:由于ohasd是同时启动集群的所有初始化资源的,所以在gpnpd.bin还没有完全启动成功时,ocssd.log中有无法读取gpnp profile的错误是可以忽略的。只有在gpnpd.bin已经成功启动之后且一直出现上面的错误,才说明ocssd.bin无法访问gpnp profile

原因3VF所在的路径无法被访问或者VF无法被正常访问,这导致了ocssd.bin守护进程无法访问VF中的信息。

原因4gipcd.bin守护进程没有被正常启动,这导致ocssd.bin无法获得和远程节点通信所需的信息。

原因5:集群私网通信出现了问题,这导致ocssd.bin无法和远程节点通信。

对应的解决办法如下:

方法1:确保cssdagent能够正常启动ocssd.bin

方法2:确保gpnp能够正常工作。

方法3:确保grid用户对VF所在的路径和VF对应的设备有读写权限。

方法4:在操作系统基本重新启动gpicd.bin守护进程(例如:kill -9 <ospid>

方法5:确保集群私网能够正常工作。

2.启动其他依赖于ocssd的集群初始化资源

1ASM实例

ASM实例的启动过程大概有如下几个步骤:

1$GRID_HOME/bin/oracle文件被调用,并读取ASM初始化参数文件。

2)根据ASM的初始化参数文件启动ASM实例。

3)本地ASM实例和远程实例进行通信,完成实力层面的重新配置。

4)挂载ASM磁盘组。

因此,导致ASM实例无法启动的原因如下。

原因1$GRID_HOME/bin/oracle文件的权限设置有问题。

原因2ASM实例的spfilegpnp profile/pfile$GRID_HOME/dbs/init<asm实例名>.ora)丢失,或者其中设置了错误的参数。

原因3:由于某些操作系统的参数配置错误,导致ASM实例无法获得足够的资源。

原因4HAIP没有被正常启动,这导致ASM实例之间无法通过HAIP进行通信。

可以通过ifconfig -a查看,私网网卡是否绑定了HAIP

原因5:由于节点间的私网配置问题,导致ASM实例之间无法通信,例如私网网卡的MTU配置不一致。

原因6:由于cssd出现问题,导致了ASM实例的LMON的进程无法将自己注册到CSS对应的组当中。对于这种情况,ora-29701ora-29702错误会出现在ASMalert.log中。

对于的解决方法如下:

方法1:确保$GRID_HOME/bin/oracle文件的设置正确

[grid@ebsdb1 ~]$ ll $GRID_HOME/bin/oracle

-rwsr-s--x 1 grid oinstall 210020239 Oct 27 09:15 /ebsdb/grid/11.2.0/bin/oracle

方法2:确认ASM实例的spfilegpnp profile/pfile$GRID_HOME/dbs/init<asm实例名>.ora)存在而且能够被grid用户访问

[grid@ebsdb1 ~]$ gpnptool get

Warning: some command line parameters were defaulted. Resulting command line:

/ebsdb/grid/11.2.0/bin/gpnptool.bin get -o-

…..

ProfileSequence="6" ClusterUId="15bc3d3aaf6e4fdbff170ea43ef3cbf6" ClusterName="ebsdb-cluster" PALocation=""><gpnp:Network-Profile><gpnp:HostNetwork id="gen" HostName="*"><gpnp:Network id="net1" IP="172.28.1.0" Adapter="eth0" Use="public"/><gpnp:Network id="net2" IP="192.168.10.0" Adapter="eth1" Use="cluster_interconnect"/></gpnp:HostNetwork></gpnp:Network-Profile><orcl:CSS-Profile id="css" DiscoveryString="+asm" LeaseDuration="400"/><orcl:ASM-Profile id="asm" DiscoveryString="/dev/mapper/asm*" SPFile=""/>

…..

Success.

ASMCMD> ls -l +VOTE_DG/ebsdb-cluster/ASMPARAMETERFILE/

Type              Redund  StripedTime             Sys  Name

ASMPARAMETERFILE  MIRRORCOARSE   OCT 26 15:00:00  YREGISTRY.253.926264779

gpnp profile中的中的ASM spfile信息和ASM磁盘组中的信息是一致的

[grid@ebsdb2 ~]$ ls -l $ORACLE_HOME/dbs

total 20

-rw-rw---- 1 grid oinstall 1052 Feb  3 08:15 ab_+ASM2.dat

drwxr-xr-x 2 grid oinstall 4096 Dec 27 15:00 arch

-rw-rw---- 1 grid oinstall 1544 Feb  3 10:42 hc_+ASM2.dat

-rw-r--r-- 1 grid oinstall 2851 Oct 26 15:40 init.ora

-rw-r----- 1 grid oinstall 1536 Oct 26 15:59 orapw+ASM

ASM实例的pfile是存在的,而且grid用户能够访问。

方法3:参考对于平台的Oracle安装指南,确认操作系统的参数和资源限制满足Oracle要求。

方法4:确保集群所有节点的HAIP能够正常启动,而且通信没有问题。如果HAIP问题不能解决,可以设置初始化参数cluster_interconnects,以使ASM实例使用集群私网IP地址进行通信。请确认所有节点的ASM实例都设置了cluster_interconnects参数,以便保证配置的一致性。

方法5:确保所有节点的私网配置一致并且畅通,例如:所有节点的私网都具有相同的MTU值。

方法6ora-29701错误很多时候都是由Oraclebug导致的,所以根本的解决办法是应用补丁。如果无法马上应用补丁,重新启动所有的集群节点也可以暂时绕过这个问题。

2CTSS

CTSS的启动过程很简单:首先启动ctssd.bin守护进程并和其他节点进行通信,从而找到参考节点(Reference Node),之后决定CTSS运行的模式(activeobserver)。最后,定期和参考节点验证(并同步)时间。由于CTSS的工作相对来说比较简单,所以出问题的概率也比较小,比较常见的导致CTSS无法启动的原因是OLR中的信息出现了问题,即OLR corruption

对应的解决办法就是从正常的备份中恢复OLR

3HAIP

HAIP并不是一个后台守护进程,而是为数据库与ASM实例间通信提供高可用性和负载均衡的一种机制,具体体现为一些IP地址。而HAIP的启动就是由orarootagent代理进程在集群的私网上绑定对应的IP地址。比较常见的导致HAIP无法启动的原因如下:

原因1OCR中记录的私网信息和操作系统的私网信息不一致。

[grid@ebsdb1 11.2.0]$ oifcfg getif

eth0172.28.1.0  global  public

eth1192.168.10.0  global  cluster_interconnect

[grid@ebsdb1 11.2.0]$ oifcfg iflist -p -n

eth0172.28.1.0  PRIVATE  255.255.255.0

eth1192.168.10.0  PRIVATE  255.255.255.0

eth1169.254.0.0  UNKNOWN  255.255.0.0

[grid@ebsdb1 11.2.0]$ ifconfig -a

原因2:集群私网存在问题,从而导致HAIP地址无法被绑定。

原因3Oracle的已知问题。

对应的解决办法如下:

方法1:修改OCR中的信息,确保其和操作系统一致,在大部分的情况下使用命令oifcfg setif即可。例如

oifcfg -setif -global eth1/10.1.0.0:cluster_interconnect

oifcfg -delif -global eth1/10.1.1.0

方法2:确认私网网卡能正常运行。

方法3:对于Oracle的已知问题。由于11gR2版本中关于HAIP的问题比较多,要具体情况具体分析,不过比较通用的建议是,使用最近的版本(11.2.0.4)并应用最新的PSU补丁包。





猜你喜欢

转载自www.cnblogs.com/dbamo/p/8999051.html