1. 什么是ADR
ADR是Automatic Diagnostic Repository首字母缩写,它是一个数据库外的基于文件的、并且可以通过事件编号检索和分析的存储库。
故障诊断基础设施有助于预防、检测、诊断和解决问题。 特别针对的问题是严重错误,例如由代码错误、元数据损坏和客户数据损坏引起的错误。当发生严重错误时,会为其分配一个事件编号,并且会立即捕获该错误的诊断数据(例如跟踪文件)并使用该编号进行标记。 然后将数据存储在自动诊断存储库 (ADR) 中。
2. 数据库实例的 ADR 目录结构
Oracle Client 的每个安装都包含一个 ADR,用于与任何 Oracle Client 组件中的严重故障相关的诊断数据。 ADRCI 实用程序随 Oracle Client 一起安装,以便您可以检查诊断数据并将其打包以使其能够上传到 Oracle Support。
V$DIAG_INFO
视图列出了当前 Oracle 数据库实例的所有重要 ADR 位置。
SQL> SET LINES 300 PAGES 999
SQL> COL NAME FOR A30
SQL> COL VALUE FOR A80
SQL> SELECT * FROM v$diag_info;
3. incident
每当一个错误发生的时候,oracle会创建一个incident,并且分配一个INCIDENT_ID号,同时在ADR HOME的INCIDENT目录中创建相应的INCIDENT目录,每个错误号一个INCIDENT目录,目录被命名为incdir_<INCIDENT_ID>
。在incident 目录下含有相应的DUMP文件。
4. 清理过程
4.1. 登录Oracle用户
su - oracle
4.2. 进入adrci工具界面
~]$ adrci
ADRCI: Release 18.0.0.0.0 - Production on Tue Sep 14 03:35:01 2021
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
ADR base = "/u01/app/oracle"
4.3. 查看Oracle目录,并设定某个数据库实例的目录
adrci> show home
ADR Homes:
diag/kfod/dbtest/kfod
diag/rdbms/lccdata/lccdata
diag/clients/user_oracle/host_671374128_110
diag/asmcmd/user_oracle/dbtest.zytk.com
adrci>
adrci> set homepath diag/rdbms/lccdata/lccdata
adrci> show home;
ADR Homes:
diag/rdbms/lccdata/lccdata
4.4. 查看incident目录
adrci> show incident
4.5. 清理过期的incident文件
清理10天前的incident问题文件(10天 × 24小时 × 60分钟 = 14400 分钟)
adrci> help purge
adrci> purge -age 14400 -type incident
adrci> purge -age 14400 -type trace
删除的速度不是很快。^_^
4.6. 在adrci中设置trace文件保留的策略
adrci> show control #查看可以设置的策略
adrci> help set control
set control (SHORTP_POLICY = 720) #720的单位是小时
4.7. 退出adrci工具
adrci> exit
5. 附录
12c以及以上版本部署purgeLogs工具
MOS文档:purgeLogs: Cleanup traces, logs in one command (Doc ID 2081655.1)
Usage:
purgeLogs [-days <days> [-aud] [-lsnr]] |
[-orcl <days> [-aud] [-lsnr]] |
[-tfa <days>] |
[-osw <days>] |
[-oda <days>] |
[-extra '<folder>':<days> | [, '<folder>':<days>]]
[-automigrate]
[-dryrun]
purgeLogs OPTIONS
-days <days> Purge orcl,tfa,osw,oak components logs & traces older then # days
-orcl <days> Purge only GI/RDBMS logs & traces (Default 30 days)
-tfa <days> Purge only TFA repository older then # days (Default 30 days)
-osw <days> Purge only OSW archives older then # days (Default 30 days)
-oda <days> Purge only OAK/DCS logs and trace older then # days (Default 30 days)
-extra '<folder>':<days> Purge only files in user specified folders (Default 30 days)
-aud Purge Audit logs based on '-orcl <days>' option
-lsnr It will force the cleanup of listeners log independently by the age
-dryrun It will show the purge commands w/o execute them
-automigrate It will run the adrci schema migrate commands in case of DIA-49803
-h Display this help and exit
Example:
purgeLogs
purgeLogs -days 20
purgeLogs -orcl 50
purgeLogs -orcl 50 -aud -lsnr
purgeLogs -tfa 50
purgeLogs -osw 20 -oda 10
purgeLogs -orcl 20 -osw 20 -oda 10
purgeLogs -orcl 20 -osw 20 -oda 10 -extra /tmp:10,/var/log:20
参考:https://docs.oracle.com/cd/E11882_01/server.112/e25494/diag.htm#ADMIN12294