如果安装过10g以后的RAC环境,应该对这个工具并不陌生。在安装Cluster和Database之前通常会执行runcluvfy.sh脚本来检查当前系统是否满足安装条件。
这篇介绍comp相关选项。
 
 
在安装RAC时,由于cluvfy工具还没有被安装,而runcluvfy.sh将cluvfy工具的功能在shell中实现,并和安装盘一起提供,使得用户在数据库和CLUSTER安装之前就可以利用这个工具的功能。
这个工具的主要作用就是验证系统是否满足安装的条件。
这个工具拥有众多的选项,因此不可能也没有必要详细的描述所有的选项,如果从大类上分,这个工具可以分成两个大类选项:comp用来验证组件的功能;stage用来验证部署功能。
可以通过comp –list来列出所有cluvfy工具支持验证的组件:
bash-2.03$ cluvfy comp -list

 
USAGE:

cluvfy comp  <component-name> <component-specific options>  [-verbose]

Valid components are:

        nodereach : checks reachability between nodes

        nodecon   : checks node connectivity

        ssa       : checks shared storage accessibility

        space     : checks space availability

        sys       : checks minimum system requirements

        clu       : checks cluster integrity

        clumgr    : checks cluster manager integrity

        ocr       : checks OCR integrity

        crs       : checks CRS integrity

        nodeapp   : checks node applications existence

        admprv    : checks administrative privileges

        peer      : compares properties with peers

其中nodereach、nodecon和sys等组件都是安装Cluster环境必不可少的检查选项:
bash-2.03$ cluvfy comp nodereach -n racnode1,racnode2        

Verifying node reachability

Checking node reachability...

Node reachability check passed from node "racnode2".

 
Verification of node reachability was successful.

其中-n选项中指定节点列表,在节点列表中的逗号前后都不能包括空格,否则会报错。
bash-2.03$ cluvfy comp nodereach -n racnode1,racnode2 -verbose

Verifying node reachability

Checking node reachability...

Check: Node reachability from node "racnode2"

  Destination Node                      Reachable?             

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

  racnode1                              yes                    

  racnode2                              yes                    

Result: Node reachability check passed from node "racnode2".

 
Verification of node reachability was successful.

使用-verbose会得到更加详细的信息。
bash-2.03$ cluvfy comp nodecon -n racnode1,racnode2 -verbose

Verifying node connectivity

Checking node connectivity...

 
Interface information for node "racnode2"

  Interface Name                  IP Address                      Subnet         

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

  ce0                             172.25.198.223                  172.25.0.0     

  ce0                             172.25.198.225                  172.25.198.0   

  ce1                            10.0.0.2                        10.0.0.0       

 
Interface information for node "racnode1"

  Interface Name                  IP Address                      Subnet         

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

  ce0                             172.25.198.222                  172.25.0.0     

  ce0                             172.25.198.224                  172.25.198.0   

  ce1                            10.0.0.1                        10.0.0.0       

 
Check: Node connectivity of subnet "172.25.0.0"

  Source                          Destination                     Connected?     

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

  racnode2:ce0                    racnode1:ce0                    yes            

Result: Node connectivity check passed for subnet "172.25.0.0" with node(s) racnode2,racnode1.

Check: Node connectivity of subnet "172.25.198.0"

  Source                          Destination                     Connected?     

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

  racnode2:ce0                    racnode1:ce0                    yes            

Result: Node connectivity check passed for subnet "172.25.198.0" with node(s) racnode2,racnode1.

Check: Node connectivity of subnet "10.0.0.0"

  Source                          Destination                     Connected?     

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

  racnode2:ce1                    racnode1:ce1                    yes            

Result: Node connectivity check passed for subnet "10.0.0.0" with node(s) racnode2,racnode1.

Suitable interfaces for the private interconnect on subnet "172.25.0.0":

racnode2 ce0:172.25.198.223

racnode1 ce0:172.25.198.222

Suitable interfaces for the private interconnect on subnet "172.25.198.0":

racnode2 ce0:172.25.198.225

racnode1 ce0:172.25.198.224

Suitable interfaces for the private interconnect on subnet "10.0.0.0":

racnode2 ce1:10.0.0.2

racnode1 ce1:10.0.0.1

ERROR:

Could not find a suitable set of interfaces for VIPs.

Result: Node connectivity check failed.

 
Verification of node connectivity was unsuccessful on all the nodes.

其中导致监测失败的原因是Oracle的bug,Oracle认为172.25开头的IP地址无法作为PUBLIC地址,这个在以前安装RAC的时候提到过很多次了。
bash-2.03$ cluvfy comp sys -n racnode1,racnode2 -p database -r 10gR2 -osdba dba

