暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,DELETE了一条数据并且提交了,该如何找回?

DB宝 2020-04-17
888


题目部分

在Oracle中,DELETE了一条数据并且提交了,该如何找回?


     

答案部分



Oracle中可以通过闪回技术来找回已经删除并且提交了的数据。当然,除了闪回技术外还可以采用LogMiner(使用该工具可以轻松获得Redo日志文件包含归档日志文件中的具体内容)进行日志挖掘,找出其撤销SQL并执行就可以找回DELETE语句删除的数据。

下面的示例是基于闪回原理找回数据:

 1SQL> SET TIMING ON;
2SQL> SET SERVEROUTPUT ON;
3SQL> SET SQLBLANKLINES ON;
4SQL> SET LINESIZE 800
5SQLSET TIME ON;
611:40:54 SQL> SELECT * FROM OLD_T;
7        ID NAME
8---------- --------------------
9         1 LI
10已用时间:  00: 00: 00.02
1111:41:05 SQL> UPDATE OLD_T SET NAME='LIH' WHERE ID=1;
12已更新 1 行。
13已用时间:  00: 00: 00.01
1411:41:16 SQL> commit;
15提交完成。
16已用时间:  00: 00: 00.03
1711:41:20 SQL> UPDATE OLD_T SET NAME='LIHU' WHERE ID=1;
18已更新 1 行。
19已用时间:  00: 00: 00.01
2011:41:31 SQL> commit;
21提交完成。
22已用时间:  00: 00: 00.01
2311:41:34 SQL> UPDATE OLD_T SET NAME='LIHUA' WHERE ID=1;
24已更新 1 行。
25已用时间:  00: 00: 00.01
2611:41:39 SQL> COMMIT;
27提交完成。
28已用时间:  00: 00: 00.01
2911:41:43 SQL> UPDATE OLD_T SET NAME='LIHUAR' WHERE ID=1;
30已更新 1 行。
31已用时间:  00: 00: 00.02
3211:42:24 SQL> COMMIT;
33提交完成。
34已用时间:  00: 00: 00.01
3511:42:26 SQL> SELECT * FROM OLD_T;
36        ID NAME
37---------- --------------------
38         1 LIHUAR
39已用时间:  00: 00: 00.02
40------查询5分钟之前的数据
4111:45:53 SQL> SELECT * FROM OLD_T AS  OF TIMESTAMP SYSDATE-5/24/60 WHERE ID=1;
42        ID NAME
43---------- --------------------
44         1 LI
45已用时间:  00: 00: 00.02
46------查询第一个事务提交,第二个事务还没有提交时的数据
4711:55:13 SQL> SELECT * FROM OLD_T AS  OF TIMESTAMP TO_TIMESTAMP('2016-04-14 11:41:22','YYYY-MM-DD HH24:MI:SS'WHERE ID=1;
48        ID NAME
49---------- --------------------
50         1 LIH
51已用时间:  00: 00: 00.02
52------查询第二个事务提交,第三个事务还没有提交时的数据
5312:23:33 SQL> SELECT * FROM OLD_T AS  OF TIMESTAMP TO_TIMESTAMP('2016-04-14 11:41:38','YYYY-MM-DD HH24:MI:SS'WHERE ID=1;
54        ID NAME
55---------- --------------------
56         1 LIHU
57已用时间:  00: 00: 00.01

可以看到提交了的数据,利用闪回仍然可以查到之前的数据,从而来恢复到之前的数据状态。当然,除了闪回技术外还可以采用LogMiner(使用该工具可以轻松获得Redo日志文件包含归档日志文件中的具体内容。)进行日志挖掘找出其撤销的SQL语句执行就可以找回DELETE并且提交了的数据。


本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗



---------------优质麦课------------

详细内容可以添加麦老师微信或QQ私聊。



About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:618766405

 提供OCP、OCM和高可用部分最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

DBA宝典

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。


文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论