由于开启审计导致故障的紧急处理

CPU 内存 100%原因

由于开启审计导致故障的紧急处理

 

紧急故障截图:

--找出消耗物理IO资源最大的的SQL语句
select disk_reads, substr(sql_text,1,4000) from v$sqlarea  order by disk_reads desc;

SELECT TO_CHAR(current_timestamp AT TIME ZONE 'GMT', 'YYYY-MM-DD HH24:MI:SS TZD') AS curr_timestamp, COUNT(username) AS failed_count
FROM  sys.dba_audit_session WHERE returncode != 0 AND TO_CHAR(timestamp, 'YYYY-MM-DD HH24:MI:SS') >= TO_CHAR(current_timestamp - TO_DSINTERVAL('0 0:30:00'), 'YYYY-MM-DD HH24:MI:SS')

这条语句严重影响了数据库性能

其中sys.dba_audit_session 是ORACLE得审计表

 

 

10G 默认审计是关闭的
11G 安装的时候默认开启的
由于前台应用程序异常的用户连接失败,继续连接。

往审计表DBA_AUDIT_SESSION  中不停的写涉及CONNECT 和DISCONNECT 的所有审计跟踪记录


DBA_AUDIT_SESSION 表中目前有1千多万条的记录,而且记录数还在增加。

当启动OEM的时候,导致Oracle自己的低效SQL

这个SQL在Elapsed Time、CPU Time、User I/O Wait Time、Buffer Gets、Physical Reads都会出现,其SQL模块是Oracle Enterprise Manager.Metric Engine。显然这是一个OEM自己的SQL,检查完整SQL语句:
SELECT TO_CHAR(current_timestamp AT TIME ZONE 'GMT', 'YYYY-MM-DD HH24:MI:SS TZD') AS curr_timestamp, COUNT(username) AS failed_count FROM sys.dba_audit_session WHERE returncode != 0 AND TO_CHAR(timestamp, 'YYYY-MM-DD HH24:MI:SS') >= TO_CHAR(current_timestamp - TO_DSINTERVAL('0 0:30:00'), 'YYYY-MM-DD HH24:MI:SS')

这个检查DBA_AUDIT_SESSION的SQL语句写法很烂,以致于一开始我还不太相信是出自Oracle,不过Oracle Enterprise Manager.Metric Engine的MODULE NAME已经说明了问题,Oracle居然自己违反对列进行操作以及不必要的转换原则。
此外,这个SQL基本上没有办法使用索引,如果DBA_AUDIT_SESSION中记录很多,那么这个SQL会非常耗时,这也算是OEM的bug,至少也是一种设计缺陷。

我们的平台的版本号为oracle 11.2.0.1

 


处理办法:
删除 DBA_AUDIT_SESSION 表中目前有1千多万条的记录

truncate table DBA_AUDIT_SESSION

 

 

 

 

 

 

 

此问题 网上有类似的文章帖子

 

--=============================================

查找相关问题

参考

此问题 网上有类似的文章帖子
地址 http://www.eygle.com/archives/2011/02/failed_login_count.html


OEM模块审计查询语句占用较大资源
作者: yangtingkun(http://yangtingkun.itpub.net)
发表于: 2011.10.14 23:21
分类: ORACLE , Bug
出处: http://yangtingkun.itpub.net/post/468/524338
---------------------------------------------------------------

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值