案例一则,谁在这么频繁调用LOGMINER程序?

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。

案例背景

客户的一套oracle 11.2.0.4的数据库,根据他们的描述,说是自安装以来,alert一直有报错,但不影响使用,让帮忙分析一下什么原因。

分析问题

远程上去看了一下相关数据库的alert,其实也不算是什么报错,是LOGMINER的相关记录信息,记录的信息如下:

LOGMINER: summary for session# = 2147483905
LOGMINER: StartScn: 3936937 (0x0000.003c12a9)
LOGMINER: EndScn: 0 (0x0000.00000000)
LOGMINER: HighConsumedScn: 0
LOGMINER: session_flag: 0x0
LOGMINER: Read buffers: 8
LOGMINER: Memory LWM: limit 10M, LWM 8M, 80%
LOGMINER: Memory Release Limit: 0M
....................................
LOGMINER: summary for session# = 2147484417
LOGMINER: StartScn: 3936937 (0x0000.003c12a9)
LOGMINER: EndScn: 0 (0x0000.00000000)
LOGMINER: HighConsumedScn: 0
LOGMINER: session_flag: 0x0
LOGMINER: Read buffers: 8
LOGMINER: Memory LWM: limit 10M, LWM 8M, 80%
LOGMINER: Memory Release Limit: 0M

只不过是这些信息记录比较频繁,大约是30s就会记录一次。

为什么会产生这些?说明有程序调用了LOGMINER程序,只要调用了该LOGMINER程序,就会写入信息到alert日志。而且根据官方说明,这些信息无法屏蔽,具体可以查看文档说明,相关文档参考如下:

Alert.log Messages ‘LOGMINER: krvxpsr summary’ (Doc ID 1485217.1)

LOGMINER: Summary For Session# = nnn in 11g (Doc ID 1632209.1)

谁在使用?

既然无法屏蔽这些信息,那么怎么知道谁在使用它呢?(无法解决问题,那就解决提出问题的人,你说是不是呢,哈哈哈!!!)

以alert日志写得那么频繁,手工去调用LOGMINER程序是不太可能了,排除掉这个,那就是第三方程序在调用了(如类似OGG、cdc软件了)。排查一下,并没有发现使用OGG,那就其他的CDC软件了。

那要怎么找到这个相关的LOGMINER会话,通过alert日志 “LOGMINER: summary for session# = 2147484417”,里面的这个session# 并不是vKaTeX parse error: Expected 'EOF', got '#' at position 40: …相关的会话,这个session#̲指的是vlogmnr_session里面的SESSION_ID,如下所示:

col db_name for a20;
set linesize 400;
select SESSION_ID,SESSION_NAME,SESSION_STATE,DB_NAME,db_id,start_Scn, end_scn, processed_scn from v$logmnr_session;

SESSION_ID SESSION_NAME 		    SESSION_S DB_NAME			DB_ID  START_SCN    END_SCN PROCESSED_SCN
---------- -------------------------------- --------- -------------------- ---------- ---------- ---------- -------------
2147484417				    UNKNOWN				    0	       0	  0		0

但v l o g m n r s e s s i o n 并没有记录相关的客户端信息,也无法找到谁在调用它。后面思考了一下,既然你用 L O G M I N E R 来挖掘日志,你挖掘完,是不是要查看挖掘后的数据,我们知道那个数据是保留在 v logmnr_session并没有记录相关的客户端信息,也无法找到谁在调用它。后面思考了一下,既然你用LOGMINER来挖掘日志,你挖掘完,是不是要查看挖掘后的数据,我们知道那个数据是保留在v logmnrsession并没有记录相关的客户端信息,也无法找到谁在调用它。后面思考了一下,既然你用LOGMINER来挖掘日志,你挖掘完,是不是要查看挖掘后的数据,我们知道那个数据是保留在vlogmnr_contents,那是不是是需要去查询v l o g m n r c o n t e n t s 这个视图?我们只要找到哪些会话在调用 v logmnr_contents这个视图?我们只要找到哪些会话在调用v logmnrcontents这个视图?我们只要找到哪些会话在调用vlogmnr_contents相关的sql,是不是就抓出那个捣蛋鬼了,于是有了下面的语句:

set linesize 400
col sql_text for a200
col machine for a25
col program for a25
col sample_time for a25
select b.sample_time, b.SESSION_ID, b.SESSION_SERIAL#, b.PROGRAM,b.MACHINE,substr(a.SQL_TEXT,1,150) sql_text
  from v$sql a, v$active_session_history b
 where b.SQL_ID = a.sql_id
   and a.sql_text like '%logmnr%'
   and b.SAMPLE_TIME>sysdate-3/1440;

在这里插入图片描述

上面信息显示一清二楚,把它发给客户,让他们去确认,看看WIN-V66D44CMLMG这台机器哪个程序在搞鬼。

关注我,学习更多的数据库知识!
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老苏畅谈运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值