clusterware启动顺序——CRSD

CRSD层面

1.启动过程

CRSD层面的主要工作是启动crsd.bin守护进程,然后由crsd.bin读取OCR中的信息并和PE master节点通信,之后与crsd.bin对应的代理进程被启动,同时还启动集群所有的应用程序资源。CRSD管理的应用程序之间的依赖关系(启动顺序)可以通过以下图形了解。

具体的启动过程如下

1) crsd.binOCR中获得所需要启动的资源列表。

2) crsd.bin启动对应的代理进程。

3) 代理进程oraagent_root启动集群的公网资源,之后集群的VIPSCAN VIP资源也被启动。

4) 代理进程oraagent_grid启动和VIP对应的Listener资源,以及和SCAN VIP对应的SCAN Listener资源。

5) 代理进程oraagent_grid启动ONS资源。

6) 代理进程oraagent_grid启动ora.asm资源,并启动其他的磁盘组资源。

7) 代理进程oraagent_oracle启动数据库资源,之后启动对应的数据库服务资源。

8) 代理进程script_agent启动ora.cvu资源。

2.可能出现的问题

1)导致CRSD无法启动集群的应用程序资源的可能原因有:

原因1/etc/oracle/ocr.loc指向了错误的OCR文件

[grid@ebsdb1 11.2.0]$ cat /etc/oracle/ocr.loc

ocrconfig_loc=+VOTE_DG

local_only=FALSE

原因2OCR损坏或者已经丢失。

原因3:代理进程对应的二进制文件丢失或者损坏。

原因4:集群的私网出现问题,从而导致crsd.bin无法和远程节点通信。

原因5$GRID_HOME/bin/crsd.bin文件的权限错误或者文件已经损坏。

