ORAchk-数据库健康检查

ORAchk-数据库健康检查


oracle 12.2.0.1已经内置该工具。路径为:$ORACLE_HOME/suptools


数据库环境部署完成之后,进入到$ORACLE_HOME/suptools/orachk目录下,用oracle

用户执行命令:./oracheck


ORAchk概述

ORAchk支持所有主流平台,当然,对有些平台的支持并不是很完美,比如,对windows平台的支持是限定版本,而且需要安装Cygwin这样的软件。最新版本的ORAchk对Oracle数据库的版本支持是:    10gR2,11gR1,11gR2,12cR1,12cR2   。  

ORAchk执行及报告样例

ORAchk的执行比较简单,下载软件包(链接在上面提到的MOS文档中),上传到服务器,解压缩,然后直接以root身份执行orachk,也可以用oracle软件安装用户执行,在运行时会提问root口令,也可以选择使用sudo或者略过需要使用root身份的检查。

ORAchk-数据库健康检查

ORAchk-数据库健康检查

Patch Recommendation 是补丁建议:

ORAchk-数据库健康检查

ORAchk-数据库健康检查

请点击此处输入图片描述

ORAchk-数据库健康检查

请点击此处输入图片描述

ORAchk可以配置成以后台进程模式,按照用户定义的时间间隔,自动运行,同时把结果通过email的方式发送给用户。

1. 配置orachk

# ./orachk –set “AUTORUN_SCHEDULE=3 * * 0 ;NOTIFICATION_EMAIL=raobing@hthorizon.com”

用*代表所有值,比如上面例子中“3 * * 0” 代表每个星期天的3点执行(  0代表星期天,6代表星期六 )

2. 启动后台进程

这种模式需要工具expect来处理root口令,避免多次交互输入口令,这个工具的下载地址:http://expect.sourceforge.net/

邮件相关配置

另外,在/etc/mail.rc,增加下列配置行,主要是目前大部分外部smtp服务器都是需要认证才能发邮件,所以要给出认证信息:

如果一切正常,在orachk目录下的orachk_daemon.log会有类似的字样:

ORAchk-数据库健康检查

邮件样例

ORAchk-数据库健康检查

Collection Manager

CM是一个Oracle APEX应用,Oracle APEX显然不是这篇文章讨论的问题,关于APEX的介绍及安装部署会在其他文章介绍。

ORAchk-数据库健康检查

请点击此处输入图片描述

ORAchk-数据库健康检查

请点击此处输入图片描述

查看我们上传的两个不同系统的Collection:

ORAchk-数据库健康检查

请点击此处输入图片描述

请点击此处输入图片描述

ORAchk-数据库健康检查

另外这个应用还可以进行不同Collection的比较,也很方便。


  • 客户自助或服务商现场工程师运行orachk,生成Collection。

  • 上传Collection到CM应用,CM是部署在云(公有或私有)上的。

  • 客户登录系统查看、管理自己系统的检查报告,不再需要服务人员提供检查结果。

  • 检查出的问题可以使用CM应用来进行跟踪管理。


Orachk和CM系统都没有中文版,估计还得有服务商翻译,可能最后还是要转变成传统的交付物。

Orachk目前检查的内容还不能算全面,比如性能方面的数据。


ORAchk支持自定义检查项,用户只要安装一定的规则,创建对应的XML配置文件,就可以让ORAchk进行自定义检查。

这个检查返回空闲空间比例小于10%的表空间的个数,  为0是检查通过,不为0是FAIL。

<userdefinedchecks </userdefinedchecks<>

