[20190306]11g health monitor.txt --//前几天做删除tab$的恢复,看链接https://blog.csdn.net/Enmotech/article/details/87834503,我的测试 --//链接:http://blog.itpub.net/267265/viewspace-2637010/=>[20190225]删除tab$记录的恢复5.txt. --//理论讲不会遇到对方的数据字典不一致的问题. --//blog里面提到hcheck脚本,不知道是什么,不过11g提供health monitor,里面也提供数据字典的检查. --//对这方面知识不是很了解,学习看看: 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 2.了解有那些检查项目: --//主要的视图集中v$hm开头的视图. SYS@book> select * from v$hm_check where internal_check='N'; ID NAME NAME_NLS CLSID CLS_NAME FLAGS I O DESCRIPTION --- ------------------------------ ----------------------------- ----- --------------- ----- - - ---------------------------------------- 2 DB Structure Integrity Check DB Structure Integrity Check 2 PERSISTENT_DATA 4098 N Y Checks integrity of all database files 25 CF Block Integrity Check CF Block Integrity Check 2 PERSISTENT_DATA 4098 N Y Checks integrity of a control file block 3 Data Block Integrity Check Data Block Integrity Check 2 PERSISTENT_DATA 4098 N Y Checks integrity of a data file block 4 Redo Integrity Check Redo Integrity Check 2 PERSISTENT_DATA 4098 N Y Checks integrity of redo log content 10 Transaction Integrity Check Transaction Integrity Check 2 PERSISTENT_DATA 4096 N N Checks a transaction for corruptions 11 Undo Segment Integrity Check Undo Segment Integrity Check 2 PERSISTENT_DATA 4096 N N Checks integrity of an undo segment 24 Dictionary Integrity Check Dictionary Integrity Check 2 PERSISTENT_DATA 4096 N N Checks dictionary integrity 27 ASM Allocation Check ASM Allocation Check 3 ASM 8194 N Y Diagnose allocation failure 8 rows selected. 3.执行时相关参数: 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 9 rows selected. 4.手工测试数据字典: --//拿我恢复的测试测试看看. SYS@book> exec dbms_hm.run_check('Dictionary Integrity Check','test_dict_check'); BEGIN dbms_hm.run_check('Dictionary Integrity Check','test_dict_check'); END; * 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 1 --//报错,跟踪发现:执行如下报错: /* Formatted on 2019/3/6 10:17:25 (QP5 v5.252.13127.32867) */ SELECT 52, ROWID, 'ind$.obj#' FROM IND$ WHERE obj# < 0 UNION ALL SELECT 57, ROWID, 'ind$.type#' FROM IND$ WHERE type# NOT BETWEEN 1 AND 9 UNION ALL SELECT 58, ROWID, 'ind$.pctfree$' FROM IND$ WHERE pctfree$ NOT BETWEEN 0 AND 99 UNION ALL SELECT 59, ROWID, 'ind$.analyzetime <= SYSDATE' FROM IND$ WHERE analyzetime > SYSDATE UNION ALL SELECT 51, ROWID, 'ind$.obj# pk' FROM IND$ WHERE obj# IS NULL UNION ALL SELECT 51, ROWID, 'ind$.obj# pk' FROM IND$ WHERE 1 > ( SELECT obj# FROM IND$ GROUP BY obj# HAVING COUNT (*) > 1) UNION ALL SELECT 53, ROWID, 'ind$.dataobj# range' FROM IND$ WHERE 1 > ( SELECT dataobj# FROM IND$ GROUP BY dataobj# HAVING COUNT (*) > 1) UNION ALL SELECT 54, ROWID, 'ind$.ts# fk' FROM IND$ WHERE (ts#) IN (SELECT ts# FROM IND$ WHERE (ts#) NOT IN (SELECT ts# FROM ts$) AND ts# != 2147483647) UNION ALL SELECT 55, ROWID, 'ind$.ts,file,block fk' FROM IND$ WHERE (ts#, file#, block#) IN (SELECT ts#, file#, block# FROM IND$ WHERE (ts#, file#, block#) NOT IN (SELECT ts# ,file# ,block# FROM seg$) AND file# != 0 AND block# != 0) UNION ALL SELECT 56, ROWID, 'ind$.obj# fk_obj$' FROM IND$ WHERE (obj#) IN (SELECT obj# FROM IND$ WHERE (obj#) NOT IN (SELECT obj# FROM obj$)); --//执行如下返回多行: SELECT dataobj# FROM IND$ GROUP BY dataobj# HAVING COUNT (*) > 1; SYS@book> SELECT dataobj# FROM IND$ GROUP BY dataobj# HAVING COUNT (*) > 1; DATAOBJ# ---------- 87367 87374 87372 87378 SELECT * FROM dba_objects WHERE data_object_id IN ( SELECT /*+ unnest */ dataobj# FROM IND$ where dataobj# is not null GROUP BY dataobj# HAVING COUNT (*) > 1); OWNER OBJECT_NAME SUBOBJECT_ OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS T G S NAMESPACE EDITION_NAME ------ ----------------------- ---------- ---------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ---------- ------------ SYS SYS_C0011093 87367 87367 INDEX 2015-11-24 09:11:19 2015-11-24 09:11:19 2015-11-24:09:11:19 VALID N Y N 4 SYS SYS_IOT_TOP_87371 87372 87372 INDEX 2015-11-24 09:11:19 2015-11-24 09:11:19 2015-11-24:09:11:19 VALID N Y N 4 SYS SYS_IOT_TOP_87373 87374 87374 INDEX 2015-11-24 09:11:19 2015-11-24 09:11:19 2015-11-24:09:11:19 VALID N Y N 4 SYS SYS_IOT_TOP_87376 87378 87378 INDEX 2015-11-24 09:11:19 2015-11-24 09:11:19 2015-11-24:09:11:19 VALID N Y N 4 OE PROD_SUPPLIER_IX 88151 87378 INDEX 2015-11-24 09:11:54 2015-11-24 09:11:54 2015-11-24:09:11:54 VALID N N N 4 OE WHS_LOCATION_IX 88160 87367 INDEX 2015-11-24 09:11:54 2015-11-24 09:11:54 2015-11-24:09:11:54 VALID N N N 4 OE CUST_ACCOUNT_MANAGER_IX 88164 87374 INDEX 2015-11-24 09:11:54 2015-11-24 09:11:54 2015-11-24:09:11:54 VALID N N N 4 OE ORD_CUSTOMER_IX 88166 87372 INDEX 2015-11-24 09:11:54 2015-11-24 09:11:54 2015-11-24:09:11:54 VALID N N N 4 8 rows selected. --//很明显oracle Dictionary Integrity Check存在bug问题,OE这些索引是通过oracle自带的例子,通过传输表空间安装上来的. --//数据段号与系统表空间的这些索引段号重合了. 5.查看报表: SYS@book> select dbms_hm.get_run_report('test_dict_check') from dual; DBMS_HM.GET_RUN_REPORT('TEST_DICT_CHECK') ----------------------------------------------------------------------------------- Basic Run Information Run Name : test_dict_check Run Id : 93224 Check Name : Dictionary Integrity Check Mode : MANUAL Status : ERROR-NOT COMPLETED Start Time : 2019-03-06 10:13:08.197565 +08:00 End Time : 2019-03-06 10:13:08.686826 +08:00 Error Encountered : 604 Source Incident Id : 0 Number of Incidents Created : 0 Input Paramters for the Run TABLE_NAME=ALL_CORE_TABLES CHECK_MASK=ALL Run Findings And Recommendations Finding Finding Name : Dictionary Inconsistency Finding ID : 93225 Type : FAILURE Status : OPEN Priority : CRITICAL Message : SQL dictionary health check: file$ pk 42 on object FILE$ failed Message : Damaged rowid is AAAAARAABAAAADpAAG - description: No further damage description available --//没有执行完成. SYS@book> @ rowid AAAAARAABAAAADpAAG OBJECT FILE BLOCK ROW ROWID_DBA DBA TEXT ---------- ---------- ---------- ---------- -------------------- -------------------- ---------------------------------------- 17 1 233 6 0x4000E9 1,233 alter system dump datafile 1 block 233 ; SYS@book> select * from dba_objects where object_id=17; OWNER OBJECT_NAME SUBOBJECT_ OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS T G S NAMESPACE EDITION_NAME ------ ----------- ---------- ---------- -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ---------- ------------- SYS FILE$ 17 17 TABLE 2013-08-24 11:37:35 2013-08-24 11:37:35 2013-08-24:11:37:35 VALID N N N 1 SYS@book> column SPARE2 noprint SYS@book> column SPARE3 noprint SYS@book> column SPARE4 noprint SYS@book> select rowid,file$.* from file$; ROWID FILE# STATUS$ BLOCKS TS# RELFILE# MAXEXTEND INC CRSCNWRP CRSCNBAS OWNERINSTANCE SPARE1 ------------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ------------- ---------- AAAAARAABAAAADpAAA 1 2 64000 0 1 4194302 1280 0 7 4194306 AAAAARAABAAAADpAAB 2 2 51200 1 2 4194302 1280 0 1834 8388610 AAAAARAABAAAADpAAC 3 2 3200 2 3 4194302 640 0 923328 12582914 AAAAARAABAAAADpAAD 4 2 640 4 4 4194302 160 0 16143 16777218 AAAAARAABAAAADpAAE 5 2 12800 6 5 4194302 80 0 952916 20971522 AAAAARAABAAAADpAAF 6 2 5120 7 6 4194302 128 3 391355879 25165826 AAAAARAABAAAADpAAG 7 1 1280 4194302 2048 3 393536480 29360130 7 rows selected. --//FILE#=7我已经删除了.数据文件已经删除了. 6.相关视图如下: SYS@book> @ view v_$hm old 6: WHERE view_name LIKE UPPER ('%' || '&&1' || '%') new 6: WHERE view_name LIKE UPPER ('%' || 'v_$hm' || '%') OWNER VIEW_NAME C30 ------ ------------------------------ ------------------------------ SYS GV_$HM_CHECK GV$HM_CHECK SYS GV_$HM_CHECK_PARAM GV$HM_CHECK_PARAM SYS GV_$HM_FINDING GV$HM_FINDING SYS GV_$HM_INFO GV$HM_INFO SYS GV_$HM_RECOMMENDATION GV$HM_RECOMMENDATION SYS GV_$HM_RUN GV$HM_RUN SYS V_$HM_CHECK V$HM_CHECK SYS V_$HM_CHECK_PARAM V$HM_CHECK_PARAM SYS V_$HM_FINDING V$HM_FINDING SYS V_$HM_INFO V$HM_INFO SYS V_$HM_RECOMMENDATION V$HM_RECOMMENDATION SYS V_$HM_RUN V$HM_RUN 12 rows selected. --//可以用视图来代替检查报告来查看特定检查的结果.可用的视图有v$hm_run,v$hm_finding,v$hm_recommendation --//执行失败,仅仅了解看看.
[20190306]11g health monitor.txt
来源:这里教程网
时间:2026-03-03 13:03:11
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- exp报错与exp为何导不出某些表结构原因
exp报错与exp为何导不出某些表结构原因
26-03-03 - 2-plsql开发工具安装
2-plsql开发工具安装
26-03-03 - 【kingsql分享】Oracle Database 19c的各种新特性介绍
- Oracle RMAN两种库增量备份的差别及实验增量差异和累积增量备份的区别
- 故障排除 | enq:TX - index contention等待事件
故障排除 | enq:TX - index contention等待事件
26-03-03 - oracle 12c 多租户体系结构概念
oracle 12c 多租户体系结构概念
26-03-03 - Debian Samba域控制器配置(手把手教你用Debian搭建Samba Active Directory域控制器)
- 审计表 aud$ 清理
审计表 aud$ 清理
26-03-03 - Data Guard备库日志的实时应用与非实时应用
Data Guard备库日志的实时应用与非实时应用
26-03-03 - 安装ORACLE 12.2.0.1 GI 时遇到INS-44002错误
安装ORACLE 12.2.0.1 GI 时遇到INS-44002错误
26-03-03
