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; " 
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
2月前
|
存储 弹性计算 运维
AI时代下阿里云基础设施的稳定性架构揭秘
计算、存储、网络作为云计算基础 IaaS 服务,一直是阿里云的核心产品,承载着百万客户的 IT 基础设施。曾经我们认为应用高可用、服务分布式可以满足客户对 IaaS 所有的稳定性诉求。
368 2
AI时代下阿里云基础设施的稳定性架构揭秘
|
SQL Oracle 关系型数据库
SQL Developer生成Oracle数据库的关系模型(ER图)
SQL Developer生成Oracle数据库的关系模型(ER图)
1095 0
|
机器学习/深度学习 缓存 人工智能
大语言模型中常用的旋转位置编码RoPE详解:为什么它比绝对或相对位置编码更好?
Transformer的基石自2017年后历经变革,2022年RoPE引领NLP新方向,现已被顶级模型如Llama、Llama2等采纳。RoPE融合绝对与相对位置编码优点,解决传统方法的序列长度限制和相对位置表示问题。它通过旋转矩阵对词向量应用角度与位置成正比的旋转,保持向量稳定,保留相对位置信息,适用于长序列处理,提升了模型效率和性能。RoPE的引入开启了Transformer的新篇章,推动了NLP的进展。[[1](https://avoid.overfit.cn/post/9e0d8e7687a94d1ead9aeea65bb2a129)]
1901 0
|
SQL 监控 测试技术
SQL现在到哪个版本及版本更新技巧与方法
SQL(Structured Query Language)作为数据库管理和操作的标准语言,随着技术的不断进步和数据库管理系统(DBMS)的持续发展,其版本也在不断更新和完善
1040 5
|
SQL 算法 Java
(二十六)MySQL分库篇:Sharding-Sphere分库分表框架的保姆级教学!
前面《MySQL主从原理篇》、《MySQL主从实践篇》两章中聊明白了MySQL主备读写分离、多主多写热备等方案,但如果这些高可用架构依旧无法满足业务规模,或业务增长的需要,此时就需要考虑选用分库分表架构。
5338 4
|
SQL 关系型数据库 数据库
PostgreSQL从小白到高手教程 - 第44讲:pg流复制部署
PostgreSQL技术大讲堂 - 第44讲:pg流复制部署
468 0
|
安全 开发工具 git
Windows11搭建Python环境(2)- Anaconda虚拟环境中安装Git
Windows11搭建Python环境(2)- Anaconda虚拟环境中安装Git
571 0
|
缓存 IDE Linux
Internal error. Please report to https://jb.gg/ide/critical-startup-errors
Internal error. Please report to https://jb.gg/ide/critical-startup-errors
470 0
|
定位技术 开发工具 Python
python实现超级玛丽游戏
Pygame是一个Python模块,旨在使编写视频游戏等多媒体应用程序变得更加轻松。它提供了一个用于处理音频、图像和鼠标/键盘输入等方面的工具集。Pygame也提供了一些预先编写好的模块,如Sprites(用于管理游戏中的对象)和Pygame.display(用于创建和管理窗口)。 Pygame基于SDL库(Simple DirectMedia Layer),它是一个跨平台的开源的低级多媒体库,用于对音频、键盘、鼠标、图形硬件以及低级的操作系统特性进行访问。 当使用Pygame时,你能够创建游戏窗口、读取键盘输入、播放音频、处理碰撞以及执行游戏逻辑。这些功能使Pygame称为一个适用于初学
842 19
python实现超级玛丽游戏
|
存储 关系型数据库 MySQL
【深入了解Nacos集群和持久化配置】 ——每天一点小知识
【深入了解Nacos集群和持久化配置】 ——每天一点小知识
792 0