记一次追溯业务表被删除的原因

运维项目生产环境内两张业务表丢失,导致应用无法使用,后开发人员通过逻辑备份后将其恢复,但甲方要明确删除动作,一下介绍通过日志挖掘来查找表丢失的原因,此文档省略部分输出结果,只记录解决思路。

一、环境信息:

操作系统版本: AIX 6.1

数据库版本:oracle  11.2.0.4

数据库配置:RAC

数据文件格式:裸设备

二、处理过程

1.sys用户登录数据库,检查是否存在logminer 的程序包

SQL>desc dbms_logmnr

⚠️如果查询结果显示未安装,则需执行脚本安装:SQL>@$ORACLE_HOME/rdbms/admin/dbmslm.sql


2.查看问题时间段的所产生的归档文件,查看事故发生点在first_time与next_time时间段内发生的归档

SQL>select inst_id,name,to_char(first_time,'yyyy-mm-dd hh24:mi:ss'),to_char(next_time,'yyyy-mm-dd hh24:mi:ss'),sequence# from v$archived_log where first_time>=to_data('2018-01-01','yyyy-mm-dd hh24:mi:ss') and first_time<=('2018-01-02','yyyy-mm-dd hh24:mi:ss') order by 3 desc;


3.由于生产环境使用 tsm 备份至带库,需将其恢复:

run {

allocate channel t1 type 'sbt_tape' parms 'ENV=(tdpo_optfile=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

restore archive log sequence between ???? and ????;

release channel t1;

 }


4.将归档日志恢复到默认路径后,利用logminer进行日志挖掘

execute dbms_logmnr.add_logfile(logfile_name=>'/步骤三中归档的归档日志',option=>dbms_logmnr.new);              --首次加入归档日志

execute dbms_logmnr.start_logmnr(option=>dbms_logmnr.dict_from_online_catalog);  --对加入的归档日志进行日志挖掘


5.挖掘语句执行结束后,日志信息被保存在v$logmnr_contents视图中,并对其他用户不可见,由于删表动作属于ddl操作,直接检查视图内的ddl信息的日志条目:

SQL>select * from v$logmnr_contents where operation='DDL';

猜你喜欢

转载自blog.csdn.net/fc_barceiona/article/details/79358856