ORACLE数据恢复方法(提交事务也可以)

今天在操作数据库的时候,发现数据操作错误,想要恢复,但是没有用事务,按理说,设置成不默认提交事务,此时所做的各种操作都没有反应到数据库中。这时,你可以rollback事务,撤销所有未提交的修改。不过,一旦commit了的话,就真没办法撤销了。好在oracle还有时间戳方法。

第一种方法:

1.打开Flash存储的权限
ALTER TABLE tablename ENABLE row movement ;
2.把表还原到指定时间点
flashback table tablename to timestamp to_timestamp(‘‘2011-02-28 10:40:00‘‘,‘‘yyyy-mm-dd hh24:mi:ss‘‘);
后面的参数为要还原的时间点

第二种:利用ORacle的快照进行查找某个时间点的数据
select * from tablename AS OF TIMESTAMP  (SYSTIMESTAMP - INTERVAL ‘100‘ MINUTE)

or

select * from tablename as of timestamp to_timestamp(2011-05-21 11:40:00‘,‘YYYY-MM-DD HH24:MI:SS‘);

这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。

例:

如果我们在前5分钟误删除了表emp中的数据,我们可以进行如下操作:

找回原始数据

Select * from emp as of timestamp sysdate  -  6/1440

删除原来的表   删掉后创建一个备份表

Create table emp as (select * from emp as of timestamp sysdate - 6/1440);

可以做差,找到删除的记录=6分钟前的原始数据—现在表中的记录 再插入原来的表中提交

Insert into emp

Select * From

(

select * From emp as of timestamp sysdate - 6/1440 Minus Select * from emp)

--timestamp(ags) 方法

--interval(时间间隔)类型用来存储两个时间戳之间的时间间隔

--当要回复被删除的数据的时候

--查询500分钟之前的数据

select * from emp as of timestamp(systimestamp - interval ‘500‘ minute)

--查询600秒之前的数据

select * from emp as of timestamp(systimestamp - interval ‘600‘ second)

--查询5小时之前的数据

select * from emp as of timestamp(systimestamp - interval ‘5‘ hour)

--查询一天之前的数据

select * from emp as of timestamp(systimestamp - interval ‘1‘ day)

--查询1分钟前的数据 (1天=1440分钟) date-number=date

select * from emp as of timestamp sysdate - 1/1440

--查询5小时前的数据

select * from emp as of timestamp sysdate - 5/24

--查询 5小时内数据=内前删除的5小时前表中的数据-现在表中的数据

--minus减去

select * from

(select * from emp as of timestamp sysdate -5000/1440 minus select * from emp)

从9i开始,oracle提供了闪回(flashback)功能。使用flashback table语句从撤销段中(undo segmeng)读取改表的过去映像,同时利用oracle9i中引入的回闪查询功能重建表行。Undo_retention给出了回闪支持的最小时间。也就是说flashback最少可以支持undo_retention给出的时间,如果系统比较闲,则可以回闪更长的时间。如果系统处于忙时,有可能重用还没有达到undo_retention时间吸纳是的数据空间。注意:使用闪回的一个前提是表不能进行ddl操作,不但不能对ddl操作进行回闪,而且,无法闪回到ddl操作以前的数据了。

注意:不启动行移动功能,不能闪回表

Alter table emp enable row movement;

这个命令的作用就是允许ORACLE修改分配给行的rowid。在ORACLE中,插入一行时就会为它分配一个rowid,而且这一行永远拥有这个rowid。闪回表处理时会对EMP表完成DELETE 操作,并且重新插入行,这样就会为这些行分配一个新的rowid。要支持闪回功能就必须允许ORACLE执行这个操作。

原文:http://blog.csdn.net/jiajane/article/details/49280277

时间: 2024-08-14 17:09:57

ORACLE数据恢复方法(提交事务也可以)的相关文章

oracle 数据恢复,只有oradata文件夹里的文件,没有备份文件的数据库恢复,重装系统后,oracle 10g数据库恢复

格式化重装系统后,才想起来oracle 10g 数据库没有做备份,开始以为很麻烦,没想到数据库恢复的还挺顺利的 恢复方法: 1,把原来的数据库文件备份,(D:\oracle\product\10.2.0\oradata\gqxt),重新命名即可,我命名为gqxt_old,(否则装数据库的时候会提示sid已存在). 2,重新安装数据库到原来的路径(不安装到原来的路径也没关系,但是原来的数据库文件必须在原来的路径不能变,也就是oradata\gqxt所在的路径不能变),数据库的名字就是你要恢复的名字