xsi:noNamespaceSchemaLocation="user_defined_checks.xsd">

                          *

           trunc(sum(a.tots) / 1024 / 1024, 2) Tot_Size_mb,

           round(sum(a.sumb) * 100 / sum(a.tots), 2) Pct_Free,

           sum(a.chunks) Chunks_Free

                   0 tots,

                   max(bytes) largest,

              from dba_free_space a

            union

              from dba_data_files

     group by a.tablespace_name)

               

                        <!--[CDATA[select 'Free PCT less 10% TBS = '||count(*) from (select a.tablespace_name,

           round(sum(a.sumb) / 1024 / 1024, 2) Tot_Free_mb,

           round(sum(a.largest) / 1024 / 1024, 2) Max_Free_mb,

      from (select tablespace_name,

                   sum(bytes) sumb,

                   count(*) chunks

             group by tablespace_name

            select tablespace_name, sum(bytes) tots, 0, 0, 0

             group by tablespace_name) a

 where PCT_FREE < 10;]]>

                =

                *

                3            

                PRIMARY

                The number of Tablespaces which free PCT less 10% is zero

               

               

                     

               

               

                       

       

# ./orachk –profile user_defined_checks

ORAchk-数据库健康检查

如果你觉得这样写XML麻烦,还可以使用CM应用来生成自定义检查项的XML文件,菜单路径:Administration -> “+ Add New User Defined Checks”

请点击此处输入图片描述

ORAchk-数据库健康检查

不过这个功能并不完善,缺乏必要得有效性检查,如果想不出错,还是要把XML得规则搞清楚,我个人还是比较喜欢手工写XML。




  使用oracheck进行系统巡检  

                                 
日常数据库巡检,是运维人员经常需要完成的工作之一。对应复杂的软硬件和系统环境,以及越来越多的系统数目,常规手段进行一次巡检的成本压力越来越大。综合性的巡检方面,自动化的执行和信息收集,才是未来巡检的一个发展方向。  
Oracle Support  内部的研发机构,会推出很多有用的小工具来辅助我们日常巡检诊断工具,比如 OSWatcher  、 RDA  、 oratop  。这些工具都从一定程度上解决了我们在使用 Oracle  数据库过程中遇到的管理和调优需求。本篇主要介绍 oracheck  ,借助 orachk  ,我们可以快速的进行系统巡检和故障排除。  
 
1   、从  raccheck   到  oracheck
 
oracheck  来源于 Oracle  为 RAC  环境准备的工具 raccheck  。最早的 raccheck  是用于自动化 Oracle RAC  环境巡检而开发的,之后不断推出新的版本和功能。这些新功能中,最有意义的要属于 Oracle MAA  ( Oracle  最大可用性体系架构)的引入。 Oracle  会将 MAA  的最佳实践策略,融入到 raccheck  检查项目里面,给用户提供更加全面的巡检项目。  
目前, raccheck  已经正式改名为 oracheck  ,提供从单实例数据库实例到 RAC  、 OGG  等多个产品系列的巡检功能。  
 
2   、安装配置  
 
oracheck  是需要单独从 MOS  上下载的工具包。和其他 Oracle  产品不同, oracheck   更新速度非常快, 官方建议是  90   天就需要下载最新的  oracheck   版本。这样做的目的就是让用户可以获得最新的检查项目和建议,及时下载安装最新的安全补丁  。  
从 MOS  上下载的软件包很简单,就是一个 zip   包。上传到服务器上解压就可以使用。 注意:目前  oracheck   只支持  64bit   系统,在  32bit   下不能使用。  
创建专门目录,上传 zip  文件。  
 
[root@CRSimpleLinux /]# mkdir /orachk
[root@CRSimpleLinux /]# cd /orachk/
[root@CRSimpleLinux orachk]# ls -l
total 5120
-rw-r--r-- 1 root root 5241976 May 20 08:44 orachk_224_beta2.zip
 
解压安装包。  
 
[root@CRSimpleLinux orachk]#  unzip orachk_224_beta2.zip 
Archive:  orachk_224_beta2.zip
  inflating: orachk                  
   creating: .cgrep/
  inflating: .cgrep/lcgreps9         
  inflating: .cgrep/CollectionManager_App.sql  
  inflating: .cgrep/asrexacheck      
  inflating: .cgrep/utlusts.sql      
(篇幅原因,有省略 ……  )
 
检查脚本,是一系列的配置文件和 oracheck  执行文件。  
 
[root@CRSimpleLinux orachk]# ls -l
total 28072
-rw-rw-r-- 1 root root 21200391 Feb 11 03:50 collections.dat
-rwxr-xr-x 1 root root  1407669 Feb 14 03:23 orachk
-rwxr-xr-x 1 root root  1423197 Feb 11 03:50 raccheck
-rw-r--r-- 1 root root     2541 Feb 11 03:50 readme.txt
-rw-rw-r-- 1 root root  4700572 Feb 11 03:50 rules.dat
-rw-r--r-- 1 root root      296 Feb 11 03:50 UserGuide.txt
 
额外授权给 oracle  用户,另外修改权限 755  。  
 
[root@CRSimpleLinux /]#  chown -R oracle:oinstall orachk/
[root@CRSimpleLinux /]#  chmod -R 755 /orachk/
[root@CRSimpleLinux /]# cd /orachk/
[root@CRSimpleLinux orachk]# ls -l
total 28072
-rwxr-xr-x 1 oracle oinstall 21200391 Feb 11 03:50 collections.dat
-rwxr-xr-x 1 oracle oinstall  1407669 Feb 14 03:23 orachk
-rwxr-xr-x 1 oracle oinstall  1423197 Feb 11 03:50 raccheck
-rwxr-xr-x 1 oracle oinstall     2541 Feb 11 03:50 readme.txt
-rwxr-xr-x 1 oracle oinstall  4700572 Feb 11 03:50 rules.dat
-rwxr-xr-x 1 oracle oinstall      296 Feb 11 03:50 UserGuide.txt
 
 注意:在执行  oracheck   用户上,根据不同的情况可以选择  root   或者  oracle owner   对象。在一些检查项目中,是需要  root   权限进行操作的。一种比较推荐的方式是使用  owner   用户执行,在需要  root   权限的时候按照提示输入  root   密码。  
 
3   、  oracheck   使用  
 
oracheck  脚本有默认的行为方式,通过参数可以控制执行行为。例如 -v  可以显示版本信息。  
 
[oracle@CRSimpleLinux orachk]$ ./orachk -v
ORACHK  VERSION: 2.2.4(BETA)_20140210
 
通常情况下,使用默认的 profile  配置,就可以进行大部分检查项目。  
 
[oracle@CRSimpleLinux orachk]$ ./orachk -v
 
ORACHK  VERSION: 2.2.4(BETA)_20140210
[oracle@CRSimpleLinux orachk]$ ./orachk 
This computer is for [S]ingle instance database or part of a [C]luster to run RAC database [S|C] [C]:S
 
 
orachk did not find the RDBMS binaries on crsimplelinux from environment.
 
Please set RAT_ORACLE_HOME to ORACLE_HOME in current shell to override and re-run it.
eg export RAT_ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
 
默认配置环境变量中,要求 RAT_ORACLE_HOME  配置为 ORACLE_HOME  。  
 
[oracle@CRSimpleLinux orachk]$ export RAT_ORACLE_HOME=$ORACLE_HOME
[oracle@CRSimpleLinux orachk]$ env | grep RAT_ORACLE_HOME
RAT_ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
 
[oracle@CRSimpleLinux orachk]$ ./orachk 
This computer is for [S]ingle instance database or part of a [C]luster to run RAC database [S|C] [C]:S
 (篇幅原因,有省略  ……   )  
 
Data collections completed. Checking best practices on crsimplelinux.
--------------------------------------------------------------------------------------
(发现问题列表 ……  )  
 WARNING => net.core.wmem_max Is NOT Configured According to Recommendation
 WARNING => net.core.rmem_max Is NOT Configured According to Recommendation
 WARNING => The number of async IO descriptors is too low (/proc/sys/fs/aio-max-nr)
 WARNING => kernel.shmmax parameter is NOT configured according to recommendation
 WARNING => OSWatcher is not running as is recommended.
 INFO =>    Consider increasing the COREDUMPSIZE>
 
Best Practice checking completed.Checking recommended patches on crsimplelinux.
---------------------------------------------------------------------------------
              RDBMS homes patches summary report
---------------------------------------------------------------------------------
Total patches  Applied on RDBMS Applied on ASM ORACLE_HOME    
--------------------------------------------------------------------------------- 
Detailed report (html) - /orachk/orachk_crsimplelinux_052014_172942/orachk_crsimplelinux_052014_172942.html –   结果报告文件  
UPLOAD(if required) - /orachk/orachk_crsimplelinux_052014_172942.zip
 
在目录中,包括了一个 zip  文件和文件夹,包括了巡检结果报告。  
 
[oracle@CRSimpleLinux orachk]$ ls -l
total 28228
-rwxr-xr-x 1 oracle oinstall 21200391 Feb 11 03:50 collections.dat
-rwxr-xr-x 1 oracle oinstall  1407669 Feb 14 03:23 orachk
drwxr-xr-x 6 oracle oinstall    12288 May 20 17:30 orachk_crsimplelinux_052014_172942
-rw-r--r-- 1 oracle oinstall   145482 May 20 17:30 orachk_crsimplelinux_052014_172942.zip
-rwxr-xr-x 1 oracle oinstall  1423197 Feb 11 03:50 raccheck
-rwxr-xr-x 1 oracle oinstall     2541 Feb 11 03:50 readme.txt
-rwxr-xr-x 1 oracle oinstall  4700572 Feb 11 03:50 rules.dat
-rwxr-xr-x 1 oracle oinstall      296 Feb 11 03:50 UserGuide.txt
 
4   、报告解析  
 
打开 html  文件,可以看到报告。报告头是 oracheck  对于系统情况的一个评分,下面显示的是得到了 87  分。 summary  环节中包括了数据库基本信息情况。  
 
   
 
首先是对于数据库需要关注问题, oracheck  都给与特别的显示。在级别上,也有对应不同的类型。目前 oracheck  支持 fail  、 warning  、 error  和 info  几个类型。  
 
   
 
后面包括 Passed  的检查项目。对于提醒的问题内容,我们点击 Details  ,就可以跳转到详细信息部分进行解释检查。  
 
   
 
上面提示的内容比较清楚。这个错误是针对内核 kernal.shmmax  参数确定的。在 Oracle DBMS  中,配置这个参数的原则是按照物理内存一般大小进行配置就可以。检查中发现实际大小: 2147483648  ,建议大小是 4088072192  。并且提示了详细解析的 MOS  文章编号。  
oracheck  报告内容是结合了 Oracle  最佳实践内容而确定的,我们下面可以根据实际情况进行修改。  
 
5   、重新运行报告  
 
按照提示信息将问题修改之后(修改过程详见后续文章),最好重新运行 oracheck  判断问题是否解决。  
 
[oracle@CRSimpleLinux ~]$ cd /orachk/
[oracle@CRSimpleLinux orachk]$ export RAT_ORACLE_HOME=$ORACLE_HOME
[oracle@CRSimpleLinux orachk]$ ./orachk
This computer is for [S]ingle instance database or part of a [C]luster to run RAC database [S|C] [C]:
 
Collecting - Patches for RDBMS Home 
Collecting - number of semaphore operations per semop system call
 
 
Data collections completed. Checking best practices on crsimplelinux.
--------------------------------------------------------------------------------------
 WARNING => OSWatcher is not running as is recommended.
 INFO =>    Consider increasing the COREDUMPSIZE>
(篇幅原因,有省略 ……  )  
--------------------------------------------------------------------------------- 
Detailed report (html) - /orachk/orachk_crsimplelinux_052014_180024/orachk_crsimplelinux_052014_180024.html
UPLOAD(if required) - /orachk/orachk_crsimplelinux_052014_180024.zip
 
生成新的报告文件。  
 
[oracle@CRSimpleLinux orachk]$ ls -l
total 28380
-rwxr-xr-x 1 oracle oinstall 21200391 Feb 11 03:50 collections.dat
-rwxr-xr-x 1 oracle oinstall  1407669 Feb 14 03:23 orachk
drwxr-xr-x 6 oracle oinstall    12288 May 20 17:30 orachk_crsimplelinux_052014_172942
-rw-r--r-- 1 oracle oinstall   145482 May 20 17:30 orachk_crsimplelinux_052014_172942.zip
drwxr-xr-x 6 oracle oinstall    12288 May 20 18:01 orachk_crsimplelinux_052014_180024
-rw-r--r-- 1 oracle oinstall   143227 May 20 18:01 orachk_crsimplelinux_052014_180024.zip
-rwxr-xr-x 1 oracle oinstall  1423197 Feb 11 03:50 raccheck
-rwxr-xr-x 1 oracle oinstall     2541 Feb 11 03:50 readme.txt
 
打开报告,可以看到检验得分已经提升。  
 
   
 
6   、报告对比功能  
 
oracheck  另一项重要功能是报告对比。一个报告可以提供和之前报告情况的对比,及时发现问题变化因素。  
 
 
[oracle@CRSimpleLinux orachk]$  ./orachk -diff orachk_crsimplelinux_052014_172942 orachk_crsimplelinux_052014_180024
Summary 
Total   : 23
Missing : 0
New     : 0
Changed : 4
Same    : 19
File comparison is complete. The comparison report can be viewed in: /orachk/orachk_052014172942_052014180024_diff.html
 
报告文件中,可以看到对比情况和变化提示。  
 
   
 
7   、结论  
 
oracheck  来源于 raccheck  ,从使用方式和功能上没有过多的变化。 oracheck  对于 Oracle  产品、操作系统的支持是比较广泛的。如果配合自动执行功能,完全可以支持多数据库服务器的日常自动化巡检工作。 

上一篇:python中列表(list)和元组(tuple)该如何抉择?有什么区别?


下一篇:Shell编程案例:统计指定目录下指定文件大小的个数及总和