知识大全 如何对Oracle进行健康检查

Posted 命令

篇首语:星星使天空绚烂夺目,知识人们增长才干。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何对Oracle进行健康检查相关的知识,希望对你有一定的参考价值。

如何对Oracle进行健康检查  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  通过健康检查让你的Oracle数据库远离损坏

  俗话说 解决一件事往往能有 种办法 那么我们如何按照这些方法去做?

  甲骨文公司发布Oracle g时 在被称作为健康监控器的框架下推出了数据库健康检查功能 在这个框架内健康检查运行目的是诊断检查你的Oracle数据库 它将监测数据库的各个不同组成部分—主要是检查损坏 包括物理和逻辑上的 虽然没有 种方式 但甲骨文有的是 正如我们在过去关于自动诊断库(Automatic Diagnostic Repository ADR)的文章上看到的那些 还试图通过ADR执行和接入到健康检查 然而 正如我们将看到 它也许不是最好的办法做到这一点

  所以 在你的数据库中有数据文件 块 撤消 重做 字典 或坐标系损坏吗?你实际上可能运行得很好 因此甚至我们不知道这些损坏的存在 正如我们将看到 在下面的例子中 我有一个新安装的Oracle并且有些损坏在其中 我真正地希望搜寻那些错误; 但那是在另一天 当运行健康检查 你作为一个数据库管理员 可以决定是使用临时模式还是使用完全反应模式运行 当以完全反应模式运行时会有人会抱怨错误讯息或你可能会看到一个Oracle警报警告运行健康检查所出现的错误 你还可以通过使用DBMS_HM PL/SQL软件包进行健康检查操作 依赖于这些是如何运行在你的系统上 他们将花费多久 你如何频繁看到损坏信息 你可能要安排这些作为一个任务 不过 请注意 这是一个新功能 并附带所有其他的新功能 你应该 %相信他们不会造成损坏或锁定你的系统 只要适当低测试和监视那些操作 同样值得注意的是 这些健康检查可以运行在在线和现有的据库上 或者当数据库是离线( NOMOUNT )时 由于有多种类型的健康检查 因此有些健康检查 只能运行在离线数据库的上 举例来说 重做完整性检查只能是脱机运行 当仔细想想就能明白这其中的奥秘 不用进行各个不同的损坏/完整性检查 你可以使用下列SQL查看他们 它可以让你知道那些检查是可以在线进行的 那些检查是要在脱机的情况下进行的  

    SQL> SELECT name internal_check offline_capable description FROM v$hm_check;  NAME I O DESCRIPTION     HM Test Check Y Y Check for HM Functionality  DB Structure Integrity Check N Y Checks integrity of all database files  Data Block Integrity Check N Y Checks integrity of a datafile 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  All Control Files Check Y Y Checks all control files in the database  CF Member Check Y Y Checks a multiplexed copy of the control file  All Datafiles Check Y Y Check for all datafiles in the database  Single Datafile Check Y Y Checks a datafile  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 accessability  Block IO Revalidation Check Y Y Checks file accessability  Txn Revalidation Check Y N Revalidate corrupted txn  Failure Simulation Check Y Y Creates dummy failures  Dictionary Integrity Check N N Checks dictionary integrity        由于一些健康检查需要额外的输入参数 为了简便起见 我决定只演示那里有不需要输入参数的检查 如果你想要看看那些需要输入参数的检查 你可以执行下列SQL中 我在Oracle文件中发现的

    SELECT c name check_name p name parameter_name   p type p default_value p description  FROM v$hm_check_param p v$hm_check c  WHERE p check_id = c id and c internal_check = N   ORDER BY c name;        我不知道我已经遭遇多少次字典问题 从字典表的错误信息到锁定问题 所以我对字典完整性检查比较兴奋 字典完整性检查将检查字典的核心对象完整性 包括 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$ 这是我很关心的一个很好很长的列表 以及检查应该看看字典的条目内容 制约因素和参照完整性

  通过手动运行字典完整性检查 我们需要分配下列DBMS_HM RUN_CHECK PL/SQL软件包—给予该操作额外的名称 在这个例子中 我将命名我的操作为DICTIONARY_CHECK_

    BEGIN  DBMS_HM RUN_CHECK( Dictionary Integrity Check    DICTIONARY_CHECK_ );  END;  /         现在 这是它得到一些有趣的 DBMS_HM RUN_CHECK在ADR存贮其相关信息 因此使用DBMS_HM PL/SQL软件包或ADRCI功能生成的报告 对我来说 当DBMS_HM PL/SQL软件包将以HTML XML或文本格式输出报告时 我们已经没有多少选择 因为ADRCI功能只以XML的形式输出报告 然而 我们通过对比这两种方法能使我们看到ADR存在的不足以及知道ADR和DBMS_HM在什么地方功能有重叠

  由于DBMS_HM RUN_CHECK将其信息存储在ADR中 我们可以很容易地看到HM_RUN 通过输入下列ADRCI命令  

  

    adrci> show hm_run  ADR Home = /opt/app/oracle/diag/rdbms/db fs/db FS:  *****************************************************  **********************************************************  HM RUN RECORD   **********************************************************  RUN_ID   RUN_NAME DICTIONARY_CHECK_   CHECK_NAME Dictionary Integrity Check  NAME_ID   MODE   START_TIME : : :   RESUME_TIME   END_TIME : : :   MODIFIED_TIME : : :   TIMEOUT   FLAGS   STATUS   SRC_INCIDENT_ID   NUM_INCIDENTS   ERR_NUMBER   REPORT_FILE

  这最显著的信息 或缺失信息 是REPORT_FILE为 此栏只有当报告生成时才能被填充 建立一个报告可以通过DBMS_HM包或通过ADRCI的 CREATE REPORT命令    

  使用DBMS_HM包        

    SET LONG   SET LONGCHUNKSIZE   SET PAGESIZE   SET LINESIZE   SELECT DBMS_HM GET_RUN_REPORT( DICTIONARY_CHECK_ ) FROM DUAL;

  使用ADRCI CREATE REPORT命令      

    CREATE REPORT hm_run DICTIONARY_CHECK_   When using the DBMS_HM package the output looks like:  当使用DBMS_HM包时输出结果如下   DBMS_HM GET_RUN_REPORT( DICTIONARY_CHECK_ )     Basic Run Information  Run Name : DICTIONARY_CHECK_   Run Id :   Check Name : Dictionary Integrity Check  Mode : MANUAL  Status : PLETED  Start Time : : : :   End Time : : : :   Error Encountered :   Source Incident Id :   Number of Incidents Created :   Input Paramters for the Run  TABLE_NAME=ALL_CORE_TABLES  CHECK_MASK=ALL  Run Findings And Remendations  Finding  Finding Name : Dictionary Inconsistency  Finding ID :   Type : FAILURE  Status : OPEN  Priority : CRITICAL  Message : SQL dictionary health check: file$ pk on object FILE$  failed  Message : Damaged rowid is AAAAARAABAAAAByAAF description: No further  damage description available  Finding  Finding Name : Dictionary Inconsistency  Finding ID :   Type : FAILURE  Status : OPEN  Priority : CRITICAL  Message : SQL dictionary health check: dependency$ dobj# fk on  object DEPENDENCY$ failed  Message : Damaged rowid is AAAABnAABAAAOiHABI description: No further  damage description available  Finding  Finding Name : Dictionary Inconsistency  Finding ID :   Type : FAILURE  Status : OPEN  Priority : CRITICAL  Message : SQL dictionary health check: dependency$ dobj# fk on  object DEPENDENCY$ failed  Message : Damaged rowid is AAAABnAABAAAQXqAA description: No further  damage description available

  运行后DBMS_HM包或ADRCI 的CREATE REPORT命令后 我们可以重新输入ADRCI显示hm_run命令 现在可以看到REPORT_FILE信息被填充了

  REPORT_FILE /opt/app/oracle/diag/rdbms/db fs/db FS/hm/HMREPORT_DICTIONARY_CHECK_ hm

  当使用ADRCI功能 你必须先运行生成报告文件的命令 如果该文件不存在 那么运行另一个命令 以显示其内容 你还可以查看该报告通过ADRCI输入以下命令 因为输出的结果在XML文档中 因此它不会在这里显示

  show report hm_run DICTIONARY_CHECK_

