您好,欢迎访问一九零五行业门户网

Oracle 11g Health Monitor健康监控

从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.
更多详情见请继续阅读下一页的精彩内容:

其它类似信息

推荐信息