用闪回恢复delete,insert,update表(学习手记1)

本文介绍Oracle数据库中如何通过闪回技术恢复被误删除的数据,包括修改数据库归档模式、利用归档日志和SCN进行数据状态验证,以及创建临时表用于数据对比和恢复。

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

1.修改库的归档模式

startup mount -> alter database archivelog  ->alter system switch logfile(手动归档切换)生成归档文件


2.

select name,first_change# fscn,next_change# nscn,first_time from v$archived_log

1    +DG1/devdb/1_41_789857151.dbf    1241938    1253322    2012-8-9 上午 05:23:19
2    +DG1/devdb/1_42_789857151.dbf    1253322    1253503    2012-8-10 上午 05:58:03
3    +DG1/devdb/1_43_789857151.dbf    1253503    1253521    2012-8-10 上午 05:59:49
4    +DG1/devdb/2_22_789857151.dbf    1197906    1253519    2012-8-3 上午 04:52:10
5    +DG1/devdb/2_23_789857151.dbf    1253519    1253856    2012-8-10 上午 05:59:52


3.create table aa as select * from dba_objects;

SQL> delete from aa where rownum<1200;

1199 rows deleted.

SQL> commit;

Commit complete.

SQL> delete from aa where rownum<5000;

4999 rows deleted.


4.发现表的数据不对了,误delete;

先获取当前SCN,作参考

SQL> select dbms_flashback.get_system_change_number fscn from dual;

      FSCN
----------
   1256223

5.然后根据归档的时间和FSCN号码进行反复尝试,达到一个认为满意的值时为止;

  1* select count(*) from aa as of scn &scn
SQL> /
Enter value for scn: 1253521
old   1: select count(*) from aa as of scn &scn
new   1: select count(*) from aa as of scn 1253521

  COUNT(*)
----------
     50658

SQL> /
Enter value for scn: 1253519
old   1: select count(*) from aa as of scn &scn
new   1: select count(*) from aa as of scn 1253519

  COUNT(*)
----------
     50658

SQL> /
Enter value for scn: 1253503
old   1: select count(*) from aa as of scn &scn
new   1: select count(*) from aa as of scn 1253503

  COUNT(*)
----------
     50658

6. 再创建一张临时存数据的表

crate table aa2 as select * from aa where 1=2;

然后将确定的SCN值插回aa2表做两表的对比,

将少的数据插回表中即可;


二.当中间出现过DDL操作对此表(eg.truncate),那么再用闪回时将报

              *
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed


三。此操作对于insert,update同样生效,操作类似;

四。闪回本质是利用UNDO表空间内容;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值