操作数据库时,有时会不小心误操作,比如执行了一些有问题的sql,导致破坏了数据,需要恢复;或者有时场景需要,要把整个表恢复到某个时间段。Oracle中可以用闪回技术实现。 1.原数据表的数据 SELECT * FROM jf_test2; 2. 做增删改操作 查询当前时间: SELEC
操作数据库时,有时会不小心误操作,比如执行了一些有问题的sql,导致破坏了数据,需要恢复;或者有时场景需要,要把整个表恢复到某个时间段。Oracle中可以用闪回技术实现。
1.原数据表的数据
SELECT*FROMjf_test2;
2.做增删改操作
查询当前时间:SELECTSYSDATEFROMdual;
对jf_test2表做增删改后:SELECT*FROMjf_test2;
3.确定误操作的大致时间点,取出该时间点jf_test2的数据
CREATETABLEjf_test2TempAS
SELECT*FROMjf_test2ASOFTIMESTAMP(to_date('2014-04-01 15:03:00','yyyy-mm-dd hh24:mi:ss'));
查询jf_test2Temp:
SELECT*FROMjf_test2Temp;
4.恢复数据
--恢复误update
UPDATEjf_test2 t
SETt.name = (SELECTtt.nameFROMjf_test2temp ttWHEREtt.code = t.code)
WHEREEXISTS(SELECT*FROMjf_test2temp tttWHEREttt.code = t.code);
--恢复误delete
INSERTINTOjf_test2(CODE,NAME)
SELECTtt.code,tt.name
FROMjf_test2temp tt
WHERENOTEXISTS(SELECT*FROMjf_test2 t
WHEREt.code = tt.code);
--恢复误insert
DELETEFROMjf_test2 t
WHERENOTEXISTS(SELECT*FROMjf_test2temp ttWHEREtt.code = t.code);
再次查询jf_test2看看:SELECT*FROMjf_test2;
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网