Oracle 11g Health Monitor

Oracle 11g中引入了Health Monitor,用于多数据库进行全方面的诊断性检查,并生成报告。检查的内容包括:

● DB Structure Integrity Check—验证数据库文件完整性并报告不能正常访问、损坏或不一致的文件。如果数据库处于mount或open的状态,该项检查会根据控制文件中的信息检查日志文件和数据文件。如果数据库处于NOMOUNT模式,只有控制文件会被检查。
● Data Block Integrity Check—验证数据块校验和失败、块头/块尾不匹配、块内逻辑不一致等数据块错误。大部分该类错误可以用Block Media Recovery来修复。 损坏的数据块的信息也保存在V$DATABASE_BLOCK_CORRUPTION视图中。该项检查不会检查块间(比如行链接、行迁移)和段间的错误。
● Redo Integrity Check—检查在线redo日志和归档日志内容的错误。
● Undo Segment Integrity Check—该项检查找到逻辑undo的损坏。在定位到一个undo错误后,该检查试图使用PMON和SMON进程来修复UNDO中的错误事务信息。如果该恢复失败,那么Health Monitor会在V$CORRUPT_XID_LIST中保存存储错误的信息。多大数的undo错误可以用强制提交来解决。
● Transaction Integrity Check—该项检查和Undo Segment Integrity Check类似,只不是它值检查特定的事务。
● Dictionary Integrity Check—验证数据字典对象信息的完整性。例如tab$, col$等。它使用下面的操作来进行:
对于每一个数据字典对象,验证其词目信息。
执行一个cross-row级的检查, 以验证字典中的行逻辑约束是否生效。
执行一个对象挂历检查,以验证数据字典对象中的父表-子表的关系是否生效。
Dictionary Integrity Check会检查下面的数据字典对象:
tab$, clu$, fet$, uet$, seg$, undo$, ts$, file$, obj$, ind$, icol$, col$, user$, con$, cdef$, ccol$, bootstrap$, objauth$, ugroup$, tsq$, syn$, view$,typed_view$, superobj$, seq$, lob$, coltype$, subcoltype$, ntab$, refcon$, opqtype$, dependency$, access$, viewcon$, icoldep$, dual$, sysauth$, objpriv$,defrole$, and ecol$.
HM健康检查以两种模式运行,online模式下可以获得更多的信息:
DB-online 指的是当数据库处于open或者mount状态时的检查。
DB-offline 指的是当数据库处于NOMOUNT状态时的检查。

使用DBMS_HW包来运行Health Checks

(1). RUN_CHECK

这个过程运行一个特定的检查器,用户需要指定一个检查项(check_name)、用于标识报告的执行实体名称(run_time)、最大超时时间(单位秒,如果超过了最大时间则终止这项检查;如果该参数为空,则不限制超时)和检查器的参数。其中检查器的参数可以在 v$hm_check_param视图中获得,例如我们找到Data Block Integrity Check的参数:

那么,input_params => ‘BLC_DF_NUM=1;BLC_BL_NUM=23456′ 来检查指定的对象。
过程的定义如下:

(2). get_run_report

使用get_run_report方法来获得某个run_name的HM报告。报告的类型可以为HTML,XML或者文本,默认为文本。如果需要在cloud control中查看报告,需要设置报告为HTML模式。而如果需要在ADRCI中查看报告则需要XML格式。
详细等级可以为basic或detail。该过程最后返回一个CLOB对象的报告。

下面进行一个数据库物理结构的检查:

直接查看文本报告:

(3). 在ADRCI中创建并查看报告:

首先找到检查器的运行实体(在V$HM_RUN中可以查到)

— 创建一个报告

— 查看报告
adrci> show report hm_run my_run

(4). 在cloud control中创建检查器运行实体并查看报告

Database Home page -> Performance menu -> Advisors Home -> Checker tab
hm-cc-1
点击某个检查器并运行
hm-cc-2
运行完成后,运行结果 -> 详细资料 -> 查看报告:
hm-cc-4
hm-cc-3

^^
参考:
Oracle® Database PL/SQL Packages and Types Reference 11g Release 2 (11.2) http://docs.oracle.com/cd/E11882_01/server.112/e25494/diag.htm#ADMIN11270
Oracle® Database Administrator’s Guide 11g Release 2 (11.2) http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_hm.htm#ARPLS144

Posted in Oracle.