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

WBOY
풀어 주다: 2016-06-07 15:25:29
원래의
862명이 탐색했습니다.

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