cha138/Article/program/Oracle/201311/18140

相关参考

对从事接触职业病危害的作业的劳动者定期进行健康检查的目的是什么?

对从事接触职业病危害的作业的劳动者定期进行健康检查的目的是什么?。A.及早发现与其所从事的职业相关的健康损害的劳动者,将其调离原工作岗位,并及时进行治疗B.了解劳动者的身体健康状况C.为劳动者提供福利

为什么要对准备调离接尘工作的从业人员进行健康检查和评价?

  对准备调离接尘工作的从业人员进行健康检查和评价的目的,主要是分析接尘工作从业人员与矿尘危害因素的关系,找出其所在接尘岗位工作环境和条件存在的矿尘危害因素,以及对接尘从业人员身体健康的影响规律。同时

为什么要对准备调离接尘工作的从业人员进行健康检查和评价?

  对准备调离接尘工作的从业人员进行健康检查和评价的目的,主要是分析接尘工作从业人员与矿尘危害因素的关系,找出其所在接尘岗位工作环境和条件存在的矿尘危害因素,以及对接尘从业人员身体健康的影响规律。同时

对从事接触职业病危害的作业的劳动者进行健康检查的费用由谁承担?

对从事接触职业病危害的作业的劳动者进行健康检查的费用由谁承担?。A.接受健康检查的劳动者B.聘用劳动者的单位C.聘用劳动者的单位与劳动者按一定比例分担【参考答案】B[拓展知识]按国家职业卫生标准《工作

