create table 新建了一个表之后,想测试删掉的数据能不能找回,就DELETE 掉了数据,
然后:
-- 按特定时间点恢复,例如:误操作 delete from retable_name ;commit;
select timestamp_to_scn(to_timestamp('2021-07-01 09:37:00','yyyy-mm-dd hh24:mi:ss')) from dual;
-- 下面这一步执行的时候报错: ORACLE-01466表定义已更改
select * from T_student_4 as of scn 2472271;
报错原因:
在create表后,直接进行了del操作,即ddl和dml执行时间间隔没超过5分钟,所以导致出现ora-01466错误(9i只支持dml的flashback,create等的ddl是不支持的)。
不要理解错了,5分钟指的是create表之后,等5分钟,再去delete操作;而不是create好了之后直接delete再等5分钟。
按着这个思路,去试了一下:
CREATE T_student_4 时间是 2021-07-01 10:18
DELETE T_student_4 时间是 2021-07-01 10:27 (与CREATE时间间隔过了5分钟)
再去执行: select 查询时间 是 2021-07-01 10:26(delete之前的时间)
-- 按特定时间点恢复,例如:误操作 delete from retable_name ;commit;
select timestamp_to_scn(to_timestamp('2021-07-01 10:26:00','yyyy-mm-dd hh24:mi:ss')) from dual;
-- 下面这一步执行的时候成功了
select * from T_student_4 as of scn 2475337;
--找回记录创建临时表
create table temp_T_student as select * from T_student_4 as of scn 2475337;
--记录从临时表插入正式表
insert into T_student_4 select * from temp_T_student;