logminer恢复误覆盖更新的数据

昨日程序部署人员在运营数据库误更新覆盖了系统重要数据。具体误操作方式在一表上用A字段和
B字段数据基本相同,但B字段中有null值,然后B字段的数据更新了A字段数据,之后删除了B字段,
导致系统重要入口数据无法显示,考虑表结构修改过,且只对单表操作,为尽快恢复数据,因此,
使用logminer读取日志的方式恢复数据。具体模拟相应场景
alter database archivelog;
alter database open;
一 建立环境
1 建新表并插入数据
create table TEST.t1(t_id number,t_name varchar2(50),t_salary number(8) );
insert into TEST.t1 values(1,'jy',10000);
insert into TEST.t1 values(2,'wj',8000);
select * from TEST.t1;
2更改数据,删除字段
update test.t1 set t_name = t_salary;
alter table test.t1 drop column t_salary ;
alter system switch logfile;
二恢复日志
1查询删除数据的归档日志
select name,sequence#,first_change#,first_time from v$archived_log ;
2增加归档日志
begin
 dbms_logmnr.add_logfile(logfilename=>'D:\ANZHUANG\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2016_06_02\O1_MF_1_212_CNZ3DBKX_.ARC',options=>dbms_logmnr.NEW);
end;
3分析归档日志
begin
 dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
end;
4插入分析归档日志
insert into logmnr_contents  select * from v$logmnr_contents ;
5结束分析归档
begin
 dbms_logmnr.end_logmnr;
end;
6查看误操作表的操作步骤
select seg_name,username,scn,timestamp,sql_redo,sql_undo from logmnr_contents where seg_name='T1';
2016/6/2 9:33:30 "create table TEST.t1(t_id number,t_name varchar2(50),t_salary number(8) )
;" 
2016/6/2 9:33:32 Dictionary Version Mismatch Dictionary Version Mismatch
2016/6/2 9:33:32 Dictionary Version Mismatch Dictionary Version Mismatch
2016/6/2 9:33:59 update "TEST"."T1" set "T_NAME" = '10000' where "T_NAME" = 'jy' and ROWID = 'AAANI4AAEAAEKBHAAA'; update "TEST"."T1" set "T_NAME" = 'jy' where "T_NAME" = '10000' and ROWID = 'AAANI4AAEAAEKBHAAA';
2016/6/2 9:33:59 update "TEST"."T1" set "T_NAME" = '8000' where "T_NAME" = 'wj' and ROWID = 'AAANI4AAEAAEKBHAAB'; update "TEST"."T1" set "T_NAME" = 'wj' where "T_NAME" = '8000' and ROWID = 'AAANI4AAEAAEKBHAAB';
2016/6/2 9:34:40 "alter table test.t1 drop column t_salary
;" 

7找出被更新的数据,逆向被更新的恢复数据
update "TEST"."T1" set "T_NAME" = 'jy' where "T_NAME" = '10000' and ROWID = 'AAANI4AAEAAEKBHAAA';
update "TEST"."T1" set "T_NAME" = 'wj' where "T_NAME" = '8000' and ROWID = 'AAANI4AAEAAEKBHAAB';
select * from TEST.t1;

时间: 2024-10-01 08:08:52

logminer恢复误覆盖更新的数据的相关文章

能否恢复误GHOST之后的数据

一个用户的咨询电话整理: [用户] 我的硬盘用GHOST重做了系统,结构分区数目与分区大小与原来都不相同了,原来的文件系统是NTFS的,有5个分区,现在变成了4个FAT32的分区. 这种情况能否恢复数据?成功率有多高? [张宇] 硬盘在重新GHOST,变成4个分区之后,格式化了吗?有没有写过数据进去? [用户] 没有写过数据进去,不知道是否格式化了,能打开4个分区,但里面的空的. [张宇] 那是分区后,又做了格式化. [用户] 那这种数据还能恢复吗?另外,有GHOST之前,我做错的操作,把C盘的

【MySQL】恢复误操作的方法

一 .前言 本周接二连三的出现开发人员在测试环境和生产误操作导致数据库误删除/更新,对DBA而言,回滚数据着实是一件头疼的事情,凡涉及到恢复线上数据必然对应用带来一定的影响.大多数情况是开发误操作delete数据,update多数行,根据之前的操作经验,本文介绍常用的恢复方法. 写本文的时候 Monogdb 也被曝出有被利用安全漏洞,数据被删除了,希望各位DBA/安全相关人员及时查看自己负责的业务数据库安全相关问题,保护好自己的数据. 二.常用的恢复方式 2.1 利用备份恢复 使用这种方式的前提

