Menu Close

Oracle diag目录下incident、trace等文件的清理

1. 什么是ADR

ADR是Automatic Diagnostic Repository首字母缩写,它是一个数据库外的基于文件的、并且可以通过事件编号检索和分析的存储库。

故障诊断基础设施有助于预防、检测、诊断和解决问题。 特别针对的问题是严重错误,例如由代码错误、元数据损坏和客户数据损坏引起的错误。当发生严重错误时,会为其分配一个事件编号,并且会立即捕获该错误的诊断数据(例如跟踪文件)并使用该编号进行标记。 然后将数据存储在自动诊断存储库 (ADR) 中。


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