因爲開發在7月九號凌晨4點刪除一條數據,現在交易出現問題,需要檢查這條數據當時的狀態,歷史表沒有存這個數據,現在使用備庫閃回到刪除之前的時間點,找回數據。
當時操作沒有留記錄,所以只寫操作過程。
1.查看支持閃回的時間:
select oldest_flashback_scn os, to_char(oldest_flashback_time,'YYYYMMDD hh24: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 hh24: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;