在oracle11g中,dump file的目录已经有所改变,bdump和udump整合到trace中,cdump独立出一个。

E:\ora11g\app\Administrator\diag\rdbms>tree
卷 DOCUMENT 的文件夹 PATH 列表
卷序列号为 5A21-A80E
E:.
└─ora11g
    └─ora11g
        ├─alert
        ├─cdump
        ├─hm
        ├─incident
        ├─incpkg
        ├─ir
        ├─lck
        ├─metadata
        ├─stage
        ├─sweep
        └─trace
 
E:\ora11g\app\Administrator\diag\rdbms>

而oracle也提供了一个ADRCI(Automatic Diagnostic Repository Command Interpreter)的工具来提供这些路径下各个trace、incident、problem的管理。下面我们来看看该命令的使用。

C:\Documents and Settings\Administrator>adrci
 
ADRCI: Release 11.2.0.1.0 - Production on Fri Jun 22 23:05:42 2012
 
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
 
ADR base = "e:\ora11g\app\administrator"
adrci> help
 
 HELP [topic]
   Available Topics:
        CREATE REPORT
        ECHO
        EXIT
        HELP
        HOST
        IPS
        PURGE
        RUN
        SET BASE
        SET BROWSER
        SET CONTROL
        SET ECHO
        SET EDITOR
        SET HOMES | HOME | HOMEPATH
        SET TERMOUT
        SHOW ALERT
        SHOW BASE
        SHOW CONTROL
        SHOW HM_RUN
        SHOW HOMES | HOME | HOMEPATH
        SHOW INCDIR
        SHOW INCIDENT
        SHOW PROBLEM
        SHOW REPORT
        SHOW TRACEFILE
        SPOOL
 
 There are other commands intended to be used directly by Oracle, type
 "HELP EXTENDED" to see the list
 
adrci>

在使用前,我们要先设定一下adrci的主目录:

adrci> show home
ADR Homes:
diag\clients\user_administrator\host_2188829984_76
diag\clients\user_unknown\host_2188829984_76
diag\diagtool\user_administrator\host_2188829984_76
diag\rdbms\ora11g\ora11g
diag\tnslsnr\hejianmin\listener
adrci>
adrci>
adrci> set home diag\rdbms\ora11g\ora11g
adrci>
adrci> show home
ADR Homes:
diag\rdbms\ora11g\ora11g
adrci>

好了,设置完主目录后,我们先来检查一下我们的alertlog:

adrci> show alert -tail -f
2012-06-22 23:51:45.466000 +08:00
Thread 1 cannot allocate new log, sequence 48
Checkpoint not complete
  Current log# 2 seq# 47 mem# 0: E:\ORA11G\APP\ADMINISTRATOR\ORADATA\ORA11G\REDO02.LOG
2012-06-22 23:51:46.981000 +08:00
Thread 1 advanced to log sequence 48 (LGWR switch)
  Current log# 3 seq# 48 mem# 0: E:\ORA11G\APP\ADMINISTRATOR\ORADATA\ORA11G\REDO03.LOG
Thread 1 cannot allocate new log, sequence 49
Checkpoint not complete
  Current log# 3 seq# 48 mem# 0: E:\ORA11G\APP\ADMINISTRATOR\ORADATA\ORA11G\REDO03.LOG
2012-06-22 23:51:49.934000 +08:00
Thread 1 advanced to log sequence 49 (LGWR switch)
  Current log# 1 seq# 49 mem# 0: E:\ORA11G\APP\ADMINISTRATOR\ORADATA\ORA11G\REDO01.LOG
2012-06-22 23:52:05.653000 +08:00
Thread 1 advanced to log sequence 50 (LGWR switch)
  Current log# 2 seq# 50 mem# 0: E:\ORA11G\APP\ADMINISTRATOR\ORADATA\ORA11G\REDO02.LOG