对从事接触职业病危害的作业的劳动者进行健康检查的费用由谁承担?

对从事接触职业病危害的作业的劳动者进行健康检查的费用由谁承担?。A.接受健康检查的劳动者B.聘用劳动者的单位C.聘用劳动者的单位与劳动者按一定比例分担【参考答案】B[拓展知识]按国家职业卫生标准《工作

依据《职业病防治法》的规定,对遭受或者可能遭受急性职业病危害的劳动者,用人单位应当及时组织救治、进行健康检查和医学观察,所需费用由()承担。

电力安全生产知识竞赛题:依据《职业病防治法》的规定,对遭受或者可能遭受急性职业病危害的劳动者,用人单位应当及时组织救治、进行健康检查和医学观察,所需费用由()承担。A、劳动者个人B、用人单位C、劳动者

依据《职业病防治法》的规定,对遭受或者可能遭受急性职业病危害的劳动者,用人单位应当及时组织救治、进行健康检查和医学观察,所需费用由()承担。

电力安全生产知识竞赛题:依据《职业病防治法》的规定,对遭受或者可能遭受急性职业病危害的劳动者,用人单位应当及时组织救治、进行健康检查和医学观察,所需费用由()承担。A、劳动者个人B、用人单位C、劳动者

为什么要对接尘在岗的从业人员进行职业健康检查和评价?

  对接尘在岗的从业人员定期进行职业健康检查和评价的目的,主要是动态观察接尘从业人员的健康变化状况,了解从业人员健康变化与矿尘危害因素的关系,及时发现疑似尘肺病患者(O),判断接尘从业人员是否适合继续

为什么要对接尘在岗的从业人员进行职业健康检查和评价?

  对接尘在岗的从业人员定期进行职业健康检查和评价的目的,主要是动态观察接尘从业人员的健康变化状况,了解从业人员健康变化与矿尘危害因素的关系,及时发现疑似尘肺病患者(O),判断接尘从业人员是否适合继续

对接尘工人的职业健康检查为什么要拍照胸大片检查?

  尘肺病是肺对足留与其内的矿尘的反映,米前只能依靠胸部X线表现来估计肺对矿尘的反应程度。所以,接尘工人进行胸大片拍照,逼近可以确定有无尘肺病的发生,还可以了解其病变的进程和归转。后前位胸片是尘肺X线