Home > Database > Mysql Tutorial > body text

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

WBOY
Release: 2016-06-07 15:25:29
Original
861 people have browsed it

操作数据库时,有时会不小心误操作,比如执行了一些有问题的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闪回技术恢复误操作数据

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template