因为开发在7月九号凌晨4点删除一条数据,现在交易出现问题,需要检查这条数据当时的状态,历史表没有存这个数据,现在使用备库闪回到删除之前的时间点,找回数据。
当时操作没有留记录,所以只写操作过程。
1.查看支持闪回的时间:
select oldest_flashback_scn os, to_char(oldest_flashback_time,'YYYYMMDD hh34:mi:ss') ot,
retention_target rt,flashback_size fs, estimated_flashback_size es
from v$flashback_database_log;
2.查看时间与scn对应关系。确定闪回时间,需要恢复到7月9号凌晨3点的时间。
select scn,to_char(time_dp,'yyyy-mm-dd hh34:mi:ss') from sys.smon_scn_time order by scn;
4.3532E+10 2019-07-09 02:59:13
4.3533E+10 2019-07-09 03:04:16
4.3533E+10 2019-07-09 03:04:18
---------开始操作--------------
3.取消备库日志应用
alter database recover managed standby database cancel;
4.闪回数据库到3点左右的时间点。
FLASHBACK DATABASE TO TIMESTAMP TO_DATE('20190709 02:59:13','YYYYMMDD HH24:MI:SS');
--------等待------数据库数据量大等待时间就长··················
5.完成之后启库,以只读模式启库:
alter database open read only;
- 查找当时数据
select * from tbl_tfr_trn_log j
where j.key_rsp='20190708195739162200';
然后找到数据导出来,
7.备库,开启应用归档,让他慢慢应用到最新同步时间。
alter database recover managed standby database using current logfile disconnect from session;