11g新特性:Health Monitor Checks 这个功能挺好。
select name,name_nls from V$HM_CHECK order by 1;
ASM Allocation Check | ASM 分配检查 |
ASM Disk Visibility Check | ASM 磁盘可见性检查 |
ASM File Busy Check | ASM 文件忙检查 |
ASM Insufficient Disks Check | 检查装载失败, 因为磁盘不足 |
ASM Insufficient Mem Check | 内存分配检查 |
ASM Mount Check | ASM 装载检查 |
ASM Toomanyoff Check | 检查装载失败, 因为脱机磁盘太多 |
All Datafiles Check | 所有数据文件检查 |
Archived Log Check | 归档日志检查 |
Block IO Revalidation Check | 块 IO 重新验证检查 |
CF Block Integrity Check | CF 块完整性检查 |
CF Member Check | CF 成员检查 |
DB Structure Integrity Check | 数据库结构完整性检查 |
Data Block Integrity Check | 数据块完整性检查 |
Dictionary Integrity Check | 字典完整性检查 |
Failure Simulation Check | 故障模拟检查 |
HM Test Check | HM 测试检查 |
IO Revalidation Check | IO 重新验证检查 |
Log Group Check | 日志组检查 |
Log Group Member Check | 日志组成员检查 |
Logical Block Check | 逻辑块检查 |
Mount CF Check | 装载 CF 检查 |
No Mount CF Check | 不装载 CF 检查 |
Redo Integrity Check | 重做完整性检查 |
Redo Revalidation Check | 重做重新验证检查 |
Single Datafile Check | 单个数据文件检查 |
Tablespace Check Check | 表空间检查 |
Transaction Integrity Check | 事务处理完整性检查 |
Txn Revalidation Check | Txn 重新验证检查 |
Undo Segment Integrity Check | 还原段完整性检查 |
--可以手动检查的项目
SELECT name,name_nls FROM V$HM_CHECK WHERE INTERNAL_CHECK = 'N' ;
DB Structure Integrity Check | 数据库结构完整性检查 |
CF Block Integrity Check | CF 块完整性检查 |
Data Block Integrity Check | 数据块完整性检查 |
Redo Integrity Check | 重做完整性检查 |
Transaction Integrity Check | 事务处理完整性检查 |
Undo Segment Integrity Check | 还原段完整性检查 |
Dictionary Integrity Check | 字典完整性检查 |
ASM Allocation Check | ASM 分配检查 |
SQL> exec dbms_hm.run_check(check_name => 'Redo Integrity Check',run_name=> 'db_check1');
PL/SQL procedure successfully completed.
SQL>
SQL> select to_char(dbms_hm.get_run_report(run_name => 'db_check1')) from dual;
TO_CHAR(DBMS_HM.GET_RUN_REPORT(RUN_NAME=>'DB_CHECK1'))
--------------------------------------------------------------------------------
Basic Run Information
Run Name : db_check1
Run Id : 1941
Check Name : Redo Integrity Check
Mode : MANUAL
Status : COMPLETED
Start Time : 2016-09-22 11:26:16.582506 +08:00
End Time : 2016-09-22 11:26:17.230306 +08:00
Error Encountered : 0
Source Incident Id : 0
Number of Incidents Created : 0
TO_CHAR(DBMS_HM.GET_RUN_REPORT(RUN_NAME=>'DB_CHECK1'))
--------------------------------------------------------------------------------
Input Paramters for the Run
SCN_TEXT=0
Run Findings And Recommendations
SQL>
--需要用到的程序包
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';