ADRCI是在Oracle11g以后提供的实用程序,用来更加灵活的检查和分析各个ORACLE_HOME的告警文件,跟踪文件。

根据文档和帮助,ADRCI是具有purge功能的。

adrci> help purge    Usage: PURGE [[-i | ] |               [-age [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]]]:    Purpose: Purge the diagnostic data in the current ADR home. If no           option is specified, the default purging policy will be used.    Options:    [-i id1 | id1 id2]: Users can input a single incident ID, or a    range of incidents to purge.      [-age ]: Users can specify the purging policy either to all    the diagnostic data or the specified type. The data older than    ago will be purged      [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]: Users can specify what type of    data to be purged.    Examples:    purge    purge -i 123 456    purge -age 60 -type incident

仅仅看这个帮助,我们认为的ADRCI Purge功能是怎样的呢?比如我们执行了下面这个命令,那么Oracle应该将我们的告警日志中在距现在这个时刻1440分钟(也就是1天)以前的所有日志内容删除,是这样吧?可是确实是这样吗?

adrci> PURGE -age 1440 -type ALERT

我们测试一下。

adrci> show home ADR Homes:  diag/rdbms/orcl/orcl diag/tnslsnr/dbserver/listener adrci> set home diag/rdbms/orcl/orcl adrci> show alert -tail 2010-05-02 20:04:56.447000 +08:00 Verifying file header compatibility for 11g tablespace encryption.. Verifying 11g file header compatibility for tablespace encryption completed SMON: enabling tx recovery Database Characterset is AL32UTF8 No Resource Manager plan active 2010-05-02 20:04:58.182000 +08:00 replication_dependency_tracking turned off (no async multimaster replication found) 2010-05-02 20:04:59.607000 +08:00 Starting background process QMNC QMNC started with pid=18, OS id=1405  2010-05-02 20:05:00.653000 +08:00 Completed: ALTER DATABASE OPEN 2010-05-02 20:05:07.033000 +08:00 Starting background process CJQ0 CJQ0 started with pid=19, OS id=1426  2010-05-02 20:10:00.609000 +08:00 Starting background process SMCO SMCO started with pid=20, OS id=1587  2010-05-02 20:11:47.241000 +08:00 Thread 1 advanced to log sequence 16 (LGWR switch)  Current log# 1 seq# 16 mem# 0: /app/oracle/oradata/orcl/redo01.log

现在告警日志中存在的某两次记录时间是2010-05-02 20:04:56和2010-05-02 20:11:47。我们准备删除掉20:04前后的告警信息,保留20:11的。

[oracle@dbserver alert]$ date Sun May  2 20:14:20 CST 2010 [oracle@dbserver alert]$ pwd /app/oracle/diag/rdbms/orcl/orcl/alert [oracle@dbserver alert]$ ls -l total 24 -rw-r----- 1 oracle dba 20925 May  2 20:11 log.xml

当前的时间是2010-05-02 20:14。检查了Oracle11g中告警日志的默认存储位置,最后的一次更新时间是20:11。

[oracle@dbserver alert]$ date Sun May  2 20:15:51 CST 2010   adrci> PURGE -age 5 -type ALERT adrci> show alert -tail 2010-05-02 20:04:56.447000 +08:00 Verifying file header compatibility for 11g tablespace encryption.. Verifying 11g file header compatibility for tablespace encryption completed SMON: enabling tx recovery Database Characterset is AL32UTF8 No Resource Manager plan active 2010-05-02 20:04:58.182000 +08:00 replication_dependency_tracking turned off (no async multimaster replication found) 2010-05-02 20:04:59.607000 +08:00 Starting background process QMNC QMNC started with pid=18, OS id=1405  2010-05-02 20:05:00.653000 +08:00 Completed: ALTER DATABASE OPEN 2010-05-02 20:05:07.033000 +08:00 Starting background process CJQ0 CJQ0 started with pid=19, OS id=1426  2010-05-02 20:10:00.609000 +08:00 Starting background process SMCO SMCO started with pid=20, OS id=1587  2010-05-02 20:11:47.241000 +08:00 Thread 1 advanced to log sequence 16 (LGWR switch)  Current log# 1 seq# 16 mem# 0: /app/oracle/oradata/orcl/redo01.log   [oracle@dbserver alert]$ ls -l total 24 -rw-r----- 1 oracle dba 20925 May  2 20:11 log.xml

