adrci命令

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
一、adrci说明 

    在oracle11g中,dump file的目录已经有所改变,bdump和udump整合到trace中,cdump独立出一个。 
oracle新增了一个ADRCI(Automatic Diagnostic Repository Command Interpreter)的工具, 
统一管理ASM实例和多个数据库实例的alert文件、后台trace文件、用户trace文件,dump文件等等。 
而且这个工具可以快速查询错误相关的所有trace文件,并将这些文件打包到一个zip文件,以便将问题 
相关的信息提供给Oracle的技术支持。 

二、查看文件 
1)进入、退出adrci 
--显示帮助 
[root@oratest ~]# su - oracle 
[oracle@oratest ~]$ which adrci 
~/bin/adrci 

[oracle@oratest trace]$ adrci 
ADRCI: Release 11.2.0.3.0 - Production on Wed Dec 23 10:30:26 2015 
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved. 
ADR base = "/u01"  
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           ---若非我们想要的目录,可以指定  set home diag/rdbms/tinadb/tinadb 
ADR Homes: 
diag/rdbms/tinadb/tinadb 

--退出ADRCI: 
adrci>>exit或者quit  回车 
    
--备注 
1.在adrci中命令大小写不敏感 但使用搜索串的时候是敏感的,比如:show tracefile %mmon% 

2.在adrci中不能使用退格(backspace)怎么办 
跟sqlplus一样,有下面几种选择: 
用del键; 
使用Ctrl+backspace; 
使用Ctrl+u删除整行(bash下); 
在os命令行下stty erase ^h  (可以直接写到oracle的.profile/.bash_profile下面) 

2)查看alert日志 
1.show alert -tail (默认是10条条目) 
2.show alert -tail -f(类似tail -f alertlog一样) 
3.show alert 
4.show alert -p "MESSAGE_TEXT like '%ORA-%'" 
更多可见 help show alert 
注意,show alert的起始点是在control中设置的保留时间之后的日志,或者说是purge之后的日志,之前的日志无法显示。 

举例: 
adrci> show alert -tail -f 
2015-12-23 08:35:13.712000 +08:00 
  Current log# 2 seq# 191 mem# 0: /u01/oradata/tinadb/redo02.log 
Archived Log entry 296 added for thread 1 sequence 190 ID 0x637eb2fb dest 1: 
2015-12-23 08:50:18.242000 +08:00 
Thread 1 advanced to log sequence 192 (LGWR switch) 
  Current log# 3 seq# 192 mem# 0: /u01/oradata/tinadb/redo03.log 
Archived Log entry 297 added for thread 1 sequence 191 ID 0x637eb2fb dest 1: 
2015-12-23 09:05:17.755000 +08:00 
Thread 1 advanced to log sequence 193 (LGWR switch) 
  Current log# 1 seq# 193 mem# 0: /u01/oradata/tinadb/redo01.log 
Archived Log entry 298 added for thread 1 sequence 192 ID 0x637eb2fb dest 1: 
2015-12-23 09:20:20.346000 +08:00 
Thread 1 advanced to log sequence 194 (LGWR switch) 
  Current log# 2 seq# 194 mem# 0: /u01/oradata/tinadb/redo02.log 
Archived Log entry 299 added for thread 1 sequence 193 ID 0x637eb2fb dest 1: 

3)查看control 
adrci> show control 
ADR Home = /u01/diag/rdbms/tinadb/tinadb: 
************************************************************************* 
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                              
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- 
2092229604           720                  8760                 2015-12-09 17:41:58.349021 +08:00        2015-12-23 10:05:32.222256 +08:00                                                 1                    2                    80                   1                    2015-12-09 17:41:58.349021 +08:00       
1 rows fetched 
关于control的设置,除了默认的SHORTP_POLICY为720小时,LONGP_POLICY为8760小时外,我们可以修改这2个时间: 

adrci> set control (SHORTP_POLICY = 360) 
adrci> set control (LONGP_POLICY = 2160) 
adrci> show control 
ADR Home = /u01/diag/rdbms/tinadb/tinadb: 
************************************************************************* 
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                              
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- 
2092229604           360                  2160                 2015-12-09 17:41:58.349021 +08:00        2015-12-23 10:05:32.222256 +08:00                                                 1                    2                    80                   1                    2015-12-09 17:41:58.349021 +08:00       