Thread 1 advanced to log sequence 51 (LGWR switch)
  Current log# 3 seq# 51 mem# 0: E:\ORA11G\APP\ADMINISTRATOR\ORADATA\ORA11G\REDO03.LOG
2012-06-22 23:52:07.122000 +08:00
Thread 1 advanced to log sequence 52 (LGWR switch)
  Current log# 1 seq# 52 mem# 0: E:\ORA11G\APP\ADMINISTRATOR\ORADATA\ORA11G\REDO01.LOG

类似的,我们可以

  1. show alert -tail (默认是10条条目)
  2. show alert -tail -20(显示最后20个条目)
  3. show alert -tail -f(类似tail -f alertlog一样)
  4. show alert(windows中会弹出txt文本窗口显示,如已经装了MKS Toolkit,希望用vi显示,则需要先set editor vi,再show alert。)
  5. show alert -p "MESSAGE_TEXT like '%ORA-%'"(显示alert中关于ORA-报错的内容。其他更多的show alert的选项,可见 help show alert)

注意,show alert的起始点是在control中设置的保留时间之后的日志,或者说是purge之后的日志,之前的日志无法显示。

adrci> show control
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                           LAST_AUTOPRG_TIME                       LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION     ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
799124850            720                  8760                 2011-05-08 17:12:01.015000 +08:00        2011-07-08 23:00:22.380000 +08:00        2012-06-22 23:36:14.731000 +08:00        1                    2                    76                  1                    2011-05-08 17:12:01.015000 +08:00
1 rows fetched
 
adrci>

也就是max(LAST_AUTOPRG_TIME,LAST_MANUPRG_TIME)之后的日志。

关于control的设置,除了默认的SHORTP_POLICY为720小时,LONGP_POLICY为8760小时外,我们可以修改这2个时间:

adrci> set control (SHORTP_POLICY = 360)
adrci> set control (LONGP_POLICY = 2160)
adrci>
adrci> show control
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                           LAST_AUTOPRG_TIME                       LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION     ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
799124850            360                  2160                 2012-06-23 00:11:47.106000 +08:00        2011-07-08 23:00:22.380000 +08:00        2012-06-22 23:36:14.731000 +08:00        1                    2                    76                  1                    2011-05-08 17:12:01.015000 +08:00
1 rows fetched
 
adrci>

这样就改成了tracefiles保留360小时,即15天,incident file保留2160小时,即90天。

上述就是oracle自己保留日志的期限,但是我们也可以通过purge这个命令来手工的清空。关于purge这个命令,我会在介绍incident和problem之后,再介绍。

下面我们来看看关于incident和proble的显示。我们人为的制造一个incident

adrci> show incident
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
0 rows fetched
 
adrci>
adrci>
adrci>
adrci> show incident
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
0 rows fetched
 
adrci>
 
sys@ORA11G(192.168.1.106)> select OBJECT_NAME,OBJECT_ID,DATA_OBJECT_ID from dba_objects where owner='TEST' and object_name='TB_TEST';
 
OBJECT_NAME                     OBJECT_ID DATA_OBJECT_ID
------------------------------ ---------- --------------
TB_TEST                             74270          74270
 
Elapsed: 00:00:00.00
sys@ORA11G(192.168.1.106)>
sys@ORA11G(192.168.1.106)>
sys@ORA11G(192.168.1.106)> update sys.tab$ set OBJ# = 999999 where OBJ# = 74270;
 
1 row updated.
 
Elapsed: 00:00:00.00
sys@ORA11G(192.168.1.106)> commit;
 
Commit complete.
 
Elapsed: 00:00:00.03
sys@ORA11G(192.168.1.106)> alter system checkpoint;
 
System altered.
 
Elapsed: 00:00:00.26
sys@ORA11G(192.168.1.106)>
sys@ORA11G(192.168.1.106)>
sys@ORA11G(192.168.1.106)> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ORA11G(192.168.1.106)> startup
ORACLE instance started.
 
