初了解Oracle 11g的Automatic Diagnostic Repository新特性

Oracle 11g之前,当数据库出现问题时,往往第一时间需要看alert日志,看看里面记录了哪些错误,可以给我们提示。alert文件名则

是alert_<ORACLE_SID>.log,文件存储路径由参数background_dump_dest决定,例如:

SQL> show parameter background_dump_dest

NAME                                            TYPE         VALUE

------------------------------------ ----------- ------------------------------

background_dump_dest                 string        /opt/app/ora10g/admin/petest/bdump

可以知道alert日志就保存在/opt/app/ora10g/admin/petest/bdump路径下。

例如如下这个log后缀的alert日志,内容是文本格式的,可以直接打开查看:

-rw-r-----. 1 oracle root 1.8G Jun 21 19:30 alert_bisal.log

从Oracle 11g开始,alert除了文本格式,还提供了xml格式的,且日志路径有所变化。如果设置了参数diagnostic_dest,则原来的

background_dump_dest等路径将失效。Oracle 11g提供的新特性“自动诊断库(Automatic Diagnostic Repository, ADR)”的目

录就是通过这个参数设置的,这个目录下存放的是数据库诊断日志、跟踪文件等之前分布于bdump、cdump等路径中的文件,这个

目录通常称为ADR base。例如:

SQL> show parameter diag

NAME                                     TYPE        VALUE

------------------------------------ ----------- ------------------------------

diagnostic_dest                        string       /home/oracle

diagnostic_dest的缺省值还和环境变量ORACLE_BASE有关,例如:

>如果设置了ORACLE_BASE,则diagnostic_dest = $ORACLE_BASE

>如果未设置ORACLE_BASE,则diagnostic_dest
= $ORACLE_HOME/log

根据eygle的介绍,11g将环境变量ORACLE_BASE引入到了数据库内部,使用隐含参数记录:

SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.KSPPDESC PDESC

FROM   SYS.x$ksppi
x, SYS.x$ksppcv y

WHERE
 x.indx = y.indx AND x.ksppinm LIKE ‘%&par%‘;

NAME             VALUE        
      PDESC

--------------- ----------------- ------------------

_oracle_base    /home/oracle  
 ORACLE_BASE

注意这里SQL的输入的是小写oracle_base。

可以使用v$diag_info查看ADR信息:

SQL> select * from v$diag_info;

INST_ID NAME                      VALUE

---------- ------------------------- -------------------------

1 Diag Enabled                TRUE

1 ADR Base                     /home/oracle

1 ADR Home                   /home/oracle/diag/rdbms/galt/galt

1 Diag Trace                   /home/oracle/diag/rdbms/galt/galt/trace

1 Diag Alert                    /home/oracle/diag/rdbms/galt/galt/alert

1 Diag Incident               /home/oracle/diag/rdbms/galt/galt/incident

1 Diag Cdump                /home/oracle/diag/rdbms/galt/galt/cdump

1 Health Monitor             /home/oracle/diag/rdbms/galt/galt/hm

1 Default Trace File         /home/oracle/diag/rdbms/galt/galt/trace/galt_ora_8970.trc

1 Active Problem Count   1

1 Active Incident Count    50

11 rows selected.

其中Diag Alert保存的是xml格式的alert日志,Diag Trace保存的是文本格式的alert日志。

还提供了一个新工具ADRCI(ADR Command Interpreter),说是用于管理诊断数据,友好阅读xml格式的日志,但这里我还没搞清楚为什么需要xml格式的日志,请高手指教。

命令行中输入adrci就可以登录了,例如:

[[email protected] diag]$ adrci

ADRCI: Release 11.2.0.1.0 - Production on Sat Jun 21 18:51:31 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

ADR base = "/home/oracle"

adrci>

使用show alert可以选择需要查看的日志文件:

adrci> show alert

Choose the alert log from the following homes to view:

1: diag/tnslsnr/riserver2/listener

2: diag/rdbms/galt/galt

Q: to quit

Please select option:

接下来就是为什么要有ADR?

ADR是将各类跟踪文件、日志文件的存储进行统一,不会像之前需要不同文件时要到不同目录中查找,有时还得看看参数设置到哪

些路径下了。Oracle 11g提出了FDI,故障诊断基础框架,Fault Diagnosability Infrastructure,宗旨就是简化用户的数据库出现

故障时向Oracle请求协助需要反复交互的过程。以前用户需要根据Oracle的要求,不断反复交互,收集数据,再反馈Oracle,才能

解决SR,通过FDI,可能会提高故障分析解决的效率。(因为我还没提过,所以不知道是否真的节省了成本?)

FDI的核心组件是ADR,相关的日志文件进行了归类汇总都存储于ADR之下。同时使用IPS,事件打包服务,Incident Packaging

