您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 数据库 > 正文

Oracle 自动故障诊断

发表于:2017-08-08 作者:乐沙弥的世界 来源:

  一、故障自动诊断概述
  Oracle故障诊断有助于预防,检测,诊断和解决问题。特别针对的问题是诸如由代码错误,元数据损坏和客户数据损坏引起的重大错误。
  当数据库发生严重错误时,Oracle为其分配一个事件号码,立即捕获并标记该错误的诊断数据(如跟踪文件)。然后将数据存储在数据库外部的自动诊断存储库(ADR,一个基于文件的存储库中),随后可以通过事件编号检索数据并对其进行分析。
  二、故障自动诊断的目标
  第一时间发现及故障诊断
  预防故障
  检测到问题后限制损坏和尽可能减少中断
  减少问题诊断时间
  减少问题解决时间
  简化与Oracle Support交互
  三、故障自动诊断使用到的关键技术
  首次故障时自动捕获诊断数据
  对于严重错误,首次故障时捕获错误信息的能力大大增加了快速解决问题并减少停机时间的机会。始终在线的基于内存的跟踪系统主动从多个数据库组件收集诊断数据,并可帮助隔离问题的根本原因。这种主动诊断数据类似于飞机“黑匣子”飞行记录仪收集的数据。当检测到问题时,会生成警报并激活故障诊断基础架构以捕获和存储诊断数据。数据存储在数据库外部的存储库中(因此数据库关闭时可用),并且可以通过命令行实用程序和企业管理器轻松访问。
  标准化跟踪格式
  在所有数据库组件中标准化跟踪格式使DBA和Oracle支持人员能够使用一组工具进行问题分析。问题更容易诊断,从而缩短停机时间。
  健康检查
  在检测到关键错误后,故障诊断基础设施可以运行一次或多次运行状况检查,以对关键错误进行更深入的分析。然后将健康检查结果添加到为错误收集的其他诊断数据。以及可以单独地健康检查如查找数据块损坏,撤消和重做损坏,数据字典损坏等。作为DBA,您可以定期或根据需要手动调用这些运行状况检查。
  事件包装服务(IPS)和事件包
  IPS使您能够自动轻松地收集诊断数据跟踪,转储,运行状况检查报告和更多关于严重错误的信息,并将数据打包到压缩文件中以传输到Oracle技术支持。由于与关键错误相关的所有诊断数据都标记有该错误的事件编号,因此您无需搜索跟踪文件和其他文件来确定分析所需的文件; 事件打包服务自动识别所需的文件,并将其添加到zip文件。在创建zip文件之前,IPS首先将诊断数据收集到称为事件包(包)的中间逻辑结构中。软件包存储在自动诊断存储库中。可以选择,访问这些逻辑结构,查看和修改其内容,随时添加或删除其他诊断数据,准备好后,从包中创建zip文件。完成这些步骤后,可以将zip文件上传到Oracle Support。
  数据恢复顾问
  数据恢复顾问整合了数据库运行状况检查和RMAN以显示数据损坏问题,评估每个问题(关键,高优先级,低优先级)的程度,描述问题的影响,建议修复选项,进行可行性检查客户选择的选项,并自动修复过程。
  SQL测试用例生成器
  对于许多SQL相关的问题,获得可重现的测试用例是问题解决速度的重要因素。SQL测试案例构建器可以自动化一些困难和耗时的过程,尽可能收集有关问题及其发生环境的信息。快速收集这些信息后,您可以将其上传到Oracle Support,以便支持人员轻松准确地重现问题。
  四、自动故障诊断的核心组件
  1、自动诊断存储库(ADR)
  ADR是对数据库诊断进行诊断,将其诊断结果以文件形式保存的的存储仓库,如跟踪,事件转储包,警报日志,健康监视器报告,核心转储等。它有一个统一的目录结构,可跨多个实例和多个产品,存储在任何数据库外部。因此,即使数据库关闭,已产生的诊断文件可用于问题诊断。从Oracle Database 11g R1开始,数据库,自动存储管理(ASM),集群就绪服务(CRS)和其他Oracle产品或组件存储所有诊断数据到ADR。每个产品的每个实例存储其自身ADR家目录下的诊断数据目录。例如,在具有共享存储和ASM的Real Application Clusters环境中,每个数据库实例和每个ASM实例在ADR内都有一个主目录。 ADR统一的目录结构,跨产品和实例的一致的诊断数据格式,以及统一的工具集使客户和Oracle支持人员能够跨多个实例关联和分析诊断数据。ADR根目录被称为ADR基础目录。它的位置由DIAGNOSTIC_DEST设置初始化参数。如果此参数被省略或保留为null,则数据库将按如下方式设置DIAGNOSTIC_DEST:如果环境变量ORACLE_BASE已设置,DIAGNOSTIC_DEST设置为 $ ORACLE_BASE。如果环境变量ORACLE_BASE未设置,DIAGNOSTIC_DEST设置为 $ ORACLE_HOME/log。
  注意:
  从第11g Oracle数据库开始,因为包括警报日志在内的所有诊断数据都存储在ADR中,初始化参数BACKGROUND_DUMP_DEST并USER_DUMP_DEST已被弃用。它们由初始化参数替代DIAGNOSTIC_DEST,用于标识ADR的位置。
  下图为自动诊断存储仓库图,展示了ADR概览及相关路径

  
