Oracle健康监控及健康检查(Health Monitor)

一、Oracle健康监控及健康检查

Oracle数据库包括一个名为Health Monitor的框架,用于运行诊断检查数据库的各种组件。Oracle健康监视器检查各种组件数据库,包括文件,内存,事务完整性,元数据和进程使用。在检查器运行后,它生成一个包含有关检查器发现的信息的报告,包括优先事项(低,高或关键),调查结果及其后果的描述,和关于执行的基本统计。 Health Monitor使用XML生成报表并存储ADR报告。可以使用V$ HM_RUN,DBMS_HM,ADRCI或企业管理器查看相应的调查结果报告以及解决问题的建议。

下图为健康监控组件框架

二、检查的具体组件及描述

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SQL> select 'Leshami' Author,'http://blog.csdn.net/leshami' Blog,
  2  '645746311' QQ from dual;

AUTHOR  BLOG                         QQ
------- ---------------------------- ---------
Leshami http://blog.csdn.net/leshami 645746311

SQL> SELECT name,internal_check,offline_capable,description FROM v$hm_check;

NAME                             I O DESCRIPTION
-------------------------------- - - -----------------------------------------------------------------
HM Test Check                    Y Y Check for health monitor functionality
DB Structure Integrity Check     N Y Checks integrity of all database files
CF Block Integrity Check         N Y Checks integrity of a control file block
Data Block Integrity Check       N Y Checks integrity of a data file block
Redo Integrity Check             N Y Checks integrity of redo log content
Logical Block Check              Y N Checks logical content of a block
Transaction Integrity Check      N N Checks a transaction for corruptions
Undo Segment Integrity Check     N N Checks integrity of an undo segment
No Mount CF Check                Y Y Checks control file in NOMOUNT mode
Mount CF Check                   Y Y Checks control file in mount mode
CF Member Check                  Y Y Checks a multiplexed copy of the control file
All Datafiles Check              Y Y Checks all datafiles in the database
Single Datafile Check            Y Y Checks a data file
Tablespace Check Check           Y Y Checks a tablespace
Log Group Check                  Y Y Checks all members of a log group
Log Group Member Check           Y Y Checks a particular member of a log group
Archived Log Check               Y Y Checks an archived log
Redo Revalidation Check          Y Y Checks redo log content
IO Revalidation Check            Y Y Checks file accessibility
Block IO Revalidation Check      Y Y Checks file accessibility
Txn Revalidation Check           Y N Revalidate corrupted transaction
Failure Simulation Check         Y Y Creates dummy failures
Dictionary Integrity Check       N N Checks dictionary integrity
ASM Mount Check                  Y Y Diagnose mount failure
ASM Allocation Check             N Y Diagnose allocation failure
ASM Disk Visibility Check        Y Y Diagnose add disk failure
ASM File Busy Check              Y Y Diagnose file drop failure
ASM Toomanyoff Check             Y Y Diagnose mount failed because there were too many offline disks
ASM Insufficient Disks Check     Y Y Diagnose mount failed because there were insufficient disks

以下列出一些重要检查描述

数据库结构完整性检查(DB Structure Integrity Check)

  此检查将验证数据库文件的完整性,如文件无法访问,损坏或不一致,并报告这些故障。如果数据库处于挂载或打开模式,则此检查将检查控制文件中列出的日志文件和数据文件。如果数据库处于NOMOUNT模式,则仅检查控制文件。

数据块完整性检查(Data Block Integrity Check)   此检查检测磁盘映像块损坏,如校验和异常,头/尾不匹配和块内的逻辑不一致。大多数损坏可以使用块介质恢复进行修复。还会在V$DATABASE_BLOCK_CORRUPTION视图中捕获损坏的块信息。此检查不会检测到块间或段间损坏。

重做完整性检查(Redo Integrity Check)   此检查扫描重做日志的内容以获取可访问性和损坏以及归档日志(如果可用)。重做完整性检查报告如归档日志或重做损坏故障。