Verifying system requirement

Checking system requirements for 'database'...

Total memory check passed.

Free disk space check passed.

Swap space check passed.

System architecture check passed.

Operating system version check passed.

Operating system patch check failed for "112760-05".

Check failed on nodes:

        racnode2,racnode1

Operating system patch check passed for "108993-45".

Operating system patch check failed for "112763-13".

Check failed on nodes:

        racnode2,racnode1

Package existence check passed for "SUNWarc".

Package existence check passed for "SUNWbtool".

Package existence check passed for "SUNWhea".

Package existence check passed for "SUNWlibm".

Package existence check passed for "SUNWlibms".

Package existence check passed for "SUNWsprot".

Package existence check passed for "SUNWsprox".

Package existence check passed for "SUNWtoo".

Package existence check passed for "SUNWi1of".

Package existence check passed for "SUNWi1cs".

Package existence check passed for "SUNWi15cs".

Package existence check passed for "SUNWxwfnt".

Package existence check passed for "SUNWlibC".

Kernel parameter check failed for "noexec_user_stack".

Check failed on nodes:

        racnode2,racnode1

Kernel parameter check passed for "SEMMNI".

Kernel parameter check passed for "SEMMNS".

Kernel parameter check passed for "SEMMSL".

Kernel parameter check passed for "SEMVMX".

Kernel parameter check passed for "SHMMAX".

Kernel parameter check passed for "SHMMIN".

Kernel parameter check passed for "SHMMNI".

Kernel parameter check passed for "SHMSEG".

Group existence check passed for "dba".

User existence check passed for "nobody".

System requirement failed for 'database'

Verification of system requirement was unsuccessful on all the nodes.

除了检查常规的安装检查组件外,还可以验证ocr、clu以及crs的完整性:
bash-2.03$ cluvfy comp clu -n racnode1,racnode2 -verbose

Verifying cluster integrity

Checking cluster integrity...

  Node Name                          

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

  racnode1                           

  racnode2                           

Cluster integrity check passed

 
Verification of cluster integrity was successful.

bash-2.03$ cluvfy comp ocr -n racnode1,racnode2 -verbose

Verifying OCR integrity

Checking OCR integrity...

Checking the absence of a non-clustered configuration...

All nodes free of non-clustered, local-only configurations.

Uniqueness check for OCR device passed.

Checking the version of OCR...

OCR of correct Version "2" exists.

Checking data integrity of OCR...

Data integrity check for OCR passed.

OCR integrity check passed.

Verification of OCR integrity was successful.

bash-2.03$ cluvfy comp crs -n racnode1,racnode2 -verbose

Verifying CRS integrity

Checking CRS integrity...

Checking daemon liveness...

Check: Liveness for "CRS daemon"

  Node Name                             Running                

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

  racnode2                              yes                    

  racnode1                              yes                    

Result: Liveness check passed for "CRS daemon".

Checking daemon liveness...

Check: Liveness for "CSS daemon"

  Node Name                             Running                

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

  racnode2                              yes                    

  racnode1                              yes                    

Result: Liveness check passed for "CSS daemon".

Checking daemon liveness...

Check: Liveness for "EVM daemon"

  Node Name                             Running                

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

  racnode2                              yes                    

  racnode1                              yes                    

Result: Liveness check passed for "EVM daemon".

Liveness of all the daemons

  Node Name     CRS daemon                CSS daemon                EVM daemon

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

  racnode2      yes                       yes                       yes      

  racnode1      yes                       yes                       yes      

Checking CRS health...

Check: Health of CRS

  Node Name                             CRS OK?                

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

  racnode2                              yes                    

  racnode1                              yes                    

Result: CRS health check passed.

CRS integrity check passed.

Verification of CRS integrity was successful.

bash-2.03$ cluvfy comp nodeapp -n racnode1,racnode2 -verbose

Verifying node application existence

Checking node application existence...

 
Checking existence of VIP node application

  Node Name     Required                  Status                    Comment  

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

  racnode2      yes                       exists                    passed   

  racnode1      yes                       exists                    passed   

Result: Check passed.

Checking existence of ONS node application

  Node Name     Required                  Status                    Comment  

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

  racnode2      no                        exists                    passed   

  racnode1      no                        exists                    passed   

Result: Check passed.

Checking existence of GSD node application

  Node Name     Required                  Status                    Comment  

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

  racnode2      no                        exists                    passed   

  racnode1      no                        exists                    passed   

Result: Check passed.

利用cluvfy不仅可以检查是否满足安装要求,还可以验证组件是否工作正常。