共计 7391 个字符,预计需要花费 19 分钟才能阅读完成。
ORAchk 概述
ORAchk 是 Oracle 官方出品的 Oracle 产品健康检查工具,可以从 MOS(My Oracle Support)网站上下载,免费使用。这个工具可以检查 Oracle 数据库,GoldenGate,Oracle Enterprise Manager 12c、13c 等 Oracle 产品,具体支持的产品和相关资料可以参考 MOS 文档:ORAchk – Health Checks for the Oracle Stack (Doc ID 1268927.2)。
ORAchk 支持所有主流平台,当然,对有些平台的支持并不是很完美,比如,对 windows 平台的支持是限定版本,而且需要安装 Cygwin 这样的软件。最新版本的 ORAchk 对 Oracle 数据库的版本支持是:10gR2,11gR1,11gR2,12cR1,12cR2。
ORAchk 是一个命令行工具,运行后收集系统配置信息,同时按照预定义的规则,评估配置是否符合 Oracle 的最佳实践,评估结果输出为一份 html 格式的健康检查报告,报告中会有所有检查项的细节数据,以及根据规则给被检查系统的一个综合评分。虽然这个评分规则比较“简单粗暴”,(所有检查项的分值都一样),但这个分数还是有一定意义的,起码给领导或甲方看的时候,可以给出一个量化指标了,而且可以在不同的系统之间,或不同时间的同一个系统之间进行比较。
ORAchk 执行及报告样例
(ORAchk 目前最新的版本是 12.2.0.1.1,后续的例子里都是这个版本)
ORAchk 的执行比较简单,下载软件包(链接在上面提到的 MOS 文档中),上传到服务器,解压缩,然后直接以 root 身份执行 orachk,也可以用 oracle 软件安装用户执行,在运行时会提问 root 口令,也可以选择使用 sudo 或者略过需要使用 root 身份的检查。
以检查一套 linux 平台上的 oracle 11.2.0.4 RAC 为例:
ORAchk 会自动识别 CRS HOME,请用户确认(当然,检查单实例就没有这个问题了),还会提问是检查集群中的哪个数据库。因为 RAC 的所有实例的主机都会执行检查,如果以前没有配置过 root 用户的用户等效性,还会自动帮你配置,也都比较简单,跟着提示做就可以。检查完成后,会生成一个打包文件,里面包含最终的 html 格式的报告,以及相关的细节数据,报告的例子:
以上面的检查为例,报告分 5 部分。Database Server 章节主要是 OS,ASM 和数据据的检查项,我们只要关注 fail 和 warning 的检查项就可以了:
可以点击“view”,查看检查项的具体细节:
Patch Recommendation 是补丁建议:
Cluster Wide 的检查主要是检查 RAC 节点之间的配置是否一致,比如时间、目录属主之类的
MAA 记分卡主要是检查系统是否符合 Oracle 推荐的最大可用性架构:(什么是最大可用性架构,不是本文的重点)
另外最耗时的 10 个检查什么的,我觉得没什么意义。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2016-12/138470p2.htm
ORAchk 以后台进程的方式定时运行
ORAchk 可以配置成以后台进程模式,按照用户定义的时间间隔,自动运行,同时把结果通过 email 的方式发送给用户。
Daemon Mode 配置方法
1. 配置 orachk
使用 orachk 设置自动运行参数,有两个参数是必须设置的:AUTORUN_SCHEDULE 和 NOTIFICATION_EMAIL,设置的例子:
# ./orachk –set“AUTORUN_SCHEDULE=3 * * 0 ;NOTIFICATION_EMAIL=raobing@hthorizon.com”
其中 AUTORUN_SCHEDULE 是运行的时间,含义是:AUTORUN_SCHEDULE=hour day month day_of_week
用 * 代表所有值,比如上面例子中“3 * * 0”代表每个星期天的 3 点执行(0 代表星期天,6 代表星期六)
NOTIFICATION_EMAIL 参数的值就是接受报告的邮箱地址。
2. 启动后台进程
# ./orachk –d start
这种模式需要工具 expect 来处理 root 口令,避免多次交互输入口令,这个工具的下载地址:http://expect.sourceforge.net/
Expect 安装是源码安装,在 linux 平台上,需要 tcl-devel 这个 rpm 包,安装 expect 和 tcl-devel 包的过程略。
邮件相关配置
ORAchk 支持使用 mailx 和 sendmail 两种方式发送邮件,为了外部邮箱能够收到邮件,我使用了 mailx 的方式,在我的测试机上,安装的是 Oracle Linux 6.5,系统自带 mailx 12.4,为了保证能够让 ORAchk 使用 mailx,需要保证系统上安装了 uuencode,sharutils rpm 包里面有这个工具。
另外,在 /etc/mail.rc,增加下列配置行,主要是目前大部分外部 smtp 服务器都是需要认证才能发邮件,所以要给出认证信息:
如果一切正常,在 orachk 目录下的 orachk_daemon.log 会有类似的字样:
邮件样例
第一次的邮件报告就是一份 html 格式的报告,后续的报告会包含上一次的报告和本次报告,以及两份报告的不同之处。
Collection Manager
ORAchk 的软件包里面还提供了一个 web 应用,用于管理健康检查的结果,应用的名字叫 Collection Manager(CM),在这个应用中,一次检查被称为一个 Collection。
CM 是一个 Oracle APEX 应用,Oracle APEX 显然不是这篇文章讨论的问题,关于 APEX 的介绍及安装部署会在其他文章介绍。
CM 在导入 APEX 后,运行应用,登录的界面是这个样子的:
在系统中应用包含两个样例 Collection,是在一个 sample 系统上运行的 2 次检查。可以很直观地看到最新一次的检查,FAIL 的检查项 31%,WARNING 的检查项 31%,PASS 的检查项 38%。
我们把我们实际的 Collection 上传两个:
直接上传 zip 包,系统会自动在后台解压缩并处理,需要花几分钟时间。
查看我们上传的两个不同系统的 Collection:
点击图表,可以转到具体信息页面,比如我们点击 4% 的红色区域,会转向这个页面,除了能查看具体的检查项信息外,还可以针对问题创建 Ticket:
CM 应用中应该算是自带了一个事件管理系统,可以将检查后发现的配置缺陷,当作一个事件,通过 CM 中的事件管理功能,进行追踪管理:
另外这个应用还可以进行不同 Collection 的比较,也很方便。
从这个应用的内容看,官方希望的系统健康检查流程应该是这样的:
1. 客户自助或服务商现场工程师运行 orachk,生成 Collection
2. 上传 Collection 到 CM 应用,CM 是部署在云(公有或私有)上的
3. 客户登录系统查看、管理自己系统的检查报告,不再需要服务人员提供检查结果
4. 检查出的问题可以使用 CM 应用来进行跟踪管理
其实要真能这样也不错,但是个人觉得目前可能实现起来还有一些障碍:
1. Orachk 和 CM 系统都没有中文版,估计还得有服务商翻译,可能最后还是要转变成传统的交付物。
2. Orachk 目前检查的内容还不能算全面,比如性能方面的数据
ORAchk 概述
ORAchk 是 Oracle 官方出品的 Oracle 产品健康检查工具,可以从 MOS(My Oracle Support)网站上下载,免费使用。这个工具可以检查 Oracle 数据库,GoldenGate,Oracle Enterprise Manager 12c、13c 等 Oracle 产品,具体支持的产品和相关资料可以参考 MOS 文档:ORAchk – Health Checks for the Oracle Stack (Doc ID 1268927.2)。
ORAchk 支持所有主流平台,当然,对有些平台的支持并不是很完美,比如,对 windows 平台的支持是限定版本,而且需要安装 Cygwin 这样的软件。最新版本的 ORAchk 对 Oracle 数据库的版本支持是:10gR2,11gR1,11gR2,12cR1,12cR2。
ORAchk 是一个命令行工具,运行后收集系统配置信息,同时按照预定义的规则,评估配置是否符合 Oracle 的最佳实践,评估结果输出为一份 html 格式的健康检查报告,报告中会有所有检查项的细节数据,以及根据规则给被检查系统的一个综合评分。虽然这个评分规则比较“简单粗暴”,(所有检查项的分值都一样),但这个分数还是有一定意义的,起码给领导或甲方看的时候,可以给出一个量化指标了,而且可以在不同的系统之间,或不同时间的同一个系统之间进行比较。
ORAchk 执行及报告样例
(ORAchk 目前最新的版本是 12.2.0.1.1,后续的例子里都是这个版本)
ORAchk 的执行比较简单,下载软件包(链接在上面提到的 MOS 文档中),上传到服务器,解压缩,然后直接以 root 身份执行 orachk,也可以用 oracle 软件安装用户执行,在运行时会提问 root 口令,也可以选择使用 sudo 或者略过需要使用 root 身份的检查。
以检查一套 linux 平台上的 oracle 11.2.0.4 RAC 为例:
ORAchk 会自动识别 CRS HOME,请用户确认(当然,检查单实例就没有这个问题了),还会提问是检查集群中的哪个数据库。因为 RAC 的所有实例的主机都会执行检查,如果以前没有配置过 root 用户的用户等效性,还会自动帮你配置,也都比较简单,跟着提示做就可以。检查完成后,会生成一个打包文件,里面包含最终的 html 格式的报告,以及相关的细节数据,报告的例子:
以上面的检查为例,报告分 5 部分。Database Server 章节主要是 OS,ASM 和数据据的检查项,我们只要关注 fail 和 warning 的检查项就可以了:
可以点击“view”,查看检查项的具体细节:
Patch Recommendation 是补丁建议:
Cluster Wide 的检查主要是检查 RAC 节点之间的配置是否一致,比如时间、目录属主之类的
MAA 记分卡主要是检查系统是否符合 Oracle 推荐的最大可用性架构:(什么是最大可用性架构,不是本文的重点)
另外最耗时的 10 个检查什么的,我觉得没什么意义。
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2016-12/138470p2.htm
使用自定义检查项
ORAchk 支持自定义检查项,用户只要按照一定的规则,创建对应的 XML 配置文件,就可以让 ORAchk 进行自定义检查。
ORAchk 的软件包里面提供了一个 sample_user_defined_checks.xml,给出了几个例子,而且有详细的注释,只要按照这个规则,生成 user_defined_checks.xml,放在 orachk 所在的目录,就可以让 orachk 进行自定义检查了。自定义检查项目前支持两种类型:OS 命令和 SQL 语句。下面我看一个 SQL 语句的自定义检查:
这个检查返回空闲空间比例小于 10% 的表空间的个数,为 0 是检查通过,不为 0 是 FAIL。
<?xml version=”1.0″ encoding=”UTF-8″?>
<UserDefinedChecks
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation=”user_defined_checks.xsd”> <!– Main Tag (root element)–>
<CHECK AUDIT_CHECK_NAME=”Tablespace Utilization”>
<!– This check should run on all supported platforms and versions given the platform and version specs below –>
<Oracle_VERSION>*</ORACLE_VERSION>
<PLATFORMS>
<PLATFORM TYPE=”*”>
<FLAVOR>*</FLAVOR>
</PLATFORM>
</PLATFORMS>
<PARAM_PATH>tbs_ut</PARAM_PATH> <!—注意这里参数值需要和 SQL_COMMAND 中的返回字符串匹配 –>
<SQL_COMMAND> <!—这个 SQL 返回空闲空间比例小于 10 的表空间的个数 –>
<![CDATA[ select ‘tbs_ut = ‘||count(*) from (select a.tablespace_name,
trunc(sum(a.tots) / 1024 / 1024, 2) Tot_Size_mb,
round(sum(a.sumb) / 1024 / 1024, 2) Tot_Free_mb,
round(sum(a.sumb) * 100 / sum(a.tots), 2) Pct_Free,
round(sum(a.largest) / 1024 / 1024, 2) Max_Free_mb,
sum(a.chunks) Chunks_Free
from (select tablespace_name,
0 tots,
sum(bytes) sumb,
max(bytes) largest,
count(*) chunks
from dba_free_space a
group by tablespace_name
union
select tablespace_name, sum(bytes) tots, 0, 0, 0
from dba_data_files
group by tablespace_name) a
group by a.tablespace_name)
where PCT_FREE < 10;]]> <!—注意大于号,小于号,等号都需要替换为 XML 能够处理的字符 –>
</SQL_COMMAND>
<SQL_COMMAND_REPORT>
<![CDATA[select ‘Free PCT less 10% TBS = ‘||count(*) from (select a.tablespace_name,
trunc(sum(a.tots) / 1024 / 1024, 2) Tot_Size_mb,
round(sum(a.sumb) / 1024 / 1024, 2) Tot_Free_mb,
round(sum(a.sumb) * 100 / sum(a.tots), 2) Pct_Free,
round(sum(a.largest) / 1024 / 1024, 2) Max_Free_mb,
sum(a.chunks) Chunks_Free
from (select tablespace_name,
0 tots,
sum(bytes) sumb,
max(bytes) largest,
count(*) chunks
from dba_free_space a
group by tablespace_name
union
select tablespace_name, sum(bytes) tots, 0, 0, 0
from dba_data_files
group by tablespace_name) a
group by a.tablespace_name)
where PCT_FREE < 10;]]>
</SQL_COMMAND_REPORT>
<OPERATOR>=</OPERATOR>
<COMPARE_VALUE>0</COMPARE_VALUE> <!—操作符是等号,比较值是 0,也就是说 SQL 返回 0,代表 pass,否则 fail–>
<CANDIDATE_SYSTEMS>*</CANDIDATE_SYSTEMS>
<COMPONENT_DEPENDENCY>RDBMS</COMPONENT_DEPENDENCY>
<DATABASE_MODE>3</DATABASE_MODE> <!— 3 代表 open,2 代表 mount,1 代表 nomount–>
<DATABASE_TYPE>CDB:PDB:NORMAL</DATABASE_TYPE>
<DATABASE_ROLE>PRIMARY</DATABASE_ROLE>
<ALERT_LEVEL>FAIL</ALERT_LEVEL>
<PASS_MSG>The number of Tablespaces which free PCT less 10% is zero</PASS_MSG>
<FAIL_MSG>The number of Tablespaces which free PCT less 10% is not zero</FAIL_MSG>
<BENEFIT_IMPACT>
<![CDATA[ tablespace free pct should be more than 10%]]>
</BENEFIT_IMPACT>
<RISK>
<![CDATA[ leak of space]]>
</RISK>
<ACTION_REPAIR>
<![CDATA[ add datafile or resize datafile]]>
</ACTION_REPAIR>
<LINKS>
<LINK></LINK>
</LINKS>
</CHECK>
<!– END USER DEFINED CHECKS –>
</UserDefinedChecks>
自定义检查项,可以和其他检查项一起执行,也可以单独执行,单独执行自定义检查项的语法是:
# ./orachk –profile user_defined_checks
下面是自定义检查项报告样例:
如果你觉得这样写 XML 麻烦,还可以使用 CM 应用来生成自定义检查项的 XML 文件,菜单路径:Administration ->“+ Add New User Defined Checks”
定义好后,可以生成 XML 文件并下载:
不过这个功能并不完善,缺乏必要得有效性检查,如果想不出错,还是要把 XML 得规则搞清楚,我个人还是比较喜欢手工写 XML。
更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-12/138470.htm