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

本文介绍了一次生产环境中业务表丢失的事故处理过程。通过使用Oracle数据库的日志挖掘功能,详细阐述了从检查Logminer程序包、确定归档日志范围到挖掘归档日志并找出删除操作的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一、环境信息:

操作系统版本: 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';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值