Oracle 自动故障诊断

一、故障自动诊断概述

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可以将数据添加到数据自动打包。

六、自动诊断相关参考

Oracle健康监控及健康检查
Oracle数据恢复顾问(Data Recovery Advisor)

时间: 2024-08-01 12:18:44

Oracle 自动故障诊断的相关文章

linux下oracle自动备份脚本

linux下oracle自动备份脚本  vi /home/oracle/backup.sh   //编写脚本 以下为脚本内容 time=` date +"%Y%m%d%H%M" ` //变量time 获取当前系统时间 su - oracle -c "exp hbskjt_0113/password owner=hbskjt_0113 file=/home/oracle/hbskjt_$time.dmp"  //导库脚本 cd /home/oracle tar zcv

Oracle自动备份数据

Oracle自动备份数据 相信为数不少的系统管理员每天都在做着同一样的工作--对数据进行备份.一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了.假如每天设定一个固定的时间,系统自动进行备份,那该多好啊!下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用. 我们计划让数据库在晚上23点做export导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上,为此我们可进行如下操作: 一.

oracle自动维护

  检查ORACLE自动维护任务是否关闭 SQL> select t.client_name, t.status from dba_autotask_client t; CLIENT_NAME STATUS ---------------------------------------------------------------- -------- auto optimizer stats collection DISABLED auto space advisor DISABLED sql

Oracle自动备份脚本_oracle

废话不多说了,直接给大家贴代码了,具体代码如下所示: #!/bin/sh #****************************************************************** # File: oraclebak.sh # Creation Date: 2014/1/22 17:57:32 # Last Modified: 2014/1/22 17:57:34 # 脚本功能:oracle备份脚本 # 执行方法:1.第一次执行需要root用户执行,脚本会以询问的方式

Oracle自动备份及自动备份步骤_oracle

数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们只有一台数据库服务器的,暂时采取最简单的备份策略,export出dmp进行保存. 一.备份脚本 1.初始化变量,记录开始日志 #变量 sysname=填写自己的系统名称 syspath=/home/oracle/databak/$sysname v_date=$(date '+%Y%m%d%H%M%

教你用Linux完成Oracle自动物理备份

本文的目标是通过执行一Shell脚本来完成Oracle数据库自动备份的全过程,而且能够在当前目录下生成其压缩文件.具体实现步骤如下: 1.以Oracle用户身份登录到Linux系统下. 2.建立database.srcipt文件,以便生成备份数据库的一些参数信息并保存在文件database.parm中. 这些信息对于以后恢复数据库具有重要的参考作用,所以在物理备份的过程中,需要保存这些信息,也可以把其他一些重要的信息写在这个脚本里. $vi database.srcipt spool datab

使用hibernater的save添加oracle自动增长错误求救!

问题描述 <hibernate-mapping><classname="com.showtime.blog.entity.Tuser"table="TUSER"schema="SHOWTIME"><idname="id"type="java.lang.Integer"><columnname="ID"precision="22"

oracle自动清理archivelog文件的具体方法_oracle

1.登陆到服务器上创建rman自动删除两天前的归档日志脚本[oracle@108 ~]$ cat >>del_ora_log.rman <<EOF crosscheck archivelog all;delete noprompt expired archivelog all;delete noprompt force archivelog until time 'sysdate -2';   -------删除两天前的archivelogexit;EOF2.手动执行清除日志[or

centos下Oracle自动备份数据库步骤

**环境说明** Oracle数据库服务器 操作系统:CentOS IP:192.168.150.214 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 用户:ts 密码:ts **详细的操作步骤如下** 1.root用户登录服务器 {{{ mkdir -p /backup/oracledata #新建Oracle数据库备份目录 chown -R oracle:oinstall /backup/oracledata -R #设置目录权限为oinstall用户组的