PL/SQLDeveloper导入导出Oracle数据库方法

前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据库用于导入导出数据库的主要工具之一,本文主要介绍利用PL/SQL导入导出Oracle数据库的过程. 1.Oracle数据库导出步骤 1.1 Tools→Export User Objects...选项,导出.sql文件. 说明:此步骤导出的是建表语句(包括存储结构). 1.2 Tools→Expor

Oracle 笔记:PLSQL无法连接64位Oracle 解决方法

Plsql打开后提示错误,登录界面无连接目标选择. 原因:PLSQL本身好像就不支持64位的Oracle. 解决方法: 到Oracle 官网下载32位的 Oracle 客户端,地址为 http://www.oracle.com/technetwork/topics/winsoft-085727.html 解压下载的32位客户端即可. PLSQL登录界面暂时取消登录,先进入PLSQL界面,点击首选项,设置OCI库为刚才下载的32位客户端的OCI路径,路径中一定要包含 oci.dll . 添加环境变

照片或特殊文件丢失后 采用winhex脚本进行数据恢复方法

照片或特殊文件丢失后 采用winhex脚本进行数据恢复方法 1:打开winhex,打开一个正常的图片文件如:JPG CR2 BMP;  视频类文件  MP4 WAV RMVB MTS MOV ; 办法文档文件如DOC XLS PPT MDB等.查看文件前8-16位字节,然后保存下来.这就是我们要找的文件头. 最好,使用同一个相机生成的照片,或同一电脑保存的文档进行取样. 2:确定文件头后,我们就可以用winhex打开要恢复的硬盘或分区,进行全盘扇区扫描式查找.查找到的文件一定要保存到另外一块硬盘

java程序通过jdbc连接oracle数据库方法

1.  赋予scott用户连接权限:Grant connect to scott: 2.   在Myeclipse中新建java项目导入jdbc包(classes12.jar):        右键项目 bulid path -〉add external archives 选择classes12.jar 3.   新建java文件, lianxi01.java import java.sql.Connection; import java.sql.ResultSet; import java.s

PL/SQL Developer导入导出Oracle数据库方法

前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据库用于导入导出数据库的主要工具之一,本文主要介绍利用PL/SQL导入导出Oracle数据库的过程. 1.Oracle数据库导出步骤 1.1 Tools→Export User Objects...选项,导出.sql文件. 说明:此步骤导出的是建表语句(包括存储结构). 1.2 Tools→Expor

RAID3和RAID5的区别,RAID5数据恢复方法

在RAID技术中,常用到"RAID级别"这个词,RAID级别是指磁盘阵中磁盘组合方式,RAID级别不同,磁盘组合的方式也就不同,为用户提供的磁盘阵列在性能上和安全性的表现上也有不同. 在使用先进技术背后,我们也是会遇到一些棘手的问题,或者说是小烦恼吧.这就是我今天打算为大家分享的问题. RAID3和RAID5的区别 RAID3采用的是一种较为简单的校验实现方式,使用一个专门的磁盘存放所有的校验数据,而在剩余的次怕中创建带区集分散数据的读写操作. RAID5和RAID3的最大区别在于RA

php操作oracle的方法类集全

在网上开始找php中操作oracle的方法类~ 果然找到一个用php+oracle制作email表以及插入查询的教程,赶忙点开来看,从头到尾仔细的看了一遍,还没开始操作,便觉得收获很大了.地址在此:http://www.alixixi.com/program/a/2008050731615.shtml#replay. http://blog.163.com/[email protected]/blog/static/27712393201131815035122/        (博客校园) 摘

500G硬盘提示位置不可用,无法访问H:\磁盘结构损坏且无法读取的数据恢复方法

500G硬盘提示位置不可用,无法访问H:\磁盘结构损坏且无法读取的数据恢复方法,双击这个盘会提示下图,根本打不开, 由于里面还有文件,不能格式化这个盘.所以需要做数据恢复 ,具体操作看下面 1.下载极光数据恢复软件,然后打开这个软件,打开软件后是这样的 1.软件会显示电脑上所有的分区和硬盘U盘等可恢复的介质,由于我是H盘损坏了打不开,提示位置不可用,无法访问H:\磁盘结构损坏且无法读取的数据恢复,所以这里选择H盘, 可以直接双击H盘 2.由于软件采用高效的算法,不需要完全扫描硬盘, 所以这款软件