作家
登录

Oracle数据库数据丢失?这几种方法教你来恢复~

作者: 来源: 2017-10-17 09:15:34 阅读 我要评论

如不雅想在 update 的子萌芽部分应用 AS OF,那么该萌芽只能返回一笔记录,不然将会报错。

可以经由过程添加一个临时表作为中转,然后再作更新,如下:

1、 把须要恢复的表导入到另一个用户下面:

2)经由过程 DBMS_FLASHBACK 包来恢复

DBMS_FLASHBACK 包供给了以下几个函数:

  • ENABLE_AT_TIME:设置当前 SESSION 的闪回萌芽时光
  • ENABLE_AT_SYSTEM_CHANGE_NUMBER:设置当前 SESSION 的闪回萌芽 SCN
  • GET_SYSTEM_CHANGE_NUMBER:取合适前数据库的 SCN
  • DISABLE:封闭当前 SESSION 的闪回萌芽

当将一个 SESSION 设置为闪回萌芽模式之后,后续的萌芽都邑基于那个时光点或者 SCN 的数据库状况,如不雅 SESSION 停止,那么即使没有明白指定 DISABLE,闪回萌芽也会主动掉效。

当 SESSION 运行在闪回萌芽状况时,不许可进行任何 DML 和 DDL 操作。如不雅要用 DML 操作来进行数据恢复就必须应用 PL/SQL 游标。

▲示例:

经由过程膳绫擎的例子可以看出,只要这个修改的时光不早于 sysdate- (UNDO_RETENTION 指定的秒数), 就可经由过程这种方法来恢复数据。

对于问题中的批量数据,可以写个过程来完成获取到更改前的数据:

为了便利应用办法的介绍,上述恢复办法都将基于以下场景进行:体系治理员在前一天晚上 11 点用 export 对数据库做了全库逻辑备份,然后对所稀有据文件进行了热备份。第二天上午 10 点,体系治理员在修改表 TFUNDASSET 的数据时,因为修改语句的前提写错了,导致一批记录(几千条)的 ztm 字段被修改成了缺点的值,并且已经提交。这个表是资产表,相对而言数据变更不频繁。

然后再用这个临时表里的数据来更新 TFUNDASSET 就可以了。

比较以上几种恢复数据的办法的应用过程,我们可以看出:

  • exp/imp 只合适于数据变更不大年夜的表的数据损掉的情况,即应用这种办法处理后也须要大年夜营业解决资估中修改数据,不然导致数据损掉;
  • 采取基于时光点的不完全恢复可以恢复损掉的数据,然则须要关封闭数据库,削减体系可用时光,并且也会损掉恢复时光点今后的数据;
  • 应用 LogMiner 可以较好的恢复数据,然则请求数据库尽可能运行在归档模式,不然也可能导致数据损掉。好处是不消封闭体系,可以或许大年夜日记文件中获得所有的数据。
  • 应用 Flashback 最便利和简洁,可以直接获得修改前的数据,然则须要依附体系设置,并且须要占用大年夜量的回滚表空间。

是以选择什么样的办法来恢复数据,取决于你的体系情况和具体情况,不克不及生搬硬套。采取精确的办法才能最大年夜程度的削减数据的损掉。

当然,最好是不须要用到这些恢复的办法。前提是,你必须做好以下的工作:

  1. 为不合情况创建不合的数据库用户、不合暗码(如不雅不克不及用户不合,必定要暗码不合);
  2. 将 owner 和应用用户分开,并做适度授权;
  3. 在做 DML 前,先用同样的前提做萌芽,看根据结不雅集是否相符预期。  

【编辑推荐】

  1. 7个原因告诉你为什么要选择ArangoDB “多模型” 数据库?
  2. 深度解读 | 阿里云新一代关系型数据库 PolarDB
  3. SQL Server 2017正式宣布;Oracle宣布开源Fn project
  4. 苹不雅开源iOS内核,全球数据库排名MySQL三连跌
  5. 这些特点,PostgreSQL秒杀其他数据库
【义务编辑:庞桂玉 TEL:(010)68476606】

  推荐阅读

  云计算和成本:爱恨交织的关系

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 固然致力于履行数字化计谋,但重视节约成本仍然是应用云计算的公司的重要义务。然而,很多公司都在尽力获得>>>详细阅读


本文标题:Oracle数据库数据丢失?这几种方法教你来恢复~

地址:http://www.17bianji.com/lsqh/37967.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)