Total System Global Area  778387456 bytes
Fixed Size                  1374808 bytes
Variable Size             310379944 bytes
Database Buffers          461373440 bytes
Redo Buffers                5259264 bytes
Database mounted.
Database opened.
sys@ORA11G(192.168.1.106)>conn test/test
test@ORA11G(192.168.1.106)> desc tb_test
ERROR:
ORA-03113: end-of-file on communication channel
Process ID: 640
Session ID: 137 Serial number: 2
 
 
test@ORA11G(192.168.1.106)>
test@ORA11G(192.168.1.106)>

我们来看看show incident和show problem:

adrci> show incident
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
32620                ORA 7445 [kqldcdp()+78]                                    2012-06-24 22:13:56.109000 +08:00
1 rows fetched
 
adrci> show problem
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
2                    ORA 7445 [kqldcdp()+78]                                    32620                2012-06-24 22:13:56.109000 +08:00
1 rows fetched
 
adrci>

我们看到分别有一个incident和problem。

我们再次desc一次这个表:

sys@ORA11G(192.168.1.106)> conn test/test
Connected.
test@ORA11G(192.168.1.106)>
test@ORA11G(192.168.1.106)>
test@ORA11G(192.168.1.106)> desc tb_test
ERROR:
ORA-03113: end-of-file on communication channel
Process ID: 7244
Session ID: 16 Serial number: 24
 
 
test@ORA11G(192.168.1.106)>
 
adrci> show incident
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
32620                ORA 7445 [kqldcdp()+78]                                    2012-06-24 22:13:56.109000 +08:00
32580                ORA 7445 [kqldcdp()+78]                                    2012-06-24 22:17:23.890000 +08:00
2 rows fetched
 
adrci> show problem
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
2                    ORA 7445 [kqldcdp()+78]                                    32580                2012-06-24 22:17:23.890000 +08:00
1 rows fetched
 
adrci>

我们看到有2个incident和一个problem。我们可以理解成problem是重复的incident。
注意在这里incident和problem还可以用如下的用法:

  1. show incident -mode detail -p "incident_id=123"
  2. show problem -p "problem_id=2"

更多信息见help show incident或help show problem。

OK,我们现在可以将相关的incident的文件打包给oracle,上传到SR上。我们这里用到一个IPS(incident package service)服务。
我们先创建一个逻辑的package:
比如我们针对上面的2个incident和1个problem,我们可以有各种选择:

1.什么参数都不带,表示以默认的level typical, 里面无任何内容。
adrci> ips create package
Created package 1 without any contents, correlation level typical
2.加incident参数,指明某个incident。默认level还是typical。
adrci>
adrci> ips create package incident 32620
Created package 2 based on incident id 32620, correlation level typical
adrci>
3.加incident参数,指定某个incident,设置level为all。
adrci> ips create package incident 32580 correlate all
Created package 3 based on incident id 32580, correlation level all
adrci>
4.加problem参数,指定某个problem。默认level还是typical。
adrci> ips create package problem 2
Created package 4 based on problem id 2, correlation level typical
5.加problem参数,指定某个problem,设置level为basic。
adrci>
adrci> ips create package problem 2 correlate basic
Created package 5 based on problem id 2, correlation level basic
adrci>
adrci>
6.加time参数,设置开始时间to结束时间,后面的+8:00表示东八区。
adrci> ips create package time '2012-06-23 00:00:00 +08:00' to '2012-06-24 23.00.00 +08:00'
Created package 6 based on time range 2012-06-23 00:00:00.000000 +08:00 to 2012-06-24 23:00:00.000000 +08:00, correlation level typical
adrci>

我们看到,已经有6个逻辑上的package被建立,在incpkg也有了6个对于的目录。