Service,可以将相关的数据、日志文件打包压缩,然后用户将这个文件传给Oracle诊断。

例如:

adrci> show incident

ADR Home = /home/oracle/diag/tnslsnr/riserver2/listener:

*************************************************************************

0 rows fetched

ADR Home = /home/oracle/diag/rdbms/galt/galt:

*************************************************************************

INCIDENT_ID          PROBLEM_KEY              CREATE_TIME

-------------------- ------------------------ ----------------------------------------

129708               ORA 4030                         2014-06-21 05:35:06.727000 +08:00

129709               ORA 4030                         2014-06-21 05:35:15.598000 +08:00

129710               ORA 4030                         2014-06-21 05:35:23.600000 +08:00

129711               ORA 4030                         2014-06-21 05:35:31.526000 +08:00

129712               ORA 4030                         2014-06-21 05:35:39.611000 +08:00

5 rows fetched

可以看到这里有5次INCIDENT,可以用如下命令查看具体的信息:

adrci> show incident -mode DETAIL -p "incident_id=129708";

ADR Home = /home/oracle/diag/tnslsnr/riserver2/listener:

*************************************************************************

0 rows fetched

<INCIDENT_INFO mode="detail">

<ADR_HOME name="/home/oracle/diag/tnslsnr/riserver2/listener">

ADR Home = /home/oracle/diag/rdbms/galt/galt:

*************************************************************************

**********************************************************

INCIDENT INFO RECORD 1

**********************************************************

INCIDENT_ID                   129708

STATUS                           ready

CREATE_TIME                   2014-06-21 05:35:06.727000 +08:00

PROBLEM_ID                    1

CLOSE_TIME                    <NULL>

FLOOD_CONTROLLED       none

ERROR_FACILITY             ORA

ERROR_NUMBER               4030

ERROR_ARG1                   832

ERROR_ARG2                   callheap

ERROR_ARG3                   temporary memory

ERROR_ARG4                    <NULL>

ERROR_ARG5                    <NULL>

ERROR_ARG6                    <NULL>

ERROR_ARG7                    <NULL>

ERROR_ARG8                    <NULL>

ERROR_ARG9                    <NULL>

ERROR_ARG10                   <NULL>

ERROR_ARG11                   <NULL>

ERROR_ARG12                   <NULL>

SIGNALLING_COMPONENT          <NULL>

SIGNALLING_SUBCOMPONENT    <NULL>

SUSPECT_COMPONENT               <NULL>

SUSPECT_SUBCOMPONENT         <NULL>

ECID                                 <NULL>

IMPACTS                           0

PROBLEM_KEY                   ORA 4030

FIRST_INCIDENT               129708

FIRSTINC_TIME                 2014-06-21 05:35:06.727000 +08:00

LAST_INCIDENT                129757

LASTINC_TIME                  2014-06-21 05:35:52.409000 +08:00

IMPACT1                           34668547

IMPACT2                           34668546

IMPACT3                           0

IMPACT4                           0

KEY_NAME                        ProcId

KEY_VALUE                       2.1

KEY_NAME                        Client ProcId

KEY_VALUE                       [email protected]_140012269696768

KEY_NAME                        SID

KEY_VALUE                       383.1

OWNER_ID                        1

INCIDENT_FILE                  /home/oracle/diag/rdbms/galt/galt/trace/galt_pmon_3005.trc

OWNER_ID                        1

INCIDENT_FILE                  /home/oracle/diag/rdbms/galt/galt/incident/incdir_129708/galt_pmon_3005_i129708.trc

1 rows fetched

可以看到目录下有异常事件的跟踪信息:

[[email protected] diag]$ cd /home/oracle/diag/rdbms/galt/galt/incident/incdir_129708/

[[email protected] incdir_129708]$ ls -l

total 7408

-rw-r-----. 1 oracle root 7561282 Jun 21 05:35 galt_pmon_3005_i129708.trc

-rw-r-----. 1 oracle root   19034 Jun 21 05:35 galt_pmon_3005_i129708.trm

下面就使用IPS进行打包:

adrci> set homepath diag/rdbms/galt/galt

adrci> ips create package incident 129708

Created package 1 based on incident id 129708, correlation level typical

adrci> ips generate package 1 in /home/oracle/diag

Generated package 1 in file /home/oracle/diag/ORA4030_20140621184527_COM_1.zip, mode complete

Additional incremental files:

/home/oracle/diag/ORA4030_20140621184527_INC_2.zip

解压缩这两个文件可以看到像alert日志等都打进来了,这里两文件压缩后是17MB左右,但alert日志就有1.7GB,所以压缩效率还很高。

初了解Oracle 11g的Automatic Diagnostic Repository新特性,布布扣,bubuko.com

