Chinaunix首页 | 论坛 | 博客
  • 博客访问: 169477
  • 博文数量: 21
  • 博客积分: 2077
  • 博客等级: 大尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-27 09:44
文章分类

全部博文(21)

文章存档

2009年(7)

2008年(14)

我的朋友

分类: Oracle

2009-02-04 16:04:36

Oracle查找删除记录后表中某一时间点的数据
 
------------------------------------------------------------------------------------
删除数据前表中记录
1> select t.*, t.rowid from vt_temp_test;
1 1 2 3.00 4.00
2 5 6 7.00 8.00
3 9 10 11.00 12.00
4 13 14 15.00 16.00
 
记录原数据完整时间点
2> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
1 2009-01-08 09:23:53
 
删除表中记录
3> delete from vt_temp_test;
 
找回原数据完整时间点数据
4> select * from vt_temp_test as of timestamp to_timestamp('2009-01-08 09:23:53', 'yyyy-mm-dd hh24:mi:ss'); 
1 1 2 3.00 4.00
2 5 6 7.00 8.00
3 9 10 11.00 12.00
4 13 14 15.00 16.00
 
插入丢失数据到原表
5> insert into vt_temp_test select * from vt_temp_test as of timestamp to_timestamp('2009-01-08 09:23:53', 'yyyy-mm-dd hh24:mi:ss');
 
验证数据恢复情况
6> select * from vt_temp_test
1 1 2 3.00 4.00
2 5 6 7.00 8.00
3 9 10 11.00 12.00
4 13 14 15.00 16.00
 
---- 此时表明数据已完全恢复到原数据完整时间点的数据 ----

#### 注:当执行 truncate table vt_temp_test 时,就无法恢复数据,查找当时数据会报错:ORA-01466 unable to read table - table definition has changed。drop table vt_temp_test则更不可恢复 ####
 
 
阅读(9995) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~