Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点 --1.查看 DELETE 及 UPDATE 操作修改的数据: --其中将查询得 tab 表在 time_point 时点之后因 DELETE 及 UPDATE 操作修改的数据。 SELECT * FROM C_XZSP_ZWZX_CONF_SUBMIT AS OF TIMESTAMP to_timestamp('2017-03-01 08:00:00','yyyy-mm-dd hh24:mi:ss') MINUS SELECT * FROM C_XZSP_ZWZX_CONF_SUBMIT; --2.查看 INSERT 操作修改的数据: --其中将查询得 tab 表在 time_point 时点之后因 INSERT 操作修改的数据。 SELECT * FROM C_XZSP_ZWZX_CONF_COMPLETE MINUS SELECT * FROM C_XZSP_ZWZX_CONF_COMPLETE AS OF TIMESTAMP to_timestamp('2017-03-01 08:00:00','yyyy-mm-dd hh24:mi:ss'); Oracle 中利用闪回查询恢复某表至某时间点: 1.恢复 DELETE 及 UPDATE 操作修改的数据: SQL> MERGE INTO tab a USING (SELECT * FROM tab AS OF TIMESTAMP to_timestamp('time_point','yyyy-mm-dd hh24:mi:ss') MINUS SELECT * FROM tab) b ON (a.unique_id = b.unique_id) WHEN MATCHED THEN UPDATE SET a.col1 = b.col1, a.col2 = b.col2, WHEN NOT MATCHED THEN INSERT VALUES (b.unique_id, b.col1, b.col2); 其中将恢复 tab 表至 time_point 时点,恢复数据为因 DELETE 及 UPDATE 操作修改的数据。 其中 tab 表包含字段 unique_id、col1、col2。注意:需要通过唯一条件 unique_id 定位数据。 2.恢复 INSERT 操作修改的数据: SQL> DELETE FROM tab a WHERE EXISTS (SELECT 1 FROM (SELECT * FROM tab MINUS SELECT * FROM tab AS OF TIMESTAMP to_timestamp('time_point','yyyy-mm-dd hh24:mi:ss')) b WHERE a.unique_id = b.unique_id); 其中将恢复 tab 表至 time_point 时点,恢复数据为因 INSERT 操作修改的数据。 注意:需要通过唯一条件 unique_id 定位数据。
转载自:http://www.cnblogs.com/autopenguin/p/5952671.html (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|