E:\ora11g\app\Administrator\diag\rdbms>tree
卷 DOCUMENT 的文件夹 PATH 列表
卷序列号为 5A21-A80E
E:.
└─ora11g
    └─ora11g
        ├─alert
        ├─cdump
        ├─hm
        ├─incident
        │  ├─incdir_32580
        │  └─incdir_32620
        ├─incpkg
        │  ├─pkg_1
        │  │  └─seq_1
        │  ├─pkg_2
        │  │  └─seq_1
        │  ├─pkg_3
        │  │  └─seq_1
        │  ├─pkg_4
        │  │  └─seq_1
        │  ├─pkg_5
        │  │  └─seq_1
        │  └─pkg_6
        │      └─seq_1
        ├─ir
        ├─lck
        ├─metadata
        ├─stage
        ├─sweep
        └─trace
            ├─cdmp_20120624221402
            └─cdmp_20120624221725
 
E:\ora11g\app\Administrator\diag\rdbms>

我们上传给oracle的话,还需要建立真正物理上的package。

adrci> ips GENERATE PACKAGE 2
Generated package 2 in file E:\ORA7445kq_20120624223659_COM_1.zip, mode complete
adrci>

如果我们要自定义路径,加in参数即可:

adrci> ips GENERATE PACKAGE 3 in E:\ora11g\app\Administrator\diag\rdbms\ora11g\ora11g\jimmy_ips
Generated package 3 in file E:\ora11g\app\Administrator\diag\rdbms\ora11g\ora11g\jimmy_ips\ORA7445kq_20120624223726_COM_2.zip, mode complete
adrci>

注意ips的调用和perl有关。如果你的机器上装有多个版本的oracle,请注意环境变量的中的perl的路径。不然会有类似的报错:

adrci> ips GENERATE PACKAGE 5 in E:\ora11g\app\Administrator\diag\rdbms\ora11g\ora11g\jimmy_ips
Perl 5.006 required--this is only version 5.00503, stopped at E:\ora10g\oracle\product\10.2.0\db_1\perl\5.8.3\lib/vars.pm line 3.
BEGIN failed--compilation aborted at E:\ora10g\oracle\product\10.2.0\db_1\perl\5.8.3\lib/vars.pm line 3.
BEGIN failed--compilation aborted at E:\ora10g\oracle\product\10.2.0\db_1\perl\site\5.8.3\lib/Win32/TieRegistry.pm line 14.
Generated package 5 in file E:\ora11g\app\Administrator\diag\rdbms\ora11g\ora11g\jimmy_ips\ORA7445kq_20120624223801_COM_2.zip, mode complete
DIA-49441: Warnings while finalizing package, details in file e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g\incpkg\pkg_5\seq_2\finalize.log
 
adrci>

这样就可以把zip发给oracle诊断了。

好了,最好,我们来打扫战场。

(1)清除incident,我们可以用purge命令:

adrci> purge -age 2
adrci> show incident
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
0 rows fetched
 
adrci>

(2)清除problem,我们可以用delete命令:

adrci> show problem
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
PROBLEM_ID PROBLEM_KEY LAST_INCIDENT LASTINC_TIME
——————– ———————————————————– ——————– ————————–
1 ORA 7445 [kqrprl()+92] 22970 2012-04-20 13:42:14.953000
1 rows fetched
 
adrci>
adrci>
adrci>
adrci> delete from problem where problem_id=1
 
1 Row Deleted
adrci>
adrci>
adrci> show problem
 
ADR Home = e:\ora11g\app\administrator\diag\rdbms\ora11g\ora11g:
*************************************************************************
0 rows fetched
 
adrci>
adrci>

本来还想多写点,到后来猛然发现原来这货是为了给oracle开SR的时候,打包各类日志提供方便。这货的主要目的还是为他人做嫁衣裳了。

DBA的关键素质还是的自己能看trace,分析trace,不能把所有的希望寄托在metalink上。

