解读11gR2 CVU的新特性

原文链接:http://www.dbaleet.org/interpret_cvunew_features_in_11gr2/

对于这篇文章的绝大多数读者而言,CVU已经不是新面孔而是老朋友了,所以我这里并不打算介绍什么是CVU,而是介绍它在11gR2中的一些新特性和增强型功能。

Oracle在Oracle 10gR2时代开始引进CVU的功能,但是一直是作为一个独立的工具,对数据库的各项配置信息进行检查。一个最显著的变化就是从11.2.0.2开始,CVU已经作为一个集群资源集成到grid infrastructure 中。

 

[root@db01 ~]# /u01/app/11.2.0.2/grid/bin/crsctl stat res -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
......
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       db04                                     
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       db03                                     
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       db02                                     
ora.cvu
      1        ONLINE  ONLINE       db01                                     
ora.dbm.db
      1        ONLINE  ONLINE       db01                 Open                
      2        ONLINE  ONLINE       db02                 Open                
      3        ONLINE  ONLINE       db03                 Open                
      4        ONLINE  ONLINE       db04                 Open                
ora.oc4j
      1        ONLINE  ONLINE       db01                                     
ora.scan1.vip
      1        ONLINE  ONLINE       db04                                     
ora.scan2.vip
      1        ONLINE  ONLINE       db03                                     
ora.scan3.vip
      1        ONLINE  ONLINE       db02                                     
ora.db01.vip
      1        ONLINE  ONLINE       db01                                     
ora.db02.vip
      1        ONLINE  ONLINE       db02                                     
ora.db03.vip
      1        ONLINE  ONLINE       db03                                     
ora.db04.vip
      1        ONLINE  ONLINE       db04

再来查看一下这个资源的属性:

[root@db01 ~]#/u01/app/11.2.0.2/grid/bin/crsctl stat res ora.cvu -p
NAME=ora.cvu
TYPE=ora.cvu.type
ACL=owner:grid:rwx,pgrp:oinstall:rwx,other::r--
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=%CRS_HOME%/bin/cvures%CRS_SCRIPT_SUFFIX%
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/scriptagent
AUTO_START=restore
CARDINALITY=1
CHECK_INTERVAL=21600
CHECK_RESULTS=
CHECK_TIMEOUT=600
DEFAULT_TEMPLATE=
DEGREE=1
DESCRIPTION=Oracle CVU resource
ENABLED=1
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=
LOAD=1
LOGGING_LEVEL=1
NLS_LANG=
NOT_RESTARTING_TEMPLATE=
OFFLINE_CHECK_INTERVAL=0
PLACEMENT=balanced
PROFILE_CHANGE_TEMPLATE=
RESTART_ATTEMPTS=5
SCRIPT_TIMEOUT=600
SERVER_POOLS=*
START_DEPENDENCIES=hard(ora.net1.network)
START_TIMEOUT=0
STATE_CHANGE_TEMPLATE=
STOP_DEPENDENCIES=hard(ora.net1.network)
STOP_TIMEOUT=0
TYPE_VERSION=1.1
UPTIME_THRESHOLD=1h
USR_ORA_ENV=
VERSION=11.2.0.2

 

脚本 %CRS_HOME%/bin/cvures 实现了cvu资源调的几种方法:start, stop, check, clean, abort,并将其返回给调用它的agent:%CRS_HOME%/bin/scriptagent, 并将日志保存在 %CRS_HOME%/log/`hostname -s`/cvu目录。GI会每隔21600秒会对这个资源检查一次,如果这个资源状态不正常,则会试图将其拉起来。

 

在11.2.0.3这个版本, CVU的功能得到进一步的增强,一个明显的变化就是在CVU中加入了健康检查(healthcheck)的选项。以下是healthcheck选项的语法格式:

cluvfy comp healthcheck [-collect {cluster|database}] [-db db_unique_name] [-bestpractice|-mandatory] [-deviations] [-html] [-save [-savedir directory_path]

非常简明易懂,其中:

-collect后跟cluster或者是database,代表是对GI还是RDBMS进行健康检查;

-db后跟数据库实例的唯一名称db_unique_name,此选项用于对RDBMS进行健康检查;

后面的-bestpractice|-mandatory 代表是是检查最佳实践的还是只是针对某些必须的配置进行检查, 如果不指定此参数, 则两者都会进行检查。如果要指定, 则只能指定其中的一个;

-html代表报告输出的格式是否为html格式,默认情况下为文本格式。

-save 代表自己手工指定报告的保存路径,如果不指定这个路径,则生成的报告默认保存在%CVU_HOME%/cv/report目录。

例如,

对GI的最佳实践进行检查,并在报告中列出当前与最佳的差距,并将其保存为html格式;

$ ./cluvfy comp healthcheck -collect cluster -bestpractice -deviations -html

对RDBMS进行健康检查,既包括最佳实践同时也包括强制要求的选项,将其保存为html格式;

$ ./cluvfy comp healthcheck -collect database -html

需要注意的是在对database进行检查前,需要先在数据库中执行一个脚本%CVU_HOME%/cv/admin/cvusys.sql, 这是因为CVU需要使用JDBC驱动连接到数据库,来检查数据库的参数配置是否符合要求或者最佳规范。连接到数据库的时候,CVU使用的是一个特定的用户cvusys(这个用户属于cvuapp角色),所以执行cvusys.sql的目的在于创建对应的角色,并赋予特定的查询权限,更详细请自行翻看sql脚本本身的内容。

Oracle在自己的产品中集成一个健康检查工具并不出乎我的意料,因为在之前的版本中遇到的问题有太多的是由于用户安装或者配置不合理导致的。虽然在Oracle安装文档中一再提到需要使用CVU对安装的前后进行各种检查,实际中真正每一步都按照规范来检查的人并不多。 而设计这么一个工具的真正目的我想并非是用来对数据库系统进行巡检, 而只是其安装完成后对配置的检查,确保数据库被“正确”安装。


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *