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


                                           本文为姚远Oracle ACE(微信dataace)原创,请尊重知识产权,不接受任何抄袭、演绎和注明或未经注明出处的转载。                   
    
    • 1

    姚远老师在一个有两万个客户的公司做数据库支持,什么稀奇古怪的事情都能遇到,有个客户的数据库不停地产生大量的trace,经常把硬盘撑爆,看看姚远怎么解决这个问题的。
    在这里插入图片描述
    trace文件的命令规则是,前端:实例名_ora_进程号.trc,对于后台进程,就把ora换成进程名。根据进程号和时间点分析,这些trace文件是每天凌晨3点30时的合成增量备份的rman进程产生的,Oracle的metelink网站给出了解决方法,参见Document 29061016.8,打补丁即可解决。可以加WX:dataace欢迎关注姚远老师的更多案例分享。

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

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

    adrci> purge -age 3600 -type trace 
    
    • 1

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

    
    adrci> show home
    ADR Homes: 
    diag/rdbms/small/small
    diag/rdbms/orcl1/orcl1
    diag/rdbms/aurreum/aurreum
    diag/rdbms/orcl/orcl
    diag/clients/user_oracle/host_3498212516_110
    diag/tnslsnr/dell/listener1
    adrci> set home diag/rdbms/small/small
    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            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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    adrci> purge
    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        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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    
    #!/bin/sh
    for ADRHOME in `adrci exec="show home"`
    do
        if [$ADRHOME ="ADR" -o $ADRHOME = "Homes:"]
          then
            continue;
        fi
        echo $ADRHOME
        adrci<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    这是姚远老师在日常对客户的支持中遇到的一个案例,欢迎更多的读者一起讨论,一起交流数据库技术!
    本文为姚远Oracle ACE(微信dataace)原创,请尊重知识产权,不接受任何抄袭、演绎和注明或未经注明出处的转载。

    下面是我的微信

  • 相关阅读:
    MySQL数据库操作
    分组后再子集再查询
    【C/自定义类型详解】——结构体(struct)、位段、枚举(enum)、联合(union)
    【python】用python进行进制转换(10进制、2进制、16进制)
    【Java基础】StringBuilder类概述及字符串拼接、反转升级版案例
    HC32L110 在 Ubuntu 下使用 J-Link 烧录
    Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!
    STM32 使用内部晶振导致 Can 通讯异常
    git工作常用命令
    Vue基础与常用指令,Element基础
  • 原文地址:https://blog.csdn.net/weixin_43424368/article/details/126252003