Home > Database > Mysql Tutorial > Oracle 11g Health Monitor健康监控

Oracle 11g Health Monitor健康监控

WBOY
Release: 2016-06-07 16:49:46
Original
989 people have browsed it

从oracle 11g开始,oracle数据库包含对数据库运行诊断检查的健康监控框架,health check健康检查是对数据库的各层和组件乾地检查.

health monitor健康监控

从Oracle 11g开始,oracle数据库包含对数据库运行诊断检查的健康监控框架

health check健康检查是对数据库的各层和组件乾地检查.健康检查会检测文件错误,物理和逻辑块错误,undo和redo错误,数据字典错误等等.健康检查会生成一个检查报告在许多情况下包含了问题解决的建议.健康检查有两种运行方式:
 .reactive---故障诊断架构为了响应一个严重错误会自动运行健康检查.

.manual-----作为一个dba,可以使用dbms_hm包或企业管理器接口来手工运行健康检查.

健康检查会存储调查结果,建议并在ADR中存储其它的信息

健康检查能以以下两种方式来运行:
 DB-online模式意味着当数据库处于打开状态(open或mount)时可以运行健康检查

DB-offline模式意味着当实例不可用且数据库处于关闭状态(nomount)时也能运行健康检查

所有的健康检查都能在DB-online模式下运行.只有重做日志完整性检查和数据库结构完整检查可以在DB-offline模式下运行.

健康检查的类型
 健康监控运行以下检查:
 DB Structure Integrity Check(数据库结构完整性检查)--这种检查验证数据文件的完整性,如果这些文件不能访问,文件错误
 或者不一致时会报告这些错误信息.如果数据库在mount或者open状态,这种检查会检查控制文件中所列出的重做日志文件和数据文件.如果数据库在nomount状态,只会检查控制文件.
 
Data Block Integrity Check(数据块完整性检查)--这种检查会检查磁盘镜像块错误比如checksum故障,head/tail mismatch和数据块的逻辑不一致性.大多数的错误可以通过使用block media recovery来进行修复.错误块信息也会被v$database_block_corruption视图所捕获.这种检查不会检测inter-block或inter-segment错误.
 
Redo Integrity Check(重做完整性检查)--这种检查将会扫描重做日志内容的可访问性和错误信息,也能对归档日志文件进行检查.
 这种检查会报告归档日志或重做日志的错误信息.

Undo Segment Integrity Check(回滚段完整性检查)--这种检查会发现逻辑undo错误.在定位一个undo错误之后,这种检查将使用PMON和SMON来尝试恢复这个错误事务.如果恢复失败,health monitor将会存储关于这个错误的信息到v$corrupt_xid_list中.大多数undo错误都可以通过强制提交来解决.
 
Transaction Interity 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$,ecol$.

--------------------------------------分割线 --------------------------------------

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

--------------------------------------分割线 --------------------------------------
 
手工运行health check
 健康监控提供了两种方式来手工运行健康检查:
 .使用dbms_hm包

.使用企业管理器接口

使用dbms_hm来运行健康检查
 dbms_hm包中有一个run_check过程用来运行健康检查.为了调用run_check需要提供检查的名称和运行的名字比如:
SQL> exec dbms_hm.run_check('Dictionary Integrity Check','jy_dict_run');

PL/SQL procedure successfully completed.
 
为了获得一个健康检查名称列表执行以下查询:
SQL> select name from v$hm_check where internal_check='N';
NAME
----------------------------------------------------------------
DB Structure Integrity Check

CF Block Integrity Check

Data Block Integrity Check

Redo Integrity Check

Transaction Integrity Check

Undo Segment Integrity Check

Dictionary Integrity Check

ASM Allocation Check
 
大多数的健康检查接受输入参数.可以通过查询v$hm_check_param来查看参数名和描述.一些参数是强制性的其它的是可选的.
 如果一个可选参数被忽略将会使用缺省值.下面的查询将会显示所有健康检查的参数信息:
SQL> SELECT c.name check_name, p.name parameter_name, p.type,
  2  p.default_value, p.description
  3  FROM v$hm_check_param p, v$hm_check c
  4  WHERE p.check_id = c.id and c.internal_check = 'N'
  5  ORDER BY c.name;

CHECK_NAME                      PARAMETER_NAME      TYPE                DEFAULT_VALUE    DESCRIPTION
-------------------------------- -------------------- -------------------- ---------------- ------------------------------
ASM Allocation Check            ASM_DISK_GRP_NAME    DBKH_PARAM_TEXT                      ASM 组名
CF Block Integrity Check        CF_BL_NUM            DBKH_PARAM_UB4                        控制文件块号
Data Block Integrity Check      BLC_DF_NUM          DBKH_PARAM_UB4                        文件号
Data Block Integrity Check      BLC_BL_NUM          DBKH_PARAM_UB4                        块号
Dictionary Integrity Check      CHECK_MASK          DBKH_PARAM_TEXT      ALL              检查掩码
Dictionary Integrity Check      TABLE_NAME          DBKH_PARAM_TEXT      ALL_CORE_TABLES  表名
Redo Integrity Check            SCN_TEXT            DBKH_PARAM_TEXT      0                最新良好重做的 SCN (如果已知)
Transaction Integrity Check      TXN_ID              DBKH_PARAM_TEXT                      事务处理 ID
Undo Segment Integrity Check    USN_NUMBER          DBKH_PARAM_TEXT                      还原段号
 
输入参数通过input_params参数以name/value对用分号来分隔进行传递.下面的例子用事务ID作为参数进行事务完整性检查:
SQL>BEGIN
DBMS_HM.RUN_CHECK (
check_name => 'Transaction Integrity Check',
run_name => 'my_trans_run',
input_params => 'TXN_ID=8.31.4');
END;
/

PL/SQL procedure successfully completed.

更多详情见请继续阅读下一页的精彩内容:

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template