[转]Oracle 清除incident和trace -- ADRCI用法的更多相关文章

  1. oracle 集合变量以及自定义异常的用法

    oracle 集合变量以及自定义异常的用法, 在过程 record_practice 有record变量和自定义异常的用法实例.具体在3284行. CREATE OR REPLACE Package ...

  2. Oracle start with connect by prior 用法

    Oracle start with connect by prior 用法    语法: select * from 表名 where 条件1 start with 条件2 connect by pr ...

  3. Oracle数据库中序列(SEQUENCE)的用法详解

    Oracle数据库中序列(SEQUENCE)的用法详解   在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了 ...

  4. Oracle的AES加密与解密用法

    Oracle的AES加密与解密用法2013年12月11日 11:50:35 iteye_751 阅读数:428--加密字符串create or replace function des3_enc( i ...

  5. Oracle中 (+)与left join 的用法区别

    Oracle中 (+)与left join 的用法区别 原创 2017年01月11日 13:33:42 6648 select * from a,b where a.id=b.id(+); (+)写在 ...

  6. 分组函数group by和Oracle中分析函数partition by的用法以及区别

    1.分组函数group by和Oracle中分析函数partition by的用法以及区别 2.开窗函数.

  7. Oracle 变量 之 define variable declare 用法及区别

    Oracle 变量 之 define variable declare 用法及区别 Table of Contents 1. 扯蛋 2. define和accept 3. variable 3.1. ...

  8. oracle:case when 语句的区间用法

    在练习case when 语句时,碰到一个例子,结果答案根本就不对,语法就通不过,开始想着是不是case 只能是一个固定的取值,毕竟例子内给的都是case是个固定的值,后来网上查了好久才发现还有区间的 ...

  9. 关于oracle中to_char和to_date的用法

      一.24小时的形式显示出来要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('200 ...

随机推荐

  1. WePY - 小程序敏捷开发实践丨掘金开发者大会

    声明:内容转载他处,如有侵权,可协商下架 本主题虽然在其它地方讲了很多次,但还是有非常多新内容.因为很多东西正在做或者想要做.本次分享主要分为以下几个部分: WePY 的介绍 WePY 的用户 上面展 ...

  2. 浅谈JS中String()与 .toString()的区别

    我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 1..toString()可以将所有的的数据都转换为字符串,但 ...

  3. jfinal中excel表格导出

    今天工作中遇到了excel表格导出的操作,还好有写好的模板,不然我也是焦头烂额,下面记录一下excel表格导出的操作步骤,同时用来给正在学习jfinal的小伙伴一些参考和学习. 首先我们需要把表格查询 ...

  4. 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...

  5. 复杂的web---web中B/S网络架构

    web中B/S网络架构 1:web中B/S网络架构 2:CDN工作机制和架构 3:负载均衡:    B/S分别是浏览器/服务器,架构流程为:     当你访问网站的时候,浏览器发送各种请求给浏览器,服 ...

  6. 如何让python嵌入html实现类似php的快速开发,十分有价值

    1.在一个文件夹名为www.html3.com的web项目来实现,首先到nginx的配置文件nginx.conf做如下配置 python和html混合编写的文件,我以文件后缀为.phtml,通过服务器 ...

  7. [20181108]with temp as 建立临时表吗.txt

    [20181108]with temp as 建立临时表吗.txt --//链接:http://www.itpub.net/thread-2106304-1-1.html--//作者提到在dg上使用w ...

  8. 洗礼灵魂,修炼python(80)--全栈项目实战篇(8)—— 计算器

    用正则表达式开发一个计算器,计算用户给定的一串带有加减乘除的公式. 要求:不能使用eval转换字符串 分析: 要求简单,就是计算混合运算,但是不能使用eval直接转换,主要就是把整个式子中的小括号优先 ...

  9. 语句调优基础知识-set statistics io on

    set statistics io on --清空缓存数据 dbcc dropcleanbuffers go --清空缓存计划 dbcc freeproccache go set statistics ...

  10. Vue2 学习笔记4

    文中例子代码请参考github 父组件向子组件传值 组件实例定义方式,注意:一定要使用props属性来定义父组件传递过来的数据 <script> // 创建 Vue 实例,得到 ViewM ...