SQL> select * from v$version;
  BANNER
  --------------------------------------------------------------------------------
  Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
  SQL> show parameter diag;   --查看ADR基目录
  NAME                                 TYPE        VALUE
  ------------------------------------ ----------- ------------------------------
  diagnostic_dest                      string      /app/oracle/ora11g
  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 * from v$diag_info;    --查看完整的ADR相关路径
     INST_ID NAME                   VALUE
  ---------- ---------------------- ----------------------------------------------------------------------
           1 Diag Enabled           TRUE
           1 ADR Base               /app/oracle/ora11g
           1 ADR Home               /app/oracle/ora11g/diag/rdbms/ora11g/ora11g
           1 Diag Trace             /app/oracle/ora11g/diag/rdbms/ora11g/ora11g/trace
           1 Diag Alert             /app/oracle/ora11g/diag/rdbms/ora11g/ora11g/alert
           1 Diag Incident          /app/oracle/ora11g/diag/rdbms/ora11g/ora11g/incident
           1 Diag Cdump             /app/oracle/ora11g/diag/rdbms/ora11g/ora11g/cdump
           1 Health Monitor         /app/oracle/ora11g/diag/rdbms/ora11g/ora11g/hm
           1 Default Trace File     /app/oracle/ora11g/diag/rdbms/ora11g/ora11g/trace/ora11g_ora_13535.trc
           1 Active Problem Count   1
           1 Active Incident Count  5

  2、警报日志
  警报日志是一个XML文件,它是按时间顺序写出数据库消息和错误的日志文件。它存储在ADR中,并包含有关以下内容的消息:
  严重错误(事件)
  管理操作,如启动或关闭数据库,恢复数据库,创建或删除表空间等。
  自动刷新物化视图时出现错误
  其他数据库事件
  3、跟踪文件,转储和核心文件
  跟踪文件,转储和核心文件包含用于调查问题的诊断数据。它们存储在ADR中。
  每个服务器和后台进程都可以写入相关的跟踪文件。跟踪文件在整个过程的周期内定期更新,并且可以包含有关进程环境,状态,活动和错误的信息。此外,当进程检测到严重错误时,它会将有关该错误的信息写入其跟踪文件。SQL跟踪工具还创建跟踪文件,它们提供有关各个SQL语句的性能信息。您可以为会话或实例启用SQL跟踪。
  跟踪文件名依赖于平台。通常,数据库后台进程跟踪文件名包含Oracle SID,后台进程名称和操作系统进程号,而服务器进程跟踪文件名包含Oracle SID,字符串“ora”和操作系统进程号。文件扩展名是.trc。服务器进程跟踪文件名的示例是orcl_ora_344.trc。跟踪文件有时伴随相应的trace map(.trm)文件,其中包含有关跟踪文件的结构信息,用于搜索和导航。
  4、其他ADR内容
  ADR还包含运行状况监视器报告,数据修复记录,SQL测试用例,事件包等。
  5、企业管理器工作台
  企业管理器支持工作台(Support Workbench)是一种使您能够在易于使用的图形界面进行调查,报告和在某些情况下修复问题(严重错误)的工具。支持工作台提供了一种自助服务方式,您可以在最短的时间内收集第一故障诊断数据,获取支持请求号码并将诊断数据上传到Oracle支持,从而减少解决问题的时间。支持工作台还建议并轻松访问Oracle顾问,以帮助您修复与SQL相关的问题,数据损坏问题等
  6、ADRCI命令行实用程序
  ADR命令解释器(ADRCI)是一个实用程序,可以在命令行环境中调查问题,查看运行状况检查报告和打包第一故障诊断数据。然后,您可以将包上传到Oracle支持。ADRCI还使您能够查看ADR中跟踪文件的名称,并使用XML标签查看警报日志,并附带和不含内容过滤。
  五、自动故障诊断工作流

  一个永远在线的内存中跟踪功能使数据库组件能够在第一时间捕获诊断数据首次出现严重错误。并将其相关信息存储到Automatic Diagnostic Repository。此信息可用于创建要发送到Oracle Support Services进行调查的事件包。以下是诊断会话的典型工作流程:
  + 意外事件导致在企业管理器(EM)中产生警报。
  + DBA可以通过EM Alert页面查看警报或事件以邮件短信形式通知DBA。
  + DBA可以深入了解事件和问题的细节,并进行分析。
  + DBA或Oracle支持服务可以决定或要求该信息进行打包通过将其发送到Oracle支持服务。 DBA可以将数据添加到数据自动打包。