恢复Hyper-V虚拟机丢失的数据文件过程

简介: 由于MD3200存储中虚拟机的数据文件丢失,导致整个Hyper-V服务瘫痪,虚拟机无法使用,故障环境为Windows Server 2012服务器,系统中部署了Hyper-V虚拟机环境,虚拟机的硬盘文件和配置文件放在朝阳区某托管中心托管的DELL MD3200存储中(注:硬盘600G4,4T1).MD3200存储是由4块600G硬盘组成的阵列,用作存储虚拟机的数据文件.单块4T硬盘用作虚拟机数据文件的备份. 故障: 由于MD3200存储中虚拟机的数据文件丢失,导致整个Hyper-V服务瘫

恢复sql server 2000误删数据的解决办法_MsSql

今天不小心把客户那边的数据库中删了一千多条数据,而且之前又没有备份,真的是很郁闷,后来在网上找到一工具,用起来挺方便,让我躲过一劫. 首先来看一下界面: 输入服务器地址,用户名及密码后点Connect,进入到下面的界面: 在这里选择要恢复数据的数据库,选择Use On-line Log(如果你又备份文件的话就不需要用这个工具了,直接用SQL搞定了).然后点Attach,进入下面的界面: 可以看到左边菜单中有很多功能,我们要恢复数据,首先要查看日志,找出我们误操作的那些日志记录,点Browse下的

《DNS与BIND(第5版)》——7.2 更新区域数据文件

7.2 更新区域数据文件 网络总是在不断变化的--新的工作站加入,老的被淘汰或卖掉,或者将主机移至另一个网络.每次改变都意味着区域数据文件必须跟着修改.应该手动修改这些文件还是应该使用工具协助修改呢? 本节将首先讨论如何手动修改区域数据文件.然后再介绍一个协助修改的工具:h2n.事实上,本书推荐使用工具来创建区域数据文件:或者至少使用工具来增加序号.区域数据文件的语法很容易导致错误.因为它无法保证存放在不同文件中的地址和指针记录,能够保持彼此之间的一致性.不过,就算是使用工具,也还是必须知道更新

恢复sql server 2000误删数据的解决办法

今天不小心把客户那边的数据库中删了一千多条数据,而且之前又没有备份,真的是很郁闷,后来在网上找到一工具,用起来挺方便,让我躲过一劫. 首先来看一下界面: 输入服务器地址,用户名及密码后点Connect,进入到下面的界面: 在这里选择要恢复数据的数据库,选择Use On-line Log(如果你又备份文件的话就不需要用这个工具了,直接用SQL搞定了).然后点Attach,进入下面的界面: 可以看到左边菜单中有很多功能,我们要恢复数据,首先要查看日志,找出我们误操作的那些日志记录,点Browse下的

DB2卸载后怎样恢复原来数据库中的数据

问题:我不小心把DB2给卸载了,请问有什么方法恢复原来数据库中的数据啊?//bow : DB2卸载后还剩下DB2,DB2CTLSV 两个目录,但这两个目录都不大,请问DB2的数据库文件 : 是存在这两个目录下么?不是的话那就惨了. 回答:The database should be in DB2 directory. You have to reinstall db2. After that, issue the following command: db2 catalog db db_name

如何在Word 2013中设置打印前更新链接数据

如果Word2013文档中包含有指向其他文件的链接信息,那么用户可以启用打印前更新链接数据功能,从而实现在打印Word文档前自动更新链接数据,操作步骤如下所述: 第1步,打开Word2013文档窗口,依次单击"文件"→"选项"命令,如图2013041817所示. 图2013041817 单击"选项"命令 第2步,打开"Word选项"对话框,切换到"显示"选项卡.在"打印选项"区域选中&q

在Word 2007中设置打印前更新链接数据

如果Word2007文档中包含有指向其他文件的链接信息,那么用户可以启用打印前更新链接数据功能,从而实现在打印Word文 档前自动更新链接数据,操作步骤如下所述: 第1步,打开Word2007文档窗口,依次单击"Office按钮"→"Word选项" 按钮,如图2012040209所示. 图2012040209 单击"Word选项"按钮 第2步,打开"Word选项"对话框,切换到"显示"选项卡. 在"