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身份的检查。
Patch Recommendation 是补丁建议:
请点击此处输入图片描述
请点击此处输入图片描述
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会有类似的字样:
邮件样例
Collection Manager
CM是一个Oracle APEX应用,Oracle APEX显然不是这篇文章讨论的问题,关于APEX的介绍及安装部署会在其他文章介绍。
请点击此处输入图片描述
请点击此处输入图片描述
查看我们上传的两个不同系统的Collection:
请点击此处输入图片描述
请点击此处输入图片描述
另外这个应用还可以进行不同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
如果你觉得这样写XML麻烦,还可以使用CM应用来生成自定义检查项的XML文件,菜单路径:Administration -> “+ Add New User Defined Checks”
请点击此处输入图片描述
不过这个功能并不完善,缺乏必要得有效性检查,如果想不出错,还是要把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 产品、操作系统的支持是比较广泛的。如果配合自动执行功能,完全可以支持多数据库服务器的日常自动化巡检工作。