问题描述
- 开发同事在在14点左右发现任务表
task_info
数据不正确,3个小时之前的数据消失了,数据截至时间11:38:27
问题分析
查询过dba_source,只找到一个删除该表的存储过程,而且也不会造成这种情况;
根据现象,怀疑有人在11:38左右做了delete操作且没有写where条件,把整表数据全部删除;
关联查询dba_hist_active_sess_history,gv$sql未发现相关语句
关联查询gv$active_session_history,gv$sql也未发现相关语句
可能时间太久,sql已经不在缓存中 ,根据推测时间精确查找gv$active_session_history,发现有delete操作,且通过等待事件参数和object_id都确定为这个表,但是sql缺失,不能确定是否是该条记录,且通过machine等信息看,还是一个iis站点程序,一般情况程序不会犯这等错误
select t.* from v$active_session_history t where t.sample_time between to_date('2020-11-26 11:36:00','yyyy-mm-dd hh24:mi:ss') and to_date('2020-11-26 11:40:00','yyyy-mm-dd hh24:mi:ss') and t.SQL_OPNAME not in ('SELECT','INSERT','UPDATE')
通过logminer解析日志查看相关信息
恢复相关时刻的日志
select t.FIRST_TIME, t.NAME, t.BLOCKS * t.BLOCK_SIZE / 1024 / 1024 size_mb, t.NEXT_TIME, t.COMPLETION_TIME from v$archived_log t order by first_time desc;
通过rman恢复相关归档日志
run{ALLOCATE CHANNEL CH1 DEVICE TYPE DISK;ALLOCATE CHANNEL CH2 DEVICE TYPE DISK;ALLOCATE CHANNEL CH3 DEVICE TYPE DISK;ALLOCATE CHANNEL CH4 DEVICE TYPE DISK;set archivelog destination to '+DG_FLASH_ARCH';restore archivelog from time 'sysdate-5/24';}
执行logminer
begin dbms_logmnr.add_logfile('+dg_flash_arch/rac/ARCHIVELOG/2020_11_26/thread_2_seq_119065.391.1057504707',dbms_logmnr.new); --dbms_logmnr.add_logfile('+DG_FLASH_ARCH/rac/archivelog/2020_11_26/thread_2_seq_119065.391.1057504707',dbms_logmnr.ADDFILE);end;begin dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog+dbms_logmnr.committed_data_only);end;create table t1 tablespace USERS as select * from v$logmnr_contents where table_name='TASK_INFO' and OPERATION='DELETE';select t1.machine_name,t1.client_id,t1.* from t1 order by t1.client_id desc;begin DBMS_LOGMNR.END_LOGMNR();end;
查询machine_name,client_id,session#编号信息都是没有有效信息
最后发现有解析redo结果中有事务id,对比v$active_session_history中之前找到的那条记录,发现解析出来的事务号跟其一致,这下就证实了是程序删除的
问题回转给开发查找代码,最终找到相应代码,并整改。
总结
查找过程中,线索屡次中断,还好没放弃,最后意外通过事务号一锤定音。
原文转载:http://www.shaoqun.com/a/493176.html
慧聪集团:https://www.ikjzd.com/w/1836
韩国naver:https://www.ikjzd.com/w/1727
cbo:https://www.ikjzd.com/w/2670
问题描述开发同事在在14点左右发现任务表task_info数据不正确,3个小时之前的数据消失了,数据截至时间11:38:27问题分析查询过dba_source,只找到一个删除该表的存储过程,而且也不会造成这种情况;根据现象,怀疑有人在11:38左右做了delete操作且没有写where条件,把整表数据全部删除;关联查询dba_hist_active_sess_history,gv$sql未发现相关
自贸区跨境通网站:自贸区跨境通网站
易佰:易佰
2020春节澳门环岛游有哪些优惠活动?澳门环岛游风情表演好:2020春节澳门环岛游有哪些优惠活动?澳门环岛游风情表演好
罗马古城旅游攻略:罗马古城旅游攻略
北京香山公园门票多少?:北京香山公园门票多少?
没有评论:
发表评论