阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Oracle官方巡检工具ORAchk巡检数据库

161次阅读
没有评论

共计 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 为例:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

ORAchk 会自动识别 CRS HOME,请用户确认(当然,检查单实例就没有这个问题了),还会提问是检查集群中的哪个数据库。因为 RAC 的所有实例的主机都会执行检查,如果以前没有配置过 root 用户的用户等效性,还会自动帮你配置,也都比较简单,跟着提示做就可以。检查完成后,会生成一个打包文件,里面包含最终的 html 格式的报告,以及相关的细节数据,报告的例子:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

以上面的检查为例,报告分 5 部分。Database Server 章节主要是 OS,ASM 和数据据的检查项,我们只要关注 fail 和 warning 的检查项就可以了:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

可以点击“view”,查看检查项的具体细节:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

Patch Recommendation 是补丁建议:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

Cluster Wide 的检查主要是检查 RAC 节点之间的配置是否一致,比如时间、目录属主之类的

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

MAA 记分卡主要是检查系统是否符合 Oracle 推荐的最大可用性架构:(什么是最大可用性架构,不是本文的重点)

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

另外最耗时的 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 服务器都是需要认证才能发邮件,所以要给出认证信息:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

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

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

邮件样例

第一次的邮件报告就是一份 html 格式的报告,后续的报告会包含上一次的报告和本次报告,以及两份报告的不同之处。

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

Collection Manager

ORAchk 的软件包里面还提供了一个 web 应用,用于管理健康检查的结果,应用的名字叫 Collection Manager(CM),在这个应用中,一次检查被称为一个 Collection。

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

CM 在导入 APEX 后,运行应用,登录的界面是这个样子的:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

在系统中应用包含两个样例 Collection,是在一个 sample 系统上运行的 2 次检查。可以很直观地看到最新一次的检查,FAIL 的检查项 31%,WARNING 的检查项 31%,PASS 的检查项 38%。

我们把我们实际的 Collection 上传两个:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

直接上传 zip 包,系统会自动在后台解压缩并处理,需要花几分钟时间。

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

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

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

点击图表,可以转到具体信息页面,比如我们点击 4% 的红色区域,会转向这个页面,除了能查看具体的检查项信息外,还可以针对问题创建 Ticket:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

CM 应用中应该算是自带了一个事件管理系统,可以将检查后发现的配置缺陷,当作一个事件,通过 CM 中的事件管理功能,进行追踪管理:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

另外这个应用还可以进行不同 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 为例:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

ORAchk 会自动识别 CRS HOME,请用户确认(当然,检查单实例就没有这个问题了),还会提问是检查集群中的哪个数据库。因为 RAC 的所有实例的主机都会执行检查,如果以前没有配置过 root 用户的用户等效性,还会自动帮你配置,也都比较简单,跟着提示做就可以。检查完成后,会生成一个打包文件,里面包含最终的 html 格式的报告,以及相关的细节数据,报告的例子:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

以上面的检查为例,报告分 5 部分。Database Server 章节主要是 OS,ASM 和数据据的检查项,我们只要关注 fail 和 warning 的检查项就可以了:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

可以点击“view”,查看检查项的具体细节:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

Patch Recommendation 是补丁建议:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

Cluster Wide 的检查主要是检查 RAC 节点之间的配置是否一致,比如时间、目录属主之类的

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

MAA 记分卡主要是检查系统是否符合 Oracle 推荐的最大可用性架构:(什么是最大可用性架构,不是本文的重点)

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

另外最耗时的 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 &lt; 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 &lt; 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

下面是自定义检查项报告样例:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

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

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

定义好后,可以生成 XML 文件并下载:

使用 Oracle 官方巡检工具 ORAchk 巡检数据库

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

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-12/138470.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计7391字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中