我们执行的命令成功了,但是很明显我们希望的目的没有达到,实际上,就好似没有执行这条命令一样,我们想要删除5分钟以前的内容,执行purge命 令的时刻是20:15,那么理应在20:10之前的告警日志内容都被删除掉,但是实际上告警日志中20:04的内容依然还在,并且我们也可以看出 log.xml文件的最后更新时间仍然是20:11。

那么purge命令到底有没有效果呢?

[oracle@dbserver alert]$ date Sun May  2 20:28:34 CST 2010   adrci> PURGE -age 5 -type ALERT adrci> show alert -tail adrci>    [oracle@dbserver alert]$ ls -l total 0

在20:28的时候我们再次执行了purge命令,仍然是尝试删除5分钟以前的内容,这次的结果是所有的告警日志内容都被清空了,告警日志文件 log.xml也被删除了。这条命令实际上有效果的,但是为什么不是我们期望的那样灵敏呢?为什么第一次没有成功,而第二次却成功了呢?

原因在于,ADRCI  Purge命令的操作单元是文件而不是文件内容,只有整个文件的最后更新时间在我们指定的purge命令条件之前,该文件才会被删除,也就是说,要不整个 文件都删除,要不一点儿也不删除。对于我们后一次执行的命令,因为文件的最后更新时间是20:11,这个时间点在我们执行purge命令时间点的5分钟以 前,因此整个告警日志都被删除。而对于我们第一次执行的命令,因为告警日志中不但包含了执行purge命令时间点5分钟之前的内容,还包括了5分钟之前到 执行purge命令时间点之间的内容(20:11的内容位于20:10和20:15之间),因此文件无法被删除。

无论是purge的什么TYPE,或者说purge -i 命令也同样是这样,对于INCIDENT来说,每个Incident ID在INCIDENT目录中都是一个子目录,因此很容易做到整个子目录的删除。

不得不说这样的purge命令并不是我们期望的,我也希望看到在今后的版本升级中ADRCI Purge可以变得如我们一开始期望的那样,直接删除符合条件的文件内容,而不是现在这样删除文件。

我们可以预见到对于特别繁忙的系统,假设每分钟都有告警日志内容生成,那么我们始终不可能执行成功purge,我们只能使用purge -age 0 -type ALERT这样的命令来清除所有的log内容。那么现在这样的purge命令我们该如何精确使用呢?

实际上仍然需要另外的客户化脚本,比如在crontab中定义每天晚上的某个时刻将现在的log.xml文件更名为log_`date`.xml, 然后统一使用purge命令删除符合条件的告警日志文件备份。特别需要注意的是,更名规则要符合purge命令的检查规范,purge命令只会对相应目录 中以log开头以xml结尾的文件进行检查。

PS:purge命令只会清除xml文件,对于trace目录中的和Oracle11g之前版本兼容的alert_.log文件并不会有任何改动。

[oracle@dbserver trace]$ pwd /app/oracle/diag/rdbms/orcl/orcl/trace [oracle@dbserver trace]$ ls -l alert* -rw-r----- 1 oracle dba 41444 May  2 20:20 alert_orcl.log

转自: http://www.dbform.com/html/tag/adrci