时间: 2024-08-25 02:23:43

初了解Oracle 11g的Automatic Diagnostic Repository新特性的相关文章

[转]Oracle AWR(Automatic Workload Repository)使用解析

一. AWR 说明 Oracle 10g之前对数据库做性能检测使用statspack工具. 关于statspack的说明,参考我的Blog: statspack安装使用 和 report 分析 http://space.itpub.net/28673746/viewspace-757339 Oracle Database 10g 提供了一个新的工具:(AWR:Automatic Workload Repository).Oracle 建议用户用这个取代 Statspack.AWR 实质上是一个 

oracle 自动诊断信息库(Automatic Diagnostic Repository,ADR)

ORACLE 11G中的ADR介绍: ADRCI 之oracle 日志查看 在Oracle的11g版本中,alert文件的位置发生了变化,与此同时Oracle提供了一个命令行工具ADRCI,它可以很便利的查看数据库中出现的异常. 以下给大家展示一下使用ADRCI (ADR Command Interface) 在11g中查看Oracle的警告日志的方法. 1.进入到adrci命令行模式[email protected] /home/oracle$ which adrci/oracle/u01/a

Oracle宣布更多的Java 9 新特性

随着Oracle确认了其余的4个Java 9特性,下一代Java的计划开始变得更清晰了,Oracle已经公布了第二套Java 9特性.自从Oracle在今年早些时候宣布了3个新的API和模块化源码后,这是Oracle首次推出Java 9特性表. 统一JVM日志(JEP 158) Java 9将会对所有的JVM组件采用相同的日志格式.这将会改变JVM子系统记录事件的方式,以及为日志添加了统一的命令选项. 更多的编译器控制(JEP 165) Oracle想利用一系列的控制选项来对Hostspot J

Oracle 11g Articles

发现一个比较有意思的网站,http://www.oracle-base.com/articles/11g/articles-11g.php Oracle 11g Articles Oracle Database 11g: New Features For Administrators OCP Exam Articles Oracle Database 11g Release 1: Miscellaneous Articles Oracle Database 11g Release 2: Misc

Oracle 11g ADRCI工具使用

Oracle 11g ADRCI工具使用 在Oracle中,各个组件(监听器.数据库实例.各种配置工具)在安装和运行时都会有相应的日志Log和跟踪文件Trace生成.Oracle 11g之前,这些信息都是零散的分布在Oracle组件目录中的.在11g,Oracle推出了ADR(Automatic Diagnostic Repository)的概念,将这些信息统一的列入到其中管理. 1.ADRCI初探 在11g中,提供了ADR_HOME目录,其中集中保存各类型的日志和跟踪信息. [[email p

RDBMS and listener log (xml) from SQL*Plus with V$DIAG_ALERT_EXt view [ADR - Automatic Diagnostic Re

With the V$DIAG_ALERT_EXT it is possible to read the logs of all the databases and listeners from the ADR location Great for monitoring. Now only one connection to a database is needed to see all the database alert files and listener logs registered

centos 6 oracle 11G DB install

因业务迁移,需重新部署oracle DB,此文仅作部署记录,部署文档主要参考官方文档http://docs.oracle.com/cd/E11882_01/install.112/e47689/toc.htm 概要: 主机:OpenStack 云主机 系统:Completing a Minimal Linux centos 6.8 x86_64 DB:Oracle Database 11g Release 2(11.2) 内存:2Gb 硬盘:/dev/vda 20Gb /dev/vdb 30Gb

oracle 11g 新特性

1.Exadata是结合了数据库威力的硬件. 闪存:不同于数据库闪存,这是一个基于文件扩展的常驻SGA缓冲区的高速缓存(类似于交换区),为数据库提供二级缓存.当数据库被换出SGA时该文件被使用. 存储索引:利用最小值/最大值使查询运行得更快.主要维护数据的摘要信息.内存结构驻留在存储单元层面上.对于一个存储单元而言,存储索引最多可以存储8个查询表列的最小值/最大值.存储索引指示数据如何存储在存储单元上(就像分区的最小值/最大值). 2.高级压缩 允许数据在更新和插入表时保持压缩 create t

oracle 11g亿级复杂SQL优化一例(数量级性能提升)

自从16年之后,因为工作原因,项目中就没有再使用oracle了,最近最近支持一个项目,又要开始负责这块事情了.最近在跑性能测试,配置全部调好之后,不少sql还存在性能低下的问题,主要涉及执行计划的不合理,以及相关pga隐含参数的优化.可能因为几年不接触的原因,略微有些生疏需要review了.这里以最近优化过的某个比较典型的例子为例(这里只讲思路.因为涉及到核心机密,不给出最终结果,16C [email protected]/45GB内存/fio 85/15 iops 8500/1500 配置,优