在Oracle的ADR中设置自动删除trace文件的策略

简介: 姚远在一个有两万个客户的公司做数据库支持,什么稀奇古怪的事情都能遇到,有个客户的数据库不停地产生大量的trace,经常把硬盘撑爆,看看姚远怎么解决这个问题的。

姚远在一个有两万个客户的公司做数据库支持,什么稀奇古怪的事情都能遇到,有个客户的数据库不停地产生大量的trace,经常把硬盘撑爆,看看姚远怎么解决这个问题的。


trace文件的命令规则是,前端:实例名_ora_进程号.trc,对于后台进程,就把ora换成进程名。根据进程号和时间点分析,这些trace文件是每天凌晨3点30时的合成增量备份的rman进程产生的,Oracle的metelink网站给出了解决方法,参见Document 29061016.8,打补丁即可解决。

Bug 29061016 - huge tracefile generated by rman incremental backups with kcbtse structure (Doc ID 29061016.8) Oracle Support

但客户申请对生产系统打补丁的流程很长,目前短期内只能保守治疗,手工删除trace文件。姚远推荐客户可以在adrci中删除,例如一天内的trace文件都删除掉:


adrci> purge -age 3600 -type trace

最好设置自动删除策略,先查询一下默认的设置





adrci> show homeADR Homes: diag/rdbms/small/smalldiag/rdbms/orcl1/orcl1diag/rdbms/aurreum/aurreumdiag/rdbms/orcl/orcldiag/clients/user_oracle/host_3498212516_110diag/tnslsnr/dell/listener1adrci> set home diag/rdbms/small/smalladrci> show control
ADR Home = /u01/app/oracle/diag/rdbms/small/small:*************************************************************************ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                              SIZEP_POLICY         PURGE_PERIOD         FLAGS                PURGE_THRESHOLD      -------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- 114559742            720                  8760                 2021-06-25 11:56:19.334671 +08:00        2022-08-05 12:21:51.844023 +08:00                                                 1                    2                    110                  1                    2021-06-25 11:56:19.334671 +08:00        18446744073709551615 0                    0                    95                  1 row fetched
  • SHORTP_POLICY是720,单位小时,表示一个月,用于Incident and health monitor warnings
  • LONGP_POLICY是8760,单位小时,表示1年,用于 trace and core dump files
  • LAST_AUTOPRG_TIME 上次自动删除的时间
  • LAST_MANUPRG_TIME为空,表示没有手动删除过

下面的命令都设置成3天72小时,或者一周168小时。





adrci> set control (SHORTP_POLICY=168)adrci> set control (LONGP_POLICY=168)adrci> show control
ADR Home = /u01/app/oracle/diag/rdbms/small/small:*************************************************************************ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                              SIZEP_POLICY         PURGE_PERIOD         FLAGS                PURGE_THRESHOLD      -------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- 114559742            168                  168                  2022-08-05 15:47:32.029723 +08:00        2022-08-05 12:21:51.844023 +08:00                                                 1                    2                    110                  1                    2021-06-25 11:56:19.334671 +08:00        18446744073709551615 0                    0                    95                  1 row fetched

运行下面的purge命令,发现LAST_MANUPRG_TIME时间已经有了,trace文件被删除掉了。




adrci> purgeadrci> show control
ADR Home = /u01/app/oracle/diag/rdbms/small/small:*************************************************************************ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                              SIZEP_POLICY         PURGE_PERIOD         FLAGS                PURGE_THRESHOLD      -------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- 114559742            168                  168                  2022-08-05 15:47:32.029723 +08:00        2022-08-05 12:21:51.844023 +08:00        2022-08-05 15:48:43.927238 +08:00        1                    2                    110                  1                    2021-06-25 11:56:19.334671 +08:00        18446744073709551615 0                    0                    95                  1 row fetched

姚远提供一个脚本,可以对不同的ADR Home批量进行设置



#!/bin/shfor ADRHOME in `adrci exec="show home"`do    if [$ADRHOME ="ADR" -o $ADRHOME = "Homes:"]      then        continue;    fi    echo $ADRHOME    adrci<<EOF      set home $ADRHOME      set control (SHORTP_POLICY=168)      set control (LONGP_POLICY=168)      purge    exitEOFdone
相关文章
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
【赵渝强老师】Oracle的控制文件与归档日志文件
|
24天前
|
SQL Oracle 关系型数据库
Oracle 从 DMP 文件中恢复指定表的步骤
Oracle 从 DMP 文件中恢复指定表的步骤
38 7
|
25天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
102 2
|
1月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
1月前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
1月前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
29 5
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
2月前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
192 64