一、引言

    前几天安装了Oracle 11gR的ASM,但是今天想要启动ASM的时候遇到下面的情况:

 1 [grid@yft ~]$ sqlplus /nolog 2  3 SQL*Plus: Release 11.2.0.1.0 Production on Sun Mar 24 08:37:57 2013 4  5 Copyright (c) 1982, 2009, Oracle.  All rights reserved. 6  7 SQL> conn / as sysasm 
 8 Connected to an idle instance. 9 SQL> startup10 ORA-01078: failure in processing system parameters11 ORA-29701: unable to connect to Cluster Synchronization Service

二、解决问题
    无法连接到CSS服务上,到操作系统上检查一下:

1 [grid@yft ~]$ crsctl check css2 CRS-4530: Communications failure contacting Cluster Synchronization Services daemon3 [grid@yft ~]$ ps -ef |grep cssd4 grid      5327  4963  0 08:33 pts/0    00:00:00 grep cssd

    果然没有CSS的服务daemon进程,再看一下HAS(High Availability Service)的状态:

1 [grid@yft ~]$ crsctl check has2 CRS-4638: Oracle High Availability Services is online3 [grid@yft ~]$ ps -ef |grep d.bin4 grid      4704     1  0 08:22 ?        00:00:02 /u01/app/grid/product/11.2.0/grid/bin/ohasd.bin reboot5 grid      5334  4963  0 08:34 pts/0    00:00:00 grep d.bin

    发现HAS的服务确实启动了的,而ora.cssd和ora.diskmon这2个服务是依赖于HAS维护的,进一步查看各资源的状态:

 1 [grid@yft ~]$ crsctl status resource -t 2 -------------------------------------------------------------------------------- 3 NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
 4 -------------------------------------------------------------------------------- 5 Local Resources 6 -------------------------------------------------------------------------------- 7 ora.DATA.dg 8                OFFLINE OFFLINE      yft                                          
 9 ora.DATA1.dg10                OFFLINE OFFLINE      yft                                          
11 ora.asm12                OFFLINE OFFLINE      yft                                          
13 --------------------------------------------------------------------------------14 Cluster Resources15 --------------------------------------------------------------------------------16 ora.cssd17       1        ONLINE  OFFLINE                                                   
18 ora.diskmon19       1        ONLINE  OFFLINE                                                   
20 ora.orcl.db21       1        OFFLINE OFFLINE

    再看一下ora.cssd和ora.diskmon的属性:

 1 [grid@yft ~]$ crs_stat -p ora.cssd 2 NAME=ora.cssd 3 TYPE=ora.cssd.type 4 ACTION_SCRIPT= 5 ACTIVE_PLACEMENT=0 6 AUTO_START=never 7 CHECK_INTERVAL=30 8 DESCRIPTION="Resource type for CSSD" 9 FAILOVER_DELAY=010 FAILURE_INTERVAL=311 FAILURE_THRESHOLD=512 HOSTING_MEMBERS=13 PLACEMENT=balanced14 RESTART_ATTEMPTS=515 SCRIPT_TIMEOUT=60016 START_TIMEOUT=60017 STOP_TIMEOUT=90018 UPTIME_THRESHOLD=1m19 20 [grid@yft ~]$ crs_stat -p ora.diskmon21 NAME=ora.diskmon22 TYPE=ora.diskmon.type23 ACTION_SCRIPT=24 ACTIVE_PLACEMENT=025 AUTO_START=never26 CHECK_INTERVAL=2027 DESCRIPTION="Resource type for Diskmon"28 FAILOVER_DELAY=029 FAILURE_INTERVAL=330 FAILURE_THRESHOLD=531 HOSTING_MEMBERS=32 PLACEMENT=balanced33 RESTART_ATTEMPTS=1034 SCRIPT_TIMEOUT=6035 START_TIMEOUT=6036 STOP_TIMEOUT=6037 UPTIME_THRESHOLD=5s

    到这里基本就找到了原因了,可以看到这两个资源的AUTO_START属性默认都设置为never,也就是说他们不会随着HAS服务的启动而自动启动的,尽管默认情况下HAS服务是开机自动启动的,现在手动启动一下:

 1 [grid@yft ~]$ crsctl start resource ora.cssd 2 CRS-2672: Attempting to start 'ora.cssd' on 'yft' 3 CRS-2679: Attempting to clean 'ora.diskmon' on 'yft' 4 CRS-2681: Clean of 'ora.diskmon' on 'yft' succeeded 5 CRS-2672: Attempting to start 'ora.diskmon' on 'yft' 6 CRS-2676: Start of 'ora.diskmon' on 'yft' succeeded 7 CRS-2676: Start of 'ora.cssd' on 'yft' succeeded 8  9 注:ora.cssd和ora.diskmon这两个服务是有依赖关系的,启动哪个都会把两个都起来。10 11 [grid@yft ~]$ crs_stat -t12 Name           Type           Target    State     Host        
13 ------------------------------------------------------------14 ora.DATA.dg    ora....up.type OFFLINE   OFFLINE               
15 ora.DATA1.dg   ora....up.type OFFLINE   OFFLINE               
16 ora.asm        ora.asm.type   OFFLINE   OFFLINE               
17 ora.cssd       ora.cssd.type  ONLINE    ONLINE    yft         
18 ora.diskmon    ora....on.type ONLINE    ONLINE    yft         
19 ora.orcl.db    ora....se.type OFFLINE   OFFLINE

    CSS服务起来了,重启动asm instnace

1 [grid@yft ~]$ crs_stat -t2 Name           Type           Target    State     Host        
3 ------------------------------------------------------------4 ora.DATA.dg    ora....up.type ONLINE    ONLINE    yft         
5 ora.DATA1.dg   ora....up.type ONLINE    ONLINE    yft         
6 ora.asm        ora.asm.type   ONLINE    ONLINE    yft         
7 ora.cssd       ora.cssd.type  ONLINE    ONLINE    yft         
8 ora.diskmon    ora....on.type ONLINE    ONLINE    yft         
9 ora.orcl.db    ora....se.type OFFLINE   OFFLINE

tips:
1)、默认情况下HAS(High Availability Service)是自动启动的,通过如下命令可以取消和启动自动启动

    crsctl disable has

    crsctl enable has

2)、HAS手动启动和停止

    crsctl start has

    crsctl stop has

3)、查看HAS的状态

    crsctl check has

4)、如果想让ora.cssd和ora.diskmon服务随着HAS的启动而自动启动,那么你可以把这两个服务的AUTO_START属性:

    crsctl modify resource "ora.cssd" -attr "AUTO_START=1"

    crsctl modify resource "ora.diskmon" -attr "AUTO_START=1"

5)、如果想取消ora.cssd和ora.diskmon的Auto start

    crsctl modify resource "ora.cssd" -attr "AUTO_START=never"

    crsctl modify resource "ora.diskmon" -attr "AUTO_START=never"