快速恢复update了的orcale数据表

在update的时候 没有写条件 将整个表中的数据全部都更新了,这时候怎么办呢?

orcale提供了以下的方法产看某一个时间戳, 所执行的sql的语句内容, 同时可以利用该这个时间戳查看当时语句执行显示的结果

查出需要撤销SQL 的执行时间:

SELECT last_load_time, sql_text
FROM v$sql
WHERE last_load_time IS NOT NULL
and sql_text like ‘%你错误执行的sql%‘
ORDER BY last_load_time DESC; 

说明:这个语句中除了like里的字段 其他的都是固定的,like中写的是你要恢复的那条sql中的一段 或者全部

执行结果如下:

在上图的执行结果里, 找到你错误执行的那条sql的时间,我这里错误执行语句的时间是第二条:2017-08-21/11:07:49
然后通过下面的sql,找回update之前的数据: 

select * from your_table as of timestamp to_timestamp(‘2017-08-21/11:07:49‘,‘yyyy-mm-dd/hh24:mi:ss‘);

若是全表恢复:

1.将错误更新之前的数据新建一张表tableNameCopy 保存

create table tableNameCopy

as select * from tableName

as of timestamp to_timestamp(‘2017-08-21/11:07:49‘,‘yyyy-mm-dd/hh24:mi:ss‘);

2.删除原表 tableName 中的所有被错误更新的数据

delete from tableName ;

3.将tableNameCopy 表中的数据写入原表 tableName

insert into tableName select * from tableNameCopy

------完美啦~
时间: 2024-10-17 07:03:49

快速恢复update了的orcale数据表的相关文章

mysql数据表增删改查

http://www.runoob.com/mysql/mysql-tutorial.html 一.MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name column_type); 以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl: CREATE TABLE IF NOT EXISTS `runoob_tbl`

查看Orcale数据里的表是否有变化

由于我们公司一个数据库两个应用在使用,导致一个应用修改了数据库,另一个应用用的缓存而不知道有更新还是原来的结果.原来的处理方式是采用session缓存的方式,用户登出了就清空缓存,这样只需要重新登录一次就得到最新的快照放在缓存中了,但现在新的要求是不登出就要实时刷新改了的内容.其实这种方式最好的处理办法是一个应用改了数据库通知另一个应用去刷新缓存,但是线下应用用vb写的成熟的产品,都是一帮老员工很难让他们去改点东西来适合新应用,都是新应用去套他们的.领导本来说直接不用缓存了,每次去读数据库,我觉

C# DataAdapter.Update() 无法更新数据表中删除的数据行

用DataAdapter.Update() 方法更新删除了部分DataRow 的 DataTable .但是数据库中的数据没有随着更新而变化. 原因:DataTable 删除 DataRow 时,使用的是DataTable.Rows.Remove(DataRow ) 或 DataTable.Rows.RemoveAt(DataRowIndex) 方法. 解决方法:使用 DataTable.Rows[rowIndex].Delete() ; 方法删除数据. 详解如下: DataAdapter.Up

oracle的学习 第二节:创建数据表

学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL/sql语言是结构化的查询语言. 2.分类: 数据定义语言  :create  alter  drop 数据操作语言: insert update delete 数据控制语言:select (二)创建数据库的两种方式 方式一:图形界面: 方式二:create  Datebase命令方法.(常用) 具

如何记录数据表信息的变更

在操作数据记录时,对重要的数据,我们需要记录每一次的变更,有没有好的方法呢? 在通用权限管理系统中提供了记录数据表信息变更的方法. 一.先看看效果截图 二.再看看修改记录表的表结构 三.对该表访问的业务类 1 public partial class ModifyRecordManager : BaseManager, IBaseManager 2 { 3 /// <summary> 4 /// 构造函数 5 /// </summary> 6 public ModifyRecord

mysql update修改多条数据

通常情况下,我们会使用以下SQL语句来更新字段值: 复制代码代码如下: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源.教程指南.橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段 display_order,每个分类占一行记录.如果我想重新编排这些

三、数据表的基本操作

3.1.创建数据表 创建数据表指的是在已经创建好的数据库中建立新表.创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(实体完整性.引用完整性.域完整性)约束的过程. 创建表的语法格式 数据表属于数据库,在创建数据表之前,应该先创建数据库,指定在哪个数据库中进行. mysql> USE test; Database changed mysql> CREATE TABLE tb_name ( 字段名1,数据类型 [列级别约束条件] [默认值], 字段名2,数据类型 [列级别约束条件

AngularJS中使用$http对MongoLab数据表进行增删改查

本篇体验使用AngularJS中的$http对MongoLab数据表进行增删改查. 主页面: <button ng-click="loadCourse()">Load Course</button> <button ng-click="toggleAddCourse(true)">Add New Course</button> <ng-includce src="'course_list.html'&q

使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型 类型       大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G Oracle LOB介绍 LOB,即Large Objects(大对象),是用来存储大量的二