这样就改成了tracefiles保留360小时,即15天,incident file保留2160小时,即90天。 
上述就是oracle自己保留日志的期限,我们也可以通过purge这个命令来手工的清空。 


4)快速定位tracefile 
(1)列出所有跟踪文件:            show tracefile 
(2)模糊查询跟踪文件,比如某个进程的,注意这里区分大小写        show tracefile %mmon% 
(3)可以指定某个路径              show tracefile %mmon% -path /home/steve/temp 
(4)按时间排序                    show tracefile -rt 

举例: 
adrci> show tracefile %mmon% 
     diag/rdbms/tinadb/tinadb/trace/tinadb_mmon_7202.trc 
     diag/rdbms/tinadb/tinadb/trace/tinadb_mmon_21083.trc 
     diag/rdbms/tinadb/tinadb/trace/tinadb_mmon_8320.trc 
     diag/rdbms/tinadb/tinadb/trace/tinadb_mmon_4137.trc 

三、定位incident和problem 
常用: 
show incident 
show incident -mode detail -p "incident_id=1" 
show problem 
show problem -p "problem_id=2" 
更多信息见help show incident或help show problem。 

举例: 
adrci> show incident 
ADR Home = /u01/diag/rdbms/tinadb/tinadb: 
************************************************************************* 
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME                              
-------------------- ----------------------------------------------------------- ---------------------------------------- 
53353                ORA 600 [krbnpdf_wrngdbid_3]                                2015-12-17 10:09:33.291000 +08:00       
53354                ORA 600 [krbnbeg_norestart]                                 2015-12-17 10:24:52.395000 +08:00       
53355                ORA 600 [krbnpdf_nonid]                                     2015-12-17 10:28:17.766000 +08:00       
53417                ORA 600 [krbnbeg_norestart]                                 2015-12-17 10:32:58.256000 +08:00       
53418                ORA 600 [krbnpdf_nonid]                                     2015-12-17 10:34:22.881000 +08:00       
5 rows fetched 

adrci> show problem 
ADR Home = /u01/diag/rdbms/tinadb/tinadb: 
************************************************************************* 
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME                             
-------------------- ----------------------------------------------------------- -------------------- ---------------------------------------- 
1                    ORA 600 [krbnpdf_wrngdbid_3]                                53353                2015-12-17 10:09:33.291000 +08:00       
2                    ORA 600 [krbnbeg_norestart]                                 53417                2015-12-17 10:32:58.256000 +08:00       
3                    ORA 600 [krbnpdf_nonid]                                     53418                2015-12-17 10:34:22.881000 +08:00       
3 rows fetched 

我们看到有5个incident和3个problem 
problem指的是大的问题,叫criticial error, 一个大问题会由很多小的incidents所导致。所以他们是1:n的关系. 

查看细节: 
adrci> show incident -mode detail -p "incident_id=53353" 
ADR Home = /u01/diag/rdbms/tinadb/tinadb: 
************************************************************************* 

********************************************************** 
INCIDENT INFO RECORD 1 
********************************************************** 
   INCIDENT_ID                   53353 
   STATUS                        ready 
   CREATE_TIME                   2015-12-17 10:09:33.291000 +08:00 
   PROBLEM_ID                    1 
   CLOSE_TIME                    <NULL> 
   FLOOD_CONTROLLED              none 
   ERROR_FACILITY                ORA 
   ERROR_NUMBER                  600 
   ERROR_ARG1                    krbnpdf_wrngdbid_3 
   ERROR_ARG2                    /u01/oradata/tinadb/system01.dbf 
   ERROR_ARG3                    1669126943 
   ERROR_ARG4                    1668473151 
   ERROR_ARG5                    1669126943 
   ERROR_ARG6                    <NULL> 


四、ips打包 
   将相关的incident的文件打包给oracle,上传到SR上。我们这里用到一个IPS(incident package service)服务。 
我们先创建一个逻辑的package,有以下几种方式: 

1.什么参数都不带,表示以默认的level typical, 里面无任何内容。 
adrci> ips create package 
Created package 1 without any contents, correlation level typical 

2.加incident参数,指明某个incident。默认level还是typical。 
adrci> ips create package incident 53353 
Created package 2 based on incident id 53353, correlation level typical 

3.加incident参数,指定某个incident,设置level为all。 
adrci> ips create package incident 53354 correlate all 
Created package 3 based on incident id 53354, correlation level al 

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> ips create package problem 1 correlate basic 
Created package 5 based on problem id 1, correlation level basic 

