如何恢复删除并且commit后的数据
1、现象、问题描述
经常会发生误删除数据,并且commit了。恍然醒悟!
但如何恢复呢?Oracle 9以前的版本如果在你删除之前没有对数据库完整备份的话,想恢复删除的数据比登天还难。
Oracle9 以后提供了数据库闪回功能,可以将数据库恢复到之前的某个合适的时间点。
而且提供了flashback query 功能,可以查询某个表在某个时间点的状态,即使这个表中的数据已经删除,并且commit了。
这就是用flashback恢复误删除并且commit后数据的原理。
测试如下场景:
SQL> create table t as select OBJECT_ID,object_name from dba_objects where rownum < 5;
Table created.
Elapsed: 00:00:00.42
SQL> select object_id,substr(object_name,1,15) from t;
OBJECT_ID SUBSTR(OBJECT_N
---------- ---------------
20 ICOL$
44 I_USER1
28 CON$
15 UNDO$
Elapsed: 00:00:00.00
现在将其全部删除,并且commit:
SQL> delete from t;
4 rows deleted.
Elapsed: 00:00:00.00
SQL> commit;
Commit complete.
Elapsed: 00:00:00.01
SQL> select * from t;
no rows selected
Elapsed: 00:00:00.00
现在用flashback操作将其恢复,方法如下:
SQL> insert into t select * from t as of timestamp (systimestamp - 2/24/60);
4 rows created.
SQL> select object_id,substr(object_name,1,15) from t;
OBJECT_ID SUBSTR(OBJECT_N
---------- ---------------
20 ICOL$
44 I_USER1
28 CON$
15 UNDO$
Elapsed: 00:00:00.00
但是,有个问题是:flashback利用的是回滚段机制,将脏(已经删除)数据从回滚段中重新读出。
而回滚段是可重复利用的,所以当经过了很多事务以后,可能存放需要的脏数据的回滚段被重复利用,这样flashback对此就不再奏效了。
发表评论
-
compile_6i
2010-10-12 21:35 645for %%i in (*.rdf) do start /w ... -
compile bat
2010-10-12 21:33 860compile_pll_form.bat for %%i i ... -
test26_7
2010-06-30 16:33 1315 使用索引:索引未用上?是否为表和相关的索引搜集足够的统计 ... -
test26_6
2010-06-30 16:32 1414 使用索引:索引未用上?检查被索引的列或组合索引的首列是否 ... -
test26_5
2010-06-30 16:31 68113 使用索引:合理的索引针对如何用上合理的索引,以下举ORA ... -
test26_4
2010-06-30 16:30 62911 使用索引:建立索引的原则1、索引字段需要建立NOT NU ... -
test26_3
2010-06-30 16:29 5779 索引种类:位图索引Create BITMAP index ... -
test26_2
2010-06-30 16:28 5567 索引种类:反向索引Create index indexna ... -
test26_1
2010-06-30 16:26 6954 索引概述:什么是索引索引是建立在表的一列或多个列上的辅助对 ... -
test26_0
2010-06-30 16:25 5751 Oracle 索引 2 Contents索引概述什么是索 ... -
test25
2010-06-30 15:59 569如何收集表的部分统计信息 如果表很大,收集表的统计信息需要花 ... -
test24
2010-06-30 15:53 593处理exp Exporting questionable st ... -
test23_1
2010-06-30 15:49 651Argument Name ... -
test23
2010-06-30 15:47 619回收表的高水平位 表的高水平位(High water mar ... -
test22
2010-06-30 15:29 608dblink的使用1、现象、问题描述 在local服务器上有 ... -
test21
2010-06-30 15:29 622如何查询长时间的操作何时结束 数据库中有一个视图中v$ses ... -
test20
2010-06-28 16:48 544如何只恢复经过多次commit后的某个事务 SQL> ... -
test19_1
2010-06-28 16:45 542但ORACLE又提供了另外一种机制:从redo日志或归档日志中 ... -
test19_1
2010-06-28 16:43 475但ORACLE又提供了另外一种机制:从redo日志或归档日志中 ... -
test18
2010-06-28 16:39 514如何使一个经常用的小表一直保留在内存中? SQL> s ...
相关推荐
seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19seeven-test19...
19_vga_char 20_sd_ddr_vga 21_lcd_test 22_flash_ddr_lcd 23_ov7670_vga 24_ov7670_lcd 25_ov5640_vga 26_ov5640_lcd 27_adda_test 28_dds_wave 29_ad9226_test 30_ad706_test ethernet_100 flash_ddr_vga
PassMark BurnInTest V5.3 Copyright (C) 1999-2008 PassMark Software All Rights Reserved http://www.passmark.com Overview ======== Passmark's BurnInTest is a software tool that allows all the major sub...
这个“mysql-8.0.19-winx64-debug-test.zip”压缩包特别针对Windows 10操作系统设计,包含了用于调试和测试的组件。 在Windows 10环境下安装MySQL 8.0.19,首先要解压缩“mysql-8.0.19-winx64-debug-test.zip”文件...
在"五、Qt Model与View.zip"中,可能包含了一系列的示例代码或教程,如test18、test17、test19和test16,这些文件可能用来演示Model/View编程的不同方面。 首先,让我们深入了解Qt的Model/View架构: 1. 数据模型...
例如,test1、test7和test19都是针对边界值的测试,检验输入是否能正确处理。 2. 等价类划分: 等价类划分是将输入数据划分为若干个互斥的类,每个类内的数据对于揭露程序错误来说是等效的。对于三角形,我们可以...
### LMS Test.Lab中文操作指南关键知识点 #### 一、概述 LMS Test.Lab是由比利时LMS国际公司开发的一款先进的振动噪声测试与分析软件。该软件以其独特的界面设计和工作流程,为用户提供了高效且一致的数据处理能力...
测试用例设计包括在这些边界附近的值,如Test1到Test19,确保涵盖边界情况,比如1800年、1801年、2012年、2049年、2050年,以及每个月的第一天和最后一天。 **2. 等价类划分**: - 等价类可以分为有效等价类和...
在这个特定的程序中,`Test19_8` 类继承自 `JFrame`,这是Swing库中的一个组件,用于创建窗口。`Test19_8` 类包含了迷宫的实现,以及两个按钮:`jbFindPath`(找到出路)和`jbClearPant`(清除路线)。 迷宫的结构...
- **1996年4月20日**,版本0.22:Tony Taylor将语言参考的所有章节重新组合成一个单一文件以便于在线使用,并且在4月18日和19日的工作组会议上达成了其他一致意见的修改。 - **1996年4月30日**,版本0.23(ALPHA-...
- 时间区间:2015-02-01 至 2038-01-19,库存量为 6000。 - **RAW_ROSE_005** - 时间区间:2014-10-01 至 2014-10-31,库存量为 18。 - 时间区间:2015-01-01 至 2015-01-31,库存量为 666。 这些数据表明了...
总之,"PrivateTest_model"是一个基于TensorFlow的、用于人脸表情分类的模型,利用Google官方支持的深度学习技术,特别是VGG19网络架构。它使用FER2013数据集进行训练,以识别并分类不同的人脸表情,这一技术在多个...
18002 ARMED Radio Policy Manager Test Plan V19.xls
c语言C-Test-9-19.rar
至于压缩包内的"test19",这可能是生成的路网文件或者一个示例案例的名称。在SUMO中,通常会有类似命名的文件,例如,它可能是一个包含特定交通场景设置的配置文件,或者是一个包含了道路网络信息的.net文件。 总的...
- `test19.xlsx`:这可能是一个包含测试数据的Excel文件,用于验证解调算法的正确性。MATLAB可以方便地读取Excel数据,这些数据可能包括模拟FM广播信号的样本。 通过学习和理解这个MATLAB源代码,读者不仅可以掌握...
对于名为"test19"的压缩包文件,它可能包含了一个示例数据库、相关代码或测试数据,用于演示如何实现上述的CRUD操作。为了更好地理解和使用这些资源,需要解压文件并查看其中的内容,如数据库文件(可能是.db、....
19. “Audit Script Helpful Hints”可能提供了用于审计目的的脚本编写提示和技巧,以确保配置和操作的正确性。 20. “Communication interface”和“Using Remote Desktop”部分涉及到了远程访问和管理APG40设备的...
在"test19"这个文件中,很可能包含了实现上述功能的C语言代码,代码可能包括初始化定时器、设置PWM参数、处理中断等部分。深入理解这些代码,将有助于读者掌握如何在实际项目中运用MSP430的PWM功能。 总结来说,MSP...
"C++-Test-8-18.rar" 和 "C++-Test-8-19.rar" 压缩文件包含了一系列的练习和示例,帮助学习者巩固并提升C++编程能力。让我们详细地解析这些知识点。 1. **C++测试基础**: 在编程中,测试是至关重要的,因为它确保...