11g新特性:Health Monitor Checks
一、什么是Health Monitor Checks
Health Monitor Checks能够发现文件损坏,物理、逻辑块损坏,undo、redo损坏,数据字典损坏等等。
Health Monitor Checks产生结果报告,它包含了解决问题的办法。
-----
oracle另外一个坏块检查工具DBVERIFY 详见我的这篇文章:
Oracle坏块验证工具:DBVERIFY
http://blog.chinaunix.net/uid-23284114-id-3687810.html
-----
Health Monitor Checks有两种运行模式:只有redo检查需要在DB-offline模式下运行,其他检查都是在DB-online下。
?DB-online mode means the check can be run while the database is open (that is, in OPEN mode or MOUNT mode).
?DB-offline mode means the check can be run when the instance is available but the database itself is closed (that is, in NOMOUNT mode).
--可以手动检查的项目
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
--需要用到的程序包
DBMS_HM.RUN_CHECK (
check_name IN VARCHAR2, --检查的项目名,通过SELECT name FROM V$HM_CHECK WHERE INTERNAL_CHECK = 'N' 可以查到。
run_name IN VARCHAR2 := NULL, --用户自定义的该次运行检查的名称
timeout IN NUMBER := NULL, --超时时间。
input_params IN VARCHAR2 := NULL); --输入参数,多个参数用分号(;)隔开。具体制定检查项目。
--具体参数可以从V$HM_CHECK_PARAM视图中找到。
--例子,'BLC_DF_NUM=1;BLC_BL_NUM=23456'表示检查第1个数据文件的第23456个block。
--通过下面的SQL,可以找出检查项目对应的参数。
--找出Data Block Integrity Check项目对应的参数
SELECT a.* FROM v$hm_check_param a, v$hm_check b
WHERE a.check_id = b.id
AND b.name = 'Data Block Integrity Check';
二、手动运行Health Checks
1.数据字典完整性检查(Dictionary Integrity Check)
--执行检查
BEGIN
DBMS_HM.RUN_CHECK('Dictionary Integrity Check', 'run_dict1');
END;
/
--查看检查报告
SET LONG 100000
SET LONGCHUNKSIZE 1000
SET PAGESIZE 1000
SET LINESIZE 512
SELECT DBMS_HM.GET_RUN_REPORT('run_dict1') FROM DUAL;
DBMS_HM.GET_RUN_REPORT('RUN_DICT1')
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Finding
Finding Name : Dictionary Inconsistency
Finding ID : 336
Type : FAILURE
Status : OPEN
Priority : CRITICAL
Message : SQL dictionary health check: syn$.owner fk 95 on object SYN$
failed
Message : Damaged rowid is AAAABEAABAAANWhABE - description: Synonymn
APEX_THEMES is referenced
.........
.........
.........
Finding Name : Dictionary Inconsistency
Finding ID : 411
Type : FAILURE
Status : OPEN
Priority : CRITICAL
Message : SQL dictionary health check: syn$.owner fk 95 on object SYN$
failed
Message : Damaged rowid is AAAABEAABAAANWgAB6 - description: Synonymn
HTMLDB_ACTIVITY_LOG is referenced
2.检查数据块完整性(Data Block Integrity Check)
和数据字典完整性检查不同,数据块完整性需要指定input_params参数
<1>获得Data Block Integrity Check相关参数
SELECT a.* FROM v$hm_check_param a, v$hm_check b
WHERE a.check_id = b.id
AND b.name = 'Data Block Integrity Check';
ID NAME CHECK_ID TYPE DEFAU FLAGS DESCRIPTION
---------- ---------- ---------- -------------------- ----- ---------- ----------------------------------------
8 BLC_DF_NUM 3 DBKH_PARAM_UB4 0 File number
9 BLC_BL_NUM 3 DBKH_PARAM_UB4 0 Block number
<2>执行检查
begin
DBMS_HM.RUN_CHECK(
check_name => 'Data Block Integrity Check',
run_name => 'chk_df5',
input_params => 'BLC_DF_NUM=5;BLC_BL_NUM=2'
);
end;
/
<3>获得报告
SET LONG 100000
SET LONGCHUNKSIZE 1000
SET PAGESIZE 1000
SET LINESIZE 512
SELECT DBMS_HM.GET_RUN_REPORT('chk_df5') FROM DUAL;
DBMS_HM.GET_RUN_REPORT('CHK_DF5')
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Basic Run Information
Run Name : chk_df5
Run Id : 781
Check Name : Data Block Integrity Check
Mode : MANUAL
Status : COMPLETED
Start Time : 2014-06-27 02:44:18.704834 +08:00
End Time : 2014-06-27 02:44:19.964315 +08:00
Error Encountered : 0
Source Incident Id : 0
Number of Incidents Created : 0
Input Paramters for the Run
BLC_DF_NUM=5
BLC_BL_NUM=2
Run Findings And Recommendations
其他类型的检查大同小异,就不一一列举了。
三、Health Monitor 相关视图
--1.执行过哪些health Monitor
SELECT run_id, name, check_name, run_mode, src_incident FROM v$hm_run;
RUN_ID NAME CHECK_NAME RUN_MODE SRC_INCIDENT
---------- -------------------------------- -------------------------------- -------- ------------
41 run_dict1 Dictionary Integrity Check MANUAL 0
1 run_dict Dictionary Integrity Check MANUAL 0
--2.根据run_id获得health Monitor执行细节
SELECT type, description FROM v$hm_finding WHERE run_id = 41;
TYPE DESCRIPTION
------------- ----------------------------------------------------------------------------------------------------
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
FAILURE SQL dictionary health check: syn$.owner fk 95 on object SYN$ failed
四、其他
*****11.2.0.3版本执行数据字典完整性检查会报错*****
SQL> BEGIN
2 DBMS_HM.RUN_CHECK('Dictionary Integrity Check', 'run_dict');
3 END;
4 /
BEGIN
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01427: single-row subquery returns more than one row
ORA-06512: at "SYS.DBMS_HM", line 191
ORA-06512: at line 2
非官方解决办法:
-- Determine DDL statements (note: this will take a while to return results!)
set long 100000
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'PRETTY',true);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'TABLESPACE',false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SEGMENT_ATTRIBUTES',false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'STORAGE',false);
-- Checking the DDL statement
col DDL form a100 word_wrapped
select dbms_metadata.get_ddl(RTRIM(UPPER(object_type)),
RTRIM(UPPER(object_name)),
RTRIM(UPPER(owner))) DDL
from DBA_OBJECTS
where object_type='INDEX'
and object_id
in (select x from (select obj# x, obj#||','||intcol#, count(obj#||','||intcol#)
from ICOLDEP$
group by obj#, obj#||','||intcol# having count(*) > 1)
);
返回结果:
DDL
----------------------------------------------------------------------------------------------------
CREATE UNIQUE INDEX "APEX_030200"."WWV_FLOW_WORKSHEETS_UNQ_IDX" ON "APEX_030200"."WWV_FLOW_WORKSHEETS" (CASE WHEN "REGION_ID" IS NULL THEN "FLOW_I
D" END , CASE WHEN "REGION_ID" IS NULL THEN "OWNER" END , CASE WHEN "REGION_ID" IS NULL THEN "FOLD
ER_ID" END , CASE WHEN "REGION_ID" IS NULL THEN "NAME" END )
CREATE UNIQUE INDEX "APEX_030200"."WWV_FLOW_WS_UNQ_ALIAS_IDX" ON "APEX_030200"."WWV_FLOW_WORKSHEETS" (CASE WHEN "ALIAS" IS NOT NULL THEN "FLOW_ID"
END , "ALIAS")
CREATE UNIQUE INDEX "APEX_030200"."WWV_FLOW_WORKSHEET_RPTS_UK" ON "APEX_030200"."WWV_FLOW_WORKSHEET_RPTS" (CASE WHEN "SESSION_ID" IS NULL THEN "WO
RKSHEET_ID" END , CASE WHEN "SESSION_ID" IS NULL THEN "APPLICATION_USER" END , CASE WHEN "SESSION_
ID" IS NULL THEN "CATEGORY_ID" END , CASE WHEN "SESSION_ID" IS NULL THEN "NAME" END )
对于安装了APEX 组件或者在DBCA创建数据库时选择了General Purpose从Seed中clone数据库而非Custom Database的DB ,都会创建有”APEX_030200″.”WWV_FLOW_WORKSHEETS_UNQ_IDX”、”APEX_030200″.”WWV_FLOW_WS_UNQ_ALIAS_IDX”、”APEX_030200″.”WWV_FLOW_WORKSHEET_RPTS_UK” 三个函数索引。
如果没有实际使用APEX组件的话,我们可以直接DROP掉APEX_030200:
SQL> drop user "APEX_030200" cascade;
再次执行下面的SQL,
-- Determine DDL statements (note: this will take a while to return results!)
set long 100000
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'PRETTY',true);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'TABLESPACE',false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SEGMENT_ATTRIBUTES',false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'STORAGE',false);
-- Checking the DDL statement
col DDL form a100 word_wrapped
select dbms_metadata.get_ddl(RTRIM(UPPER(object_type)),
RTRIM(UPPER(object_name)),
RTRIM(UPPER(owner))) DDL
from DBA_OBJECTS
where object_type='INDEX'
and object_id
in (select x from (select obj# x, obj#||','||intcol#, count(obj#||','||intcol#)
from ICOLDEP$
group by obj#, obj#||','||intcol# having count(*) > 1)
);
no rows selected --没有结果返回就正确了
官方解决办法:
打Patch:12385172补丁
MOS:ORA-01427 occurs when running Dictionary Integrity Check: dbms_hm.run_check (文档 ID 1410513.1)
*************************************
参考:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/diag007.htm
http://www.oracledatabase12g.com/archives/dbms_hm-run_check-failed-ora-00604-ora-01427.html
转载:
十字螺丝钉
http://blog.chinaunix.net/uid/23284114.html
11g新特性:Health Monitor Checks的更多相关文章
- 11g新特性与12c新特性
1. 11g新特性概图 管理新特性> 开发新特性> 2. 12c 新特性概图
- About Health Monitor Checks
About Health Monitor Checks Health Monitor checks (also known as checkers, health checks, or checks) ...
- 11g新特性-自动sql调优(Automatic SQL Tuning)
11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...
- 使用Oracle 11g新特性 Active Database Duplication 搭建Dataguard环境
Duplication Database 介绍 Duplicate database可以按照用途分为2种: duplicate database(复制出一个数据库) duplicate standby ...
- Oracle 11g 新特性 --SQL Plan Management 说明
Oracle 11g 新特性 --SQL Plan Management 说明 参见大神博主文章: http://blog.csdn.net/tianlesoftware/article/detail ...
- Oracle 11g 新特性 – HM(Hang Manager)简介
在这篇文章中我们会对oracle 11g 新特性—hang 管理器(Hang Manager) 进行介绍.我们需要说明,HM 只在RAC 数据库中存在. 在我们诊断数据库问题的时候,经常会遇到一些数据 ...
- 11G 新特性之 密码延迟认证
11G 新特性之 密码延迟认证 11G 新特性之 密码延迟认证 Table of Contents 1. 特性简述 2. 特性潜在引发问题 3. 关闭特性 1 特性简述 为了防止用户密码的暴力破解,从 ...
- Oracle 11g新特性
文章转自网络 Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(I ...
- 11g新特性-概述 (转)
一.新特性提纲 1.数据库管理部分 ◆数据库重演(Database Replay) 这一特性可以捕捉整个数据的负载,并且传递到一个从备份或者standby数据库中创建的测试数据库上,然后重演负责以测试 ...
随机推荐
- iOS实现UITableViewDataSource与Controller的分离
写在前面 在之前的项目中好多处用到了tableView,然而之前不懂得将代理方法实现分离,所以每在一处用到tableView就要在controller中写一遍UITableViewDataSource ...
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
- 4.2w起步的软件公司创业历程
调查说,中国民营企业的生命期平均是2.8年,如今我的企业已走过近四年,而这一年却是我的迷茫期,不知道何去何从,现在写下 来与大家一起分享一下,写得较为凌乱,大家将就着看一下吧:) 先交待一下自己,我来 ...
- 【Win 10 应用开发】导入.pfx证书
这个功能其实并不常用,一般开发较少涉及到证书,不过,简单了解一下还是有必要的. 先来说说制作测试证书的方法,这里老周讲两种方法,可以生成用于测试的.pfx文件. 产生证书,大家都知道有个makecer ...
- Android 开发环境在 Windows7 下的部署安装
Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使 ...
- Runtime应用防止按钮连续点击 (转)
好久之前就看到过使用Runtime解决按钮的连续点击的问题,一直觉得没啥好记录的.刚好今天旁边同时碰到这个问题,看他们好捉急而且好像很难处理,于是我先自己看看… 前面自己也学习了很多Runtime的东 ...
- ORACLE 11gR2 DG(Physical Standby)日常维护01
环境:RHEL 6.4 + Oracle 11.2.0.4 一.主备手工切换 1.1 主库,切换成备库并启动到mount 1.2 备库,切换成主库并启动到open 1.3 新的备库启动日志应用 二.重 ...
- linux内核调试技术之自构proc
1.简介 在上一篇中,在内核中使用printk可以讲调试信息保存在log_buf缓冲区中,可以使用命令 #cat /proc/kmsg 将缓冲区的数区的数数据打印出来,今天我们就来研究一下,自己写k ...
- 利用XML FOR PATH 合并分组信息
-- ================================================ -- Description:合并分组内容 -- Author:夏保华 -- Date:2009 ...
- MSSQL练习题
下列属于SQL Server的系统数据库是( ) A.modelB.publicC.NorthwindD.System 答案:http://hovertree.com/tiku/bjaf/06nvv7 ...