6.加time参数,设置开始时间to结束时间,后面的+8:00表示东八区。 
adrci> ips create package time '2015-12-22 00:00:00' to '2015-12-23 00:00:00' 
Created package 6 based on time range 2015-12-22 00:00:00.000000 +08:00 to 2015-12-23 00:00:00.000000 +08:00, correlation level typical 


还可以追加文件到PACKAGE 3: 
adrci> ips add new incidents package 3 
Added new incidents to package 3 
adrci> ips add problem 12 package 3 
Added problem 12 to package 3 


五、将包放到实际的物理位置 
adrci> ips generate package 3 
Generated package 3 in file /u01/diag/rdbms/tinadb/tinadb/trace/ORA600krb_20151223104459_COM_1.zip, mode complete 

自定义路径,加in参数即可: 
adrci>  ips GENERATE PACKAGE 3 in /tmp 
Generated package 3 in file /tmp/ORA600krb_20151223104459_COM_2.zip, mode complete 

注意:ips的调用和perl有关。需要预先在os安装 yum install -y perl 否则这里会报错 

有了这个zip包,我们可以直接发送给oracle技术支持了。 


六、解压 
最后简单介绍一下UNPACK命令,这个命令可以将得到的zip文件解压到指定目录: 

adrci> ips get metadata from file /tmp/ORA600krb_20151223104459_COM_2.zip 
IPS metadata from file /tmp/ORA600krb_20151223104459_COM_2.zip: 
---------------------------------------------------------- 
<?xml version="1.0" encoding="US-ASCII"?> 
<PACKAGE> 
    <PACKAGE_ID>3</PACKAGE_ID> 
    <PACKAGE_NAME>ORA600krb_20151223104459</PACKAGE_NAME> 
    <MODE>Complete</MODE> 
    <SEQUENCE>2</SEQUENCE> 
    <LAST_COMPLETE>2</LAST_COMPLETE> 
    <DATE>2015-12-23 11:33:51.703402 +08:00</DATE> 
    <ADR_BASE>/u01</ADR_BASE> 
    <ADR_HOME>/u01/diag/rdbms/tinadb/tinadb</ADR_HOME> 
    <PROD_NAME>rdbms</PROD_NAME> 
    <PROD_ID>tinadb</PROD_ID> 
    <INST_ID>tinadb</INST_ID> 
    <OCM_GUID/> 
    <OCM_ANNOTATION/> 
    <FINALIZED>1</FINALIZED> 
</PACKAGE> 

---------------------------------------------------------- 
adrci> ips unpack file /tmp/ORA600krb_20151223104459_COM_2.zip into /tmp 
Unpacking file /tmp/ORA600krb_20151223104459_COM_2.zip into target /tmp 

七、清除purge 
(1)清除incident,我们可以用purge命令: 
adrci> purge -age 2 

(2)清除problem,我们可以用delete命令: 
adrci> delete from problem where problem_id=1 

(3)清除trace 
adrci> purge -age 1440 -type trace --可以删除24h以前的trace 

八、命令行执行adrci命令 
[oracle@oratest ~]$ adrci exec="show homes;echo '20070712';echo '';show base; " 
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Linux 开发工具 数据安全/隐私保护
CentOS7报错:“xxx is not in the sudoers file. This incident will be reported“解决方法
CentOS7报错:“xxx is not in the sudoers file. This incident will be reported“解决方法
|
关系型数据库 PostgreSQL iOS开发
zsh: command not found: psql 解决方法
zsh: command not found: psql 解决方法
|
Oracle 关系型数据库 Java
RAC 静默安装 11g---database静默安装
RAC 静默安装 11g---database静默安装
1898 0
|
索引 关系型数据库 Oracle
SQLLDR 命令
SQL*Loader 是一个命令行下的操作工具,对应的操作系统命令是SQLLDR 语法:SQLLDR keyword=value [,keyword=value,...] 选项:   userid -- ORACLE 用户名/口令   control -- 控制文件名   log ...
1441 0
|
数据安全/隐私保护
Linux_服务器_03_xxx is not in the sudoers file.This incident will be reported.的解决方法
1.切换到root用户下,怎么切换就不用说了吧,不会的自己百度去.2.添加sudo文件的写权限,命令是:chmod u+w /etc/sudoers3.编辑sudoers文件vi /etc/sudoers找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL ...
951 0
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 数据库
|
安全 Oracle 关系型数据库