利用alter_log确定scn号的时间进行flashback操作

用户说表ZMM051的表里的数据被误删除了,时间大概在3/8 -3/10之间。

我们去到oracle下面去查询表的时候只有3万笔左右的数据了

select count(*) from sapr3.zmm051;

                

  COUNT(*)

----------

     30705

现在我们要利用ORACLE的回闪的特性将数据找出来

然后我们要做的是将表被误删除前那段时间的最近的scn找出来

找到oracletrace 文件 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>

数据都在然后将这个表的数据导出交给用户。

请使用浏览器的分享功能分享到微信等