Rumah > pangkalan data > tutorial mysql > oracle闪回技术恢复误操作数据

oracle闪回技术恢复误操作数据

WBOY
Lepaskan: 2016-06-07 15:25:29
asal
884 orang telah melayarinya

操作数据库时,有时会不小心误操作,比如执行了一些有问题的sql,导致破坏了数据,需要恢复;或者有时场景需要,要把整个表恢复到某个时间段。Oracle中可以用闪回技术实现。 1.原数据表的数据 SELECT * FROM jf_test2; 2. 做增删改操作 查询当前时间: SELEC

操作数据库时,有时会不小心误操作,比如执行了一些有问题的sql,导致破坏了数据,需要恢复;或者有时场景需要,要把整个表恢复到某个时间段。Oracle中可以用闪回技术实现。

 

1.原数据表的数据

 SELECT * FROM jf_test2;

 oracle闪回技术恢复误操作数据

2.做增删改操作

  查询当前时间:SELECTSYSDATEFROM dual;

 oracle闪回技术恢复误操作数据

 对jf_test2表做增删改后:SELECT * FROM jf_test2;

oracle闪回技术恢复误操作数据

3.确定误操作的大致时间点,取出该时间点jf_test2的数据

 

CREATETABLE jf_test2Temp AS

SELECT * FROM jf_test2 ASOFTIMESTAMP(to_date('2014-04-01 15:03:00', 'yyyy-mm-dd hh24:mi:ss'));

查询jf_test2Temp

SELECT * FROM jf_test2Temp;

oracle闪回技术恢复误操作数据

4.恢复数据

  --恢复误update

UPDATE jf_test2 t

SET t.name = (SELECT tt.name FROM jf_test2temp tt WHERE tt.code = t.code)

WHEREEXISTS(SELECT * FROM jf_test2temp ttt WHERE ttt.code = t.code);

 

--恢复误delete

INSERTINTO jf_test2(CODE,NAME)

SELECT tt.code,tt.name

FROM jf_test2temp tt

WHERENOTEXISTS(SELECT * FROM jf_test2 t WHERE t.code = tt.code);

 

--恢复误insert

DELETEFROM jf_test2 t

WHERENOTEXISTS(SELECT * FROM jf_test2temp tt WHERE tt.code = t.code);

 

再次查询jf_test2看看:SELECT * FROM jf_test2;

oracle闪回技术恢复误操作数据

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan