网站首页 > 技术文章 正文
这里数据表以cfg_business_adapter为例,数据误删时间为20160923 10:10:00,进行恢复操作如下。
1、查询表数据select t.*, t.rowid from cfg_business_adapter t,误删后显示为空。
2、通过时间间隔确定需恢复的时间点,在没有恢复之前, 通过查询该时间点确认数据为删前数据,用以确定可利用该时间点进行恢复。
不断更改查询语句中的时间点,找出删除前的数据状态对应的时间,后续将闪回至该时间点之前的状态。
select * from cfg_business_adapter as of timestamp to_timestamp('20160923 10:00:00','YYYYMMDD HH24:MI:SS');
如上找出该表时间点为“20160923 10:00:00”的数据状态正是删除commit前的状态。
如果语句中使用的不是“select *” 而是逐一列出列名(必须不能含有rowid列),则执行查询后就已经可以将结果导出,用脚本直接恢复数据,工具直接导出操作如下:
执行生成的脚本文件逐条插入被删除数据。此方法本身就是重新进行数据录入的操作。
3、如果不使用结果导出,则可以尝试利用闪回恢复(推荐),闪回时间点为上述操作得到的时间点。
flashback table cfg_business_adapter to timestamp to_timestamp('20160923 10:00:00','YYYYMMDD HH24:MI:SS');
提示错误如下,
则应该执行: alter table cfg_business_adapter enable row movement,开启该表的行移动功能。
最后再次执行闪回恢复操作。
flashback table cfg_business_adapter to timestamp to_timestamp('20160923 10:00:00','YYYYMMDD HH24:MI:SS');
4、查看是否恢复:select t.*, t.rowid from cfg_business_adapter t
显示表数据恢复完成。
补充说明:
1、该过程需要注意的是,表的误删恢复,利用到的是时间戳闪回操作,如果删除时间过久或删除表数据后对该表更新操作过于频繁,将会提示如下错误,
则不能通过该方式完成数据记录恢复。
2、 Oracle中alter tablename enable row movement的应用,即开启数据表行移动,对应关闭为disable,用途有两种:
① 一般用于分区表,将row movement设置为enable,有可能发生行的物理移动,行的rowdi会变化,某一行更新时,如果更新的是分区列,并且更新后的列值不属于原来的这个分区,如果开启了这个选项,就会把这行从这个分区中delete掉,并加到更新后所属的分区。相当于一个隐式的触发器,但不会触发Insert/delete触发器。如果没有开启这个选项,更新时就会报错。
② 在flashback中使用,当需要使用flashback table功能时,需要首先打开row mvoement的选项,否则使用该功能也会报错。
3、关于闪回,闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成)。使用闪回操作时一些前提条件为,
① 该表的Flashback权限;
② 拥有该表的SELECT\INSERT\DELETE\ALTER权限;
③ 必须保证表示ROW MOVEMENT
猜你喜欢
- 2024-10-13 国庆节快乐--一文看懂Oracle数据库跨版本下rman备份恢复过程
- 2024-10-13 史上最全Oracle文件损坏处理办法(附实验步骤)
- 2024-10-13 数据库数据恢复-ORACLE数据库常见故障的数据恢复可能性分析
- 2024-10-13 Oracle数据库不同损坏级别的恢复详情
- 2024-10-13 不懂数据库高可用、备份与恢复,数据库优化?看这本就够了
- 2024-10-13 windows系统回收站和Oracle回收站--致力于恢复不小心删除的对象
- 2024-10-13 Oracle数据误操作全面恢复实战(r11笔记第78天)
- 2024-10-13 TRUNCATE恢复-bbed truncate如何恢复
- 2024-10-13 服务器数据恢复-服务器断电导致Oracle数据库报错的...
- 2024-10-13 一起来学习Oracle的备份恢复基础吧-1
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 567℃几个Oracle空值处理函数 oracle处理null值的函数
- 566℃Oracle分析函数之Lag和Lead()使用
- 550℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 546℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 545℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 536℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 519℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)