用户说表ZMM051的表里的数据被误删除了,时间大概在3/8 -3/10之间。
我们去到oracle下面去查询表的时候只有3万笔左右的数据了
select count(*) from sapr3.zmm051;
COUNT(*)
----------
30705
现在我们要利用ORACLE的回闪的特性将数据找出来
然后我们要做的是将表被误删除前那段时间的最近的scn找出来
找到oracle的trace 文件 用VI打开
Vi /oracle/LH1/saptrace/background/ alert_LH1.log
找到9号的LOG
Sun Mar 9 00:03:05 2008
Completed checkpoint up to RBA [0xccc99.2.10], SCN: 0x0001.e197d163
Sun Mar 9 00:03:28 2008
Beginning log switch checkpoint up to RBA [0xccc9a.2.10], SCN: 0x0001.e1980ae0
Thread 1 advanced to log sequence 838810
Current log# 13 seq# 838810 mem# 0: /oracle/LH1/origlogA/log_g13m1.dbf
Current log# 13 seq# 838810 mem# 1: /oracle/LH1/mirrlogA/log_g13m2.dbf
Sun Mar 9 00:03:28 2008
ARC0: Evaluating archive log 12 thread 1 sequence 838809
ARC0: Beginning to archive log 12 thread 1 sequence 838809
Creating archive destination LOG_ARCHIVE_DEST_1: '/oracle/LH1/saparch/LH1arch1_838809.dbf'
Sun Mar 9 00:03:49 2008
ARC0: Completed archiving log 12 thread 1 sequence 838809
Sun Mar 9 00:06:17 2008
Completed checkpoint up to RBA [0xccc9a.2.10], SCN: 0x0001.e1980ae0
Sun Mar 9 00:06:35 2008
这里我们看到了SCN: 0x0001.e197d163 这个就是9号的检查点号 ,也就是SCN.
这个是16进制,我们将它转换成10进制8079805152
SQL> select count(*) from zmm051 as of SCN 8079805152;
COUNT(*)
----------
61705
这样数据找到了。
SQL> create table zmm051_bak as select * from zmm051 as of SCN 8079805152;
Table created.
SQL>
备份表创建,然后我们验证一下
SQL> select count(*) from zmm051_bak;
COUNT(*)
----------
61705
SQL>
数据都在然后将这个表的数据导出交给用户。