热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

恢复oracle中update或delete的数据

问题描述比如在开发人员对employee表进行一个update语句,但更新完之后,才发现更新的语句有误,需要撤销刚才的update操作。如(updateemployeeesete.block0300100011000000248wheree.block0300100011000000240;更新了10条数据)1、如果在很短

问题描述 比如在开发人员对employee表进行一个update语句,但更新完之后,才发现更新的语句有误,需要撤销刚才的update操作。如(update employee e set e.block='0300100011000000248' wheree.block='0300100011000000240'; 更新了10条数据) 1、如果在很短

问题描述

比如在开发人员对employee表进行一个update语句,但更新完之后,才发现更新的语句有误,需要撤销刚才的update操作。如(update employee e set e.block='0300100011000000248' wheree.block='0300100011000000240'; 更新了10条数据)

1、如果在很短的时间内,可以查询数据库中的versions,记录短时间内的employee表中的update、delete、insert的操作。(时间多长取决于数据库中的相关设置参数)

select versions_xid, versions_operation, versions_starttime, versions_endtime   
from employee   versions  between  timestamp  minvalue  and  maxvalue;


2、如果顺利,可以查到刚才update的语句,查出对应的versions_xid的值,然后查询flashback_transaction_query闪回事务查询表。

如versions_xid的值为'000A0019000214C3'

select  *  from  flashback_transaction_query  where xid ='000A0019000214C3'

如果想要取消刚才的update操作,在数据库中执行查询出来中的UNDO_SQL字段中的sql语句即可

时间条件的查询,如下:

select  * from flashback_transaction_query  where table_name like 'emp%'
where commit_timestamp


3、如果上面的第2部没有查询出来,可以先查看目前的employee表的数据量是多少,以便和没有update之前的对比一下

select count(*) from employee

4、可以新生产一个表来备份update之前的闪回的数据(这也取决于数据库的闪回时间、undo的大小)

create table employee_copy
as
select * from employee as of  timestamp to_timestamp('2009-02-16 10:00:00','yyyy-mm-dd hh24:mi:ss')

5、查看在update之前的employee表 在update语句中的条件是否一样(比如原来更新语句中的条件是e.block='0300100011000000240',更新了10条),现在查出来也是10条数据,可以把下面10条数据的id查找出来,然后在更新回去。

select  *  from employee_copy  e  where e.block='0300100011000000240';

6、查找出来employee的id

select count(*) from employee where report_id in
( '8a8881a71c9e53f5011ca74049d7001b',
 '5F3BA0EA14890024E0437F0000010024', 
'5A6F193A11A820D8E0430A08012120D8',
 '56F9DFC764E0101AE0430A3E3D64101A', 
'8a8881a71cd6ea28011cdf6c372d00a3',
 '8a8881a71df71207011dfc3071730276', 
'8a8881a71df71207011dfc38012b0277', 
'8a8881a71df71207011dfc3f2e50027b', 
'8a8881a71df71207011dfc0d5ef9022b',
 '5DA7E2D9FA2AF06AE0430A080121F06A')


7、更新回来原来的数据

update employee set block='0300100011000000240' where report_id in
( '8a8881a71c9e53f5011ca74049d7001b',
 '5F3BA0EA14890024E0437F0000010024',
 '5A6F193A11A820D8E0430A08012120D8',
'56F9DFC764E0101AE0430A3E3D64101A',
 '8a8881a71cd6ea28011cdf6c372d00a3',
'8a8881a71df71207011dfc3071730276',
'8a8881a71df71207011dfc38012b0277',
'8a8881a71df71207011dfc3f2e50027b',
'8a8881a71df71207011dfc0d5ef9022b',
'5DA7E2D9FA2AF06AE0430A080121F06A')

这样就相当于把原来进行的误操作sql语句撤销了。

8、最后把备份的表删除掉

drop table employee_copy

完毕!

推荐阅读
  • 本文详细介绍了MySQL中的存储过程,包括其定义、优势与劣势,并提供了创建、调用及删除存储过程的具体示例,旨在帮助开发者更好地利用这一数据库特性。 ... [详细]
  • 最新计算机专业原创毕业设计参考选题都有源码+数据库是近期作品ling取参考你的选题刚好在下面有,有时间看到机会给您发1ssm资源循环利用2springboot校园考勤系统3ssm防 ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 探讨如何通过SQL查询将来自多个表的多行信息整合到同一行中展示,特别适用于需要汇总特定商品所有相关信息的场景。 ... [详细]
  • 本文旨在详细介绍如何在PL/SQL环境中调试Oracle数据库中的触发器。虽然触发器能够实现某些复杂的功能,但其使用可能增加系统的维护难度。因此,本文不仅提供技术指导,还讨论了触发器使用的利弊。 ... [详细]
  • Mac下 运行Win7虚拟机内SQL Server 2008 Management Studio 如何访问外接移动硬盘 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文将深入探讨如何使用 SQLAlchemy 在数据库模型中定义和操作不同类型的表间关系,包括一对一、一对多及多对多的关系。 ... [详细]
  • 探讨HTML中的DIV样式难题
    本文深入分析了HTML中常见的DIV样式问题,并提供了有效的解决策略。适合所有对Web前端开发感兴趣的读者。 ... [详细]
  • 迎接云数据库新时代:程序员如何应对变革?
    在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ... [详细]
  • 本文详细列举了软件开发中常见的功能测试要点,涵盖输入框、搜索、添加/修改、删除、文件上传下载等多个方面,旨在帮助测试人员全面覆盖测试需求,确保软件质量。 ... [详细]
  • 本文介绍了用于监控数据库运行状态的SQL查询,包括重做日志切换频率及PGA和SGA内存使用情况的检查方法。 ... [详细]
  • PHP 中 preg_match 函数的 isU 修饰符详解
    本文详细解析 PHP 中 preg_match 函数中 isU 修饰符的具体含义及其应用场景,帮助开发者更好地理解和使用正则表达式。 ... [详细]
  • 当面临数据库清理任务时,若无删除或重建数据库的权限,可以通过编写SQL脚本来实现批量删除用户自定义的数据表和存储过程。本文将详细介绍如何构造这样的SQL脚本。 ... [详细]
author-avatar
摩擦摩擦魔鬼的步伐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有