原因6$GRID_HOME/crs/init/*.pid的文件指向了其他的运行中的进程。

相应的解决方法如下:

方法1:修改/etc/oracle/ocr.loc中的OCR位置,使其指向正确的OCR磁盘组,如果使用了裸设备或集群文件系统,则确认它指向了正确的裸设备名或文件系统名。

方法2:从正常的OCR备份中恢复OCR

方法3:从正常的节点上复制代理进程的二进制文件到有问题的节点。

方法4:确认私网能够正常工作。

方法5:确认$GRID_HOME/bin/crsd.bin文件的权限正确。如果问题是crsd.bin文件损坏,可以从正常的节点上复制该文件到问题节点。

[grid@ebsdb1 11.2.0]$ ls -l $GRID_HOME/bin/crsd.bin

-rwxr----x 1 root oinstall 106051083 Jun 16  2014 /ebsdb/grid/11.2.0/bin/crsd.bin

方法6:删除有问题的$GRID_HOME/crs/init/*.pid文件,之后重新启动CRSD,例如

crsctl stop res ora.crsd -init

crsctl start res ora.crsd -init

2)导致VIPSCAN VIP无法正常启动的可能原因:

原因1:由于网络问题导致集群公网资源无法启动。

原因2:由于DNS问题导致无法正常解析VIPSCAN VIP

原因3VIPSCAN VIP地址已经被网络中的其他主机占用。

原因4OCR中记录的VIPSCAN VIP信息和OS层面不一致。

对应的解决问题方法如下:

方法1:确认集群公网能够正常工作,而且公网资源ora.net1.network正常工作。

方法2:确认DNS能够正常工作,而且能够正确地解析VIPSCAN VIP,例如使用nslookup <VIPSCAN VIP对应的主机名>验证。

方法3:使用ping或者nslookup命令找到占用了VIPSCAN VIP的主机,以解决地址冲突问题。

方法4:使用ifconfig命令和/etc/hosts中的信息确认OS层面的公网配置,之后通过以下的命令检查OCR中的配置

[grid@ebsdb1 11.2.0]$ oifcfg getif -global

eth0172.28.1.0  global  public

eth1192.168.10.0  global  cluster_interconnect

[grid@ebsdb1 11.2.0]$ srvctl config nodeapps -a

Network exists: 1/172.28.1.0/255.255.255.0/eth0, type static

VIP exists: /ebsdbvip1/172.28.1.223/172.28.1.0/255.255.255.0/eth0, hosting node ebsdb1

VIP exists: /ebsdbvip2/172.28.1.224/172.28.1.0/255.255.255.0/eth0, hosting node ebsdb2

[grid@ebsdb1 11.2.0]$ srvctl config scan

SCAN name: ebsscan, Network: 1/172.28.1.0/255.255.255.0/eth0

SCAN VIP name: scan1, IP: /ebsscan/172.28.1.225

3)导致ListenerSCAN Listener无法正常启动的可能原因

由于ListenerSCAN Listener是依赖于VIPSCAN VIP的,所以绝大部分ListenerSCAN Listener无法启动的问题都是由于VIPSCAN VIP的问题导致的。

4ora.asm和磁盘组资源无法正常启动的可能原因

对于ora.asm,由于这个资源实际上是初始化资源ora.asm的一个代理资源,这个资源可能出现问题的原因可以参考之前的内容。而对于磁盘组资源ora.<磁盘组名>.dg,它实际上是用于反映对应ASM磁盘组的状态,如果这个资源无法启动,那在绝大部分情况下表明对应的ASM磁盘组没有被挂载,而磁盘组无法挂载的主要原因就是底层对应的ASM磁盘出现了问题,例如:某些磁盘的权限和属主错误、磁盘头信息错误、磁盘无法访问等。

解决办法如下:

方法1:修正ASM磁盘的权限和属主信息,对应的基本原则是:ASM磁盘的属主应该是grid用户,对应的组应该是asmadmin,而且grid用户和asmadmin组都应该对磁盘组有读写权限。

方法2:从11.1.0.7版本开始,ASM磁盘头信息会自动备份到AU#1的倒数第二个块中。对于AU大小为1MB的磁盘组,每个AU包括的块数量=1024KB/4KB=256个,备份信息位于AU#1的第254号块(从0号开始)。可以使用下面的命令手动恢复备份的磁盘头信息:

kfed repair /dev/oracleasm/disks/DATA1 aus=1048576

方法3:如果磁盘无法被访问,那绝大部分情况下都是由操作系统或存储层面的问题导致的。

5)数据库资源或数据库服务资源无法启动的可能原因

对于数据库资源,实际上代理进程完成的工作就是通过资源的定义,执行startup spfile=<spfile位置>命令。而对于数据库服务资源,代理进程执行的命令就是alter system set service_names=<数据库服务名称> sid=<数据库实例名>。可能导致它们无法启动的原因如下:

原因1:数据库资源的某些属性配置错误,如果数据库的启动选项被设置成了nomount,这表示代理进程会使用“startup nomount”的方式启动数据库。如果数据库角色被设置成了STANDBY,则表示代理进程认为这是一个备用数据库,那么数据库在启动时会导致问题。

原因2:数据库的health check文件($ORACLE_HOME/dbs/hc_<实例名>.dat)无法被访问。

原因3:操作系统验证被禁用。

原因4$ORACLE_HOME/bin下的Oracle二进制文件的权限或者属主配置错误。

原因5:数据库资源所依赖的磁盘组没有被挂载。

对应的解决方法如下:

方法1:确保数据库资源在OCR中的属性是正确的,以下是一个正常的数据库资源属性的输出

[orasit@ebsdb1 ~]$ srvctl config database -d sit

Database unique name: SIT

Database name:

Oracle home: /ebsdb/sit/db/tech_st/11.2.0

Oracle user: orasit

Spfile:

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Server pools: SIT

Database instances: SIT1,SIT2

Disk Groups: DATA_DG

Mount point paths:

Services:

Type: RAC

Database is administrator managed

方法2:确保数据库的health check文件存在而且能够访问,例如

[orasit@ebsdb1 ~]$ ls -l $ORACLE_HOME/dbs

total 31812

……

-rw-rw---- 1 orasit oinstall     1544 Feb 10 18:56 hc_SIT1.dat

……

方法3:启用操作系统验证。在$ORACLE_HOME/network/admin/sqlnet.ora文件中将一下行注释掉或者直接删除。

SQLNET.AUTHENTICATION_SERVICES=(NTS)

方法4:确保$ORACLE_HOME/bin下的Oracle二进制文件的权限或者属主配置正确,例如

[orasit@ebsdb1 ~]$ ls -l $ORACLE_HOME/bin/oracle

-rwsr-s--x 1 orasit asmadmin 239729642 Feb  8 11:55 /ebsdb/sit/db/tech_st/11.2.0/bin/oracle

方法5:确保数据库所在的磁盘组已经被挂载。如果磁盘组对应的磁盘存在问题,在解决了磁盘组层面的问题后,使用类似于下面的命令挂载磁盘组:

alter diskgroup DATA mount;

如果磁盘组的冗余度是normal或者high,而只是个别的磁盘出现了问题,且没有数据丢失,可以使用类似下面的命令强制挂载磁盘

alter diskgruop DATA mount force;





猜你喜欢

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