Oracle 恢复被删除的数据,解决误操作删除数据

在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧:

第一种:

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)

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

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

第三种:其他(在别的地方找到的答案,但还没有试过!)

删除表后,可以采用如下操作:在 查询表user_recyclebin最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。

select * from user_recyclebin;

FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;

如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:

CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。

四:通过SCN实现

SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。

SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
注释:Oracle 仅根据 SCN 执行恢复。
它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
1:执行下面语句,将删除时间转换为scn

select timestamp_to_scn(to_timestamp(‘2011-08-03 10:00:00‘,‘YYYY-MM-DD HH:MI:SS‘)) from dual;
结果:11837812:在将table的scn点取出来。

select * from moAS OF SCN 11837813;

最后把查出来得结果insert到原表中

insert into mo select * from mo AS OF SCN 1183781

时间: 2024-12-26 08:48:39

Oracle 恢复被删除的数据,解决误操作删除数据的相关文章

SQL SERVER回滚恢复误操作的数据

在生产数据库做CURD操作时,可能会有执行某条语句误操作的情况发生,针对这个种情况有两点建议:1.在SQL SERVER上开启事务确认功能,当执行完语句后确认无误,再提交事务.(开启方法见附件图片).2.新建存储过程,粘贴附件脚本.此存储过程执行后能够自动产生两个操作日志表,自动记录CRUD的所有操作.适用于提交事务后才发现错误的情况.只需要打开表UPDATE_LOG,粘贴RollbackupSQL里的语句执行即可恢复数据.注意:1)如果表中有自增长的ID,所恢复数据的ID值是最大ID+1.2)

binlog-rollback.pl 在线恢复update 和delete不加条件误操作sql

一.binlog-rollback.pl工具介绍 是perl开发的脚本工具,此工具主要是生成反向的DML sql语句: #基于row模式的binlog,生成DML(insert/update/delete)的rollback语句 #通过mysqlbinlog -v 解析binlog生成可读的sql文件 #提取需要处理的有效sql #"### "开头的行.如果输入的start-position位于某个event group中间,则会导致"无法识别event"错误 #将

Java操作JSON数据(2)--Gson操作JSON数据

Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象.本介绍下Gson的基本使用方法,包括序列化和反序列化:文中所使用到的软件版本:Java 1.8.0_191.Gson 2.8.6. 1.引入依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactI

恢复被误操作删除的数据 fn_dblog

-- Script Name: Recover_Deleted_Data_Proc -- Script Type : Recovery Procedure -- Develop By: Muhammad Imran -- Date Created: 15 Oct 2011 -- Modify Date: 22 Aug 2012 -- Version    : 3.1 -- Notes : Included BLOB data types for recovery.& Compatibile wi

git解决误操作

今天在做项目的时候,不小心多删除了几个文件夹,并push上去了,不知道怎么恢复,后来通过git恢复到了之前的版本后,把之前版本的文件夹复制下来后,又跳转到了最新的版本,把复制的文件放到了最新的版本: 用到的操作 git stash git log git checkout <之前的版本号> *git checkout <最新的版本> git stash apply <缓冲号> git stash 将当前的的状态缓存,并跳转到push过的最新状态.在此之前要git sta

关于注册表的文件误操作删除后,怎么办

今天由于遇到关于sql server 帮助文档的问题,弹出某些未知错误.特到百度上寻求帮助.然后看到了这个, 结果本人信了,删除了注册表文件.接着就坑爹了!(未曾备份文件).我就真的是吐槽这些始作俑者,解决问题的方法究竟是否被发表者验证过,我是不得而知.但是针对这么草率的提出问题的解决方案,我表示愤慨. 最后告诉大家,误删注册表文件的解决方法: 去另一台电脑,将对应误删的注册表文件导出,找到对应文件,点击右键导出注册表.然后拖进到你自己的注册表信息中即可!

当数据被误删除/误操作后造成数据丢失。你尝试过用什么手段来挽救数据/损失?

一.前提 当数据被误删除/误操作后,第一时间要关闭数据库.业务方需要紧急挂停机公告,避免数据二次污染,用于保护数据的一致性 BINLOG格式为ROW格式,不讨论其他格式的BINLOG 二.数据被误操作(update/delete/drop)造成数据丢失,可以用哪些手段来恢复? BINLOG恢复:可以使用逆向解析BINLOG工具来恢复.例如:binlog2SQL等 延迟从库: 可以通过解除延迟从库,并指定BINLOG结束位置点,可以实现数据恢复 三.数据被误删除(rm/物理文件损坏)造成数据丢失,

向后端请求数据 以及像后端发送数据要求(删除数据和添加数据)

删除数据和添加数据只能后端操作 删除数据和添加数据都要用到的html(一)部分 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="../css/bootstrap.min.css"

MySQL的delete误操作的快速恢复方法

1. 根据误操作时间定位binlog位置找到数据库的binlog存放位置,当前正在使用的binlog文件里面就有我们要恢复的数据.一般生产环境中的binlog文件都是几百M乃至上G的大小,我们不能逐行去找被删除的数据在什么位置,所以记住误操作的时间很重要,我们可以通过mysqlbinlog命令的--start-datetime参数快速定位数据位置.比如误操作时间为20181104151800,解析出的binlog内容: [[email protected] mysql]# mysqlbinlog