【转】恢复ORACLE被误更新或删除数据的办法

时间 2014-01-18 00:14:15 IT社区推荐资讯

原文 http://itindex.net/detail/47663-oracle-更新-删除

主题 Oracle数据库

有时候我们在操作ORACLE数据库的时候,可能由于SQL写错了导致把数据update错了,或者delete删除掉了,那么这时候如何去恢复之前的数据呢?

莫着急,我们可以采用oracle的基于时间查询as of timestamp的办法进行恢复数据。下面以具体例子进行讲解用法。

1、比如,我的wl_notify_task表目前有三条数据,大家重点关注PARAMETER字段。

2、我现在做一个update操作,要把id=1的parameter字段更新为param_test8,但是由于我操作的失误,id=1条件忘了加了,导致整表更新了。导致其他记录的parameter字段全部都是param_test8

update wl_notify_task set parameter = 'param_test8'

杯具发生了,那么如何再找到我之前的记录是什么呢??

3、没事,我们可以采用oracle的基于时间查询的办法查询出3分钟前的表的记录情况,查询SQL如下:

SELECT * FROM wl_notify_task AS OF TIMESTAMP SYSDATE–3/1440

对SQL的解释说明:

  • SYSDATE :当前时间
  • 1440 :24h*60m=1440m
  • 3:3分钟前

4、通过上面的查询,我们看到了在update之前的数据情况。那么把数据恢复回去就很简单了,通过ID关联的方式更新回去即可。如下:

update wl_notify_task t1
set t1.parameter =
(select parameter
from wl_notify_task AS OF TIMESTAMP SYSDATE–3/1440
where t1.id = id)

这种做法也是DBA常用的恢复数据的手段。对于删除的情况,那么就通过insert办法重新把记录插入表即可。

最后需要 特别提醒大家注意 的是,SQL中的 SYSDATE-3/1440 代表查询3分钟前的记录情况,由于是和当前时间SYSDATE的距离3分钟前,所以这个随着隔的时间不同及时间的推移是会变化的,一般的做法是在真正做恢复时的update前,需要先select查询一下比如3分钟前的数据是否是我们想要的数据,确认无误后立即做恢复的update。如果数据不是我们想要的,那么就需要通过调节分钟数直到找到我们想要的数据。这种办法适合小批量数据,如果是大批量数据且很重要的数据的话,建议大家新建一张结构相同的表,先把as of timestamp查询出来的数据存到新表中,再进行恢复操作,因为这样数据不再受时间差的影响,确保数据是准确的,无论你何时开始做恢复操作。

转自: http://wangchongan.com/articles/oracle-data-update-delete-recover.html

本文作者:Journey&Flower

本文链接:https://www.cnblogs.com/JourneyOfFlower/p/16278615.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Journey&Flower  阅读(584)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 Not Found REOL
404 Not Found - REOL
00:00 / 00:00
An audio error has occurred.

Fade away

Do over again

Fade away

Utai hajime no hitomojime

Itsumo mayotteru

Douse toritome no nai koto dakedo

Tsutawaranakya motto imi ga nai (Ooh-ooh, oh-oh-oh)

Doushitatte konna ni fukuzatsu nano ni

Kamikudaite yaranakya tsutawaranai

Hora kekkyoku kashi nanka dou datte ii

Boku no ongaku nanka kono yo ni nakutatte ii nda yo

Ii ndarou

Nee sou darou

Everybody don't know why

Everybody don't know much

Boku wa ki ni shinai, kimi wa kidzukanai

Doko ni mo mou inai inai

Everybody don't know why

Everybody don't know much

Wasureteiku, wasurerareteiku

We don't know, we don't know, no, no

Me no mae, hirogaru genjitsu sekai ga mata yuganda

Nando risetto shite mo

Boku wa boku igai no dareka ni wa umare kawarenai

Sonna no shitteru yo

Ki ni naru ano ko no uwasabanashi mo

Shinikaru hyouteki wa tsugi no sokuhou

Mahi shichatteru (Tteru) kokkara esukeepu (Keepu)

Tooku tooku made ikeru yo

Antei nante nai (Na-na-na-na)

Fuanteina sekai (Na-na-na-na)

Antei nante nai (Na-na-na-na)

Kitto ashita ni wa wasureru yo

Fade away

Do over again

Fade away

Souda sekai wa dokoka ga itsumo uso kusai

Kireigoto dake ja daijina hitotachi sura mamorenai

Kudaranai, bokura minna dokoka kurutteru mitai

Hontou no koto nanka zenbu kamisama mo shiranai

Kamisama mo shiranai (Woah, woah, woah, no, woah)

Kamisama mo shiranai (Woah, woah, woah, no, woah)

Kamisama mo shiranai, but

Kamisama mo shiranai (Woah, no, woah, no, woah)

Everybody don't know why

Everybody don't know much

Boku wa ki ni shinai, kimi wa kidzukanai

Doko ni mo mou inai inai

Everybody don't know why

Everybody don't know much

Wasureteiku, wasurerareteiku

We don't know, we don't know, oh, oh-oh-oh

Ahh, oh-oh-oh-oh

Woah, oh-oh-oh

Ooh, ooh, ooh, ooh-ooh-ooh-ooh