这里只罗列出利用Oracle
i R
的flashback功能来恢复一下某表中的数据的步骤
其实很简单
首先如果数据库在归档模式下我们可以通过查询v$archived_log视图来查看各个归档日志所属的检查点
select namefirst_change#next_change#first_time from v$archived_log
通过包dbms_flashbackget_system_change_number来获得数据库的SCN号当然如果你的数据库是g的话还可以查看v$database中的字段current_scn
select dbms_flashbackget_system_change_number from dual
select count(*) from student 看看我们的表中的数据有多少
create table student_recovery
as
select * from student where =
来创建恢复表的结构
开始我们的闪回查询
选择一个前面的SCN进行向前恢复
select count(*) from student as of scn
尝试多个scn来获得我们所期望的结构
最后通过
insert into student_recovery select * from student as of scn commit
来恢复我们表中的数据
还有一点需要我们注意的是什么呢?
就是smon_scn_time这个表这个表记录了Oracle数据库的系统表用以进行辅助的恢复等功能这个表在iR的时候是每分钟刷新一次而且smon_scn_time会记录天的数据也就是行记录因此在OracleiR中表属性修改时间和flashback时间差至少应为分钟否则会报ora的错误