oracle adrci purge,adrci中的purge相关推荐

  1. ARX中的Purge

    备案,今天查到的ARX中的Purge函数 未公开函数. extern Acad::ErrorStatus purgeDatabase(AcDbDatabase *pDb); extern Acad:: ...

  2. 【DB宝44】Oracle rac集群中的IP类型简介

    文章目录 Oracle rac集群中的IP类型简介 (一)Public IP (二)Private IP (三)Virtual IP(VIP) (四)SCAN IP (五)GNS VIP (六)HAI ...

  3. 如何将TXT,EXCEL或CSV数据导入ORACLE到对应表中

    如何将TXT,EXCEL或CSV数据导入ORACLE到对应表中 2011-05-12 14:19 方法一,使用SQL*Loader      这个是用的较多的方法,前提必须oracle数据中目的表已经 ...

  4. Oracle的left join中on和where的区别

    Oracle的left join中on和where的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和wher ...

  5. Oracle 11G R2 RAC中的scan ip 的用途和基本原理【转】

    Oracle 11G R2 RAC增加了scan ip功能,在11.2之前,client链接数据库的时候要用vip,假如你的cluster有4个节点,那么客户端的tnsnames.ora中就对应有四个 ...

  6. oracle sql命令行中上下左右使用

    oracle sql命令行中上下左右使用 yum -y install readline,rlwrap 配置环境变量 alias sqlplus='rlwrap sqlplus' 测试 posted ...

  7. oracle删除表空间中的表,ORACLE删除表空间中的所有表

    ORACLE删除表空间中的所有表,如果是非sysdbA连接用如下sql语句 declare vsql varchar2(200); cursor c1 is select 'drop table '| ...

  8. php7连接oracle数据库,使用一个持久连接连到 Oracle 数据库 - PHP 7 中文文档

    (PHP 5, PHP 7, PECL OCI8 >= 1.1.0) oci_pconnect – 使用一个持久连接连到 Oracle 数据库 说明 oci_pconnect ( string ...

  9. 【NUMBER】有关Oracle NUMBER类型定义中precision和scale的测试和总结

    http://space.itpub.net/519536/viewspace-557312 [NUMBER]有关Oracle NUMBER类型定义中precision和scale的测试和总结 上一篇 ...

最新文章

  1. 华为提出十大数学挑战!解出一个就是年薪百万!
  2. Redis 学习资料整理
  3. Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介、安装、使用方法详细攻略—案例之实现机器人在线24小时智能翻译
  4. 计算机入门与学习回忆(一)
  5. Docker运行tensorflow试试
  6. diy 多路监控_如何通过此DIY设置监控空气质量
  7. 【华为大咖分享】1.云上开发,代码托管只是第一步(后附PPT下载地址)
  8. 超时尚的UI电子商务PSD分层模板,临摹学习必备
  9. AJAX框架衣柜推拉门设计,带镜子的推拉门衣柜如何设计好看
  10. Gym 100818I Olympic Parade(位运算)
  11. 简单快捷好用的vim配置和终端配置推荐
  12. 在网络蚂蚁中设置代理服务器
  13. 修改了DNS服务器网速慢,网络速度缓慢怎么办?轻松一键修改DNS设置让网速提升五倍...
  14. leetcode 算法题575 (简单147) 罗马数字转整数
  15. React上拉加载和下拉刷新
  16. future java get_关于 Future get方法的疑问
  17. my read_university
  18. android室内定位传感器辅助pdr jar,基于Android的PDR和WiFi指纹融合室内定位技术研究...
  19. 浪涌电流Inrush Current产生原因以及解决方案
  20. 元宇宙、数字孪生与汽车

热门文章

  1. Git从现有仓库新建干净版本(清除版本commit记录)
  2. POJ2403 Hay Points
  3. c#程序实现调用迅雷
  4. asp.net MVC学习的一些总结
  5. [原] Android中Scroller类的分析
  6. WCF分布式开发常见错误(3):客户端调用服务出错
  7. mysql like 大小写_mysql - 如何使用LIKE通配符在列中搜索(不区分大小写)?
  8. 答案对程序不对matlab,程序结果不对
  9. python版本可执行可嵌入_Python程序打包成exe可执行文件的方法探究
  10. 计算机学院嘉年华标题,我院计算机系举办计算机嘉年华系列活动