撤消段完整性检查(Undo Segment Integrity Check)   此检查发现逻辑撤销损坏。找到撤销损坏后,此检查使用PMON和SMON尝试恢复损坏的事务。如果此恢复失败,则Health Monitor将存储有关损坏的信息V$CORRUPT_XID_LIST。大多数撤销损坏可以通过强制提交来解决。

事务完整性检查(Transaction Integrity Check)   此检查与撤消段完整性检查相同,只是它仅检查一个特定事务。

字典完整性检查(Dictionary Integrity Check)   此检查检查核心字典对象的完整性,如tab$和col$。它执行以下操作:

    验证每个字典对象的字典条目的内容。     执行跨行级别检查,该检查验证字典中行的逻辑约束是否被强制执行。     执行对象关系检查,该检查验证字典对象之间的父子关系是否被强制执行。

三、健康检查支持的模式及运行方式

1、支持模式

反应式   故障诊断基础架构可以自动运行健康检查以响应严重错误。

手动式   可以使用DBMS_HM PL/SQL软件包或Enterprise Manager界面手动运行健康状况检查。也可以根据需要定期运行检查程序

健康监视器在自动诊断存储库(ADR)中检查存储结果,建议和其他信息。

2、运行方式

DB-online(即在OPEN模式下) 健康检查可以在数据库打开时运行(或称联机模式)。

DB-offline(数据库脱机) 健康检查可以在实例可用并且数据库本身关闭时运行(NOMOUNT模式)。

四、演示健康健康检查

1、使用DBMS_HM PL / SQL包实施检查

DBMS_HM包主要包括2个存储过程,一个是RUN_CHECK,主要用于实施健康检查,支持参数输入;一个是GET_RUN_REPORT,用于获取健康检查的结果。 以下为支持的相关参数列表

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 group name
CF Block Integrity Check      CF_BL_NUM            DBKH_PARAM_UB4                        Control file block number
Data Block Integrity Check    BLC_DF_NUM           DBKH_PARAM_UB4                        File number
Data Block Integrity Check    BLC_BL_NUM           DBKH_PARAM_UB4                        Block number
Dictionary Integrity Check    CHECK_MASK           DBKH_PARAM_TEXT      ALL              Check mask
Dictionary Integrity Check    TABLE_NAME           DBKH_PARAM_TEXT      ALL_CORE_TABLES  Table name
Redo Integrity Check          SCN_TEXT             DBKH_PARAM_TEXT      0                SCN of the latest good redo (if known)
Transaction Integrity Check   TXN_ID               DBKH_PARAM_TEXT                       Transaction ID
Undo Segment Integrity Check  USN_NUMBER           DBKH_PARAM_TEXT                       Undo segment number

--演示实施健康检查

RMAN> backup database plus archivelog;  --先备份

SQL> select file#,name from v$datafile where name like '%user%';

     FILE# NAME
---------- ------------------------------------------------------------
         4 /app/oracle/ora11g/oradata/ora11g/users01.dbf

$ cat /dev/null>/app/oracle/ora11g/oradata/ora11g/users01.dbf

SQL> alter system flush buffer_cache;

System altered.

SQL> select count(*) from scott.emp;
select count(*) from scott.emp
*
ERROR at line 1:
ORA-01115: IO error reading block from file  (block # )
ORA-01110: data file 4: '/app/oracle/ora11g/oradata/ora11g/users01.dbf'
ORA-27072: File I/O error
Additional information: 4
Additional information: 155

SQL> BEGIN
  2     DBMS_HM.RUN_CHECK (check_name   => 'DB Structure Integrity Check',
  3                        run_name     => 'my_db_strc_check');
  4  END;
  5  /

PL/SQL procedure successfully completed.

--查看报告
SET LONG 100000
SET LONGCHUNKSIZE 1000
SET PAGESIZE 1000
SET LINESIZE 512
SELECT DBMS_HM.GET_RUN_REPORT('my_db_strc_check') FROM DUAL;

DBMS_HM.GET_RUN_REPORT('MY_DB_STRC_CHECK')
--------------------------------------------------------------
Basic Run Information
 Run Name                     : my_db_strc_check
 Run Id                       : 107795
 Check Name                   : DB Structure Integrity Check
 Mode                         : MANUAL
 Status                       : COMPLETED
 Start Time                   : 2017-07-03 17:13:49.550575 +08:00
 End Time                     : 2017-07-03 17:13:50.202535 +08:00
 Error Encountered            : 0
 Source Incident Id           : 0
 Number of Incidents Created  : 0

Input Paramters for the Run
Run Findings And Recommendations
 Finding
 Finding Name  : Corrupt Datafile  --找到损坏的数据文件
 Finding ID    : 107799
 Type          : FAILURE           --类型为失败
 Status        : OPEN              --状态为OPEN
 Priority      : HIGH              --级别为高 
 Message       : Datafile 4: '/app/oracle/ora11g/oradata/ora11g/users01.dbf'is corrupt
 Message       : Some objects in tablespace USERS might be unavailable

2、使用OEM实施检查

实施检查

查看报告

3、通过ADRCI接口查看报告

adrci> adrci> show hm_run –列出所有检查运行过的健康监控(可查询V$HM_RUN视图获取) adrci> create report hm_run run_name –创建报告 adrci> show report hm_run run_name –查看报告

五、相关视图

V$HM_CHECK –所有能够被check的组件 V$HM_CHECK_PARAM –check组件可传递的相关参数 V$HM_RUN –所有健康健康检查相关信息及其状态 V$HM_FINDING –相关检查成果 V$HM_RECOMMENDATION –相关检查建议 V$HM_INFO –关于健康检查runs, findings, and recommendations信息

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维前线

CentOS6 安装代码检测工具sonarsource

CentOS6 安装sonarsource sonarqube下载地址: https://sonarsource.bintray.com/Distributio...

2719
来自专栏杨建荣的学习笔记

配置dg broker的问题分析及修复(r6笔记第84天)

最近从同事那儿接手了一套新环境,备库因为服务器问题已经下架,重新配了一台服务器,所以需要搭一套备库,主库已经配置好了,而且同事已经把在主库把dg broker配...

3797
来自专栏数据和云

你不可不看的 Oracle RAC 日常基本维护命令

$ srvctl status instance -d orcl -i orcl2

1254
来自专栏猿人谷

Oracle RAC基本维护指令

所有实例和服务的状态 $ srvctl status database -d orcl Instance orcl1 is running on node l...

2247
来自专栏沃趣科技

ASM 翻译系列第三十三弹:REQUIRED_MIRROR_FREE_MB的含义

原作者:Bane Radulovic 译者: 陈亚军 审核: 魏兴华 DBGeeK社区联合出品 原文链接:http://asmsupportguy....

37610
来自专栏我的博客

Sqlite使用说明

安装apt-get install slqite .databases List names and files of attached databases(列...

3624
来自专栏张戈的专栏

[svn: E155004]svn update报database is locked错误的解决办法

今天突然发现项目更新脚本在拉代码的时候抛出了一个如下错误: svn: E155004: Working copy '/home/svn/***/trunk/st...

1.3K8
来自专栏数据和云

【循序渐进Oracle】Oracle的物理备份(上)

编辑手记:备份重于一切,我们必需知道,系统总是要崩溃的,没有有效的备份只是等哪一天死!今天你备份了吗?我们一起来回顾Oracle的物理备份,本文摘自《循序渐进O...

3498
来自专栏数据和云

12c特性解读:RAC MGMTDB资料库的转移与维护

戴明明(Dave) Oracle ACE-A,ACOUG核心成员,宝存科技数据库方案架构师 Dave也是CSDN 认证专家,超过7年的DBA经验,擅长Orac...

3034
来自专栏码匠的流水账

nginx lua重置请求参数及常量备忘

2441

扫码关注云+社区

领取腾讯云代金券