参考文档:

Fy_Recover_Data ———— 用于数据恢复的PLSQL包 [HelloDBA.COM]

移花接木————利用Oracle表扫描机制恢复被Truncate的数据 [HelloDBA.COM]

详细的原理,可以看以上的两个文档,以上两个文档是作者的文档。

-- 创建测试表,并将其truncate掉

conn / as sysdba
create table test as select * from dba_objects ;
select count(*) from test;SQL> select count(*) from test;COUNT(*)
----------73019SQL>

-- truncate掉表

truncate table test;
select count(*) from test;SQL> truncate table test;表被截断。SQL> select count(*) from test;COUNT(*)
----------0SQL>

-- 导入FY_Recover_Data.pck包

sqlplus /nolog
conn / as sysdba
@d:\FY_Recover_Data.pckSQL> @d:\FY_Recover_Data.pck
输入 files 的值:  30
原值   30:   --   1. Temp Restore and Recover tablespace & files                     ---
新值   30:   --   1. Temp Restore and Recover tablespace 30                     ---程序包已创建。程序包体已创建。SQL>

-- 开始执行恢复,输入参数schema,table_name ,如果出现无法写入文件的报错,建立对应的文件夹,这里报错无法创建'c:\temp\FY_REC_DATA.DAT,手工创建c:\temp后执行成功

set serveroutput on
exec fy_recover_data.recover_truncated_table('SYS','TEST');D:\app\19c\OPatch>sqlplus /nologSQL*Plus: Release 19.0.0.0.0 - Production on 星期六 7月 9 16:21:56 2022
Version 19.15.0.0.0Copyright (c) 1982, 2021, Oracle.  All rights reserved.SQL> conn / as sysdba
已连接。
SQL> set serveroutput on
SQL> exec fy_recover_data.recover_truncated_table('SYS','TEST');
16:23:51: Use existing Directory Name: FY_DATA_DIR
16:23:52: Recover Tablespace: FY_REC_DATA; Data File: FY_REC_DATA.DAT
16:23:52: Restore Tablespace: FY_RST_DATA; Data File: FY_RST_DATA.DAT
16:23:52: Recover Table: SYS.TEST$
16:23:53: Restore Table: SYS.TEST$$
16:24:01: Copy file of Recover Tablespace: FY_REC_DATA_COPY.DAT
16:24:01: begin to recover table SYS.TEST
16:24:02: New Directory Name: TMP_HF_DIR
16:24:03: Recovering data in datafile
D:\APP\ZHAOBINBIN\ORADATA\TESTWIN\SYSTEM01.DBF
16:24:03: Use existing Directory Name: TMP_HF_DIR
16:25:09: 1408 truncated data blocks found.
16:25:09: 72713 records recovered in backup table SYS.TEST$$
16:25:09: Total: 1408 truncated data blocks found.
16:25:09: Total: 72713 records recovered in backup table SYS.TEST$$
16:25:09: Recovery completed.
16:25:09: Data has been recovered to SYS.TEST$$PL/SQL 过程已成功完成。SQL>

-- 从上面的记录中,可以看到表被恢复为sys.test$$

SQL> select count(*) from test$;COUNT(*)
----------0SQL> select count(*) from test$$;COUNT(*)
----------72713SQL>

-- 将恢复出来的表的数据,插入到test表中

insert into test select * from test$$ ;
select count(*) from test$$;SQL> insert into test select * from test$$ ;已创建 72713 行。SQL> commit;提交完成。SQL> select count(*) from test$$;COUNT(*)
----------72713SQL>

-- drop掉表test$,test$$,对test表无影响

SQL> drop table test$ purge;表已删除。SQL> drop table test$$ purge;表已删除。SQL> select count(*) from test;COUNT(*)
----------72713SQL>

备注(从网上看到的,自己未测试):
1 如果truncate后,表又被写入数据,有新的数据进入,则无法用该方法还原出来。
2 如果表数据文件块被覆盖了。则无法恢复出完整的数据
建议: 表被truncate后,迅速将表所在的表空间或者文件read only。防止数据写入进去,然后再使用该方法恢复。

END

使用Fy_Recover_data恢复被truncate的表相关推荐

  1. 特殊手段恢复被truncate的表

    最近在写oracle抽取数据文件工具,在抽取数据文件恢复数据的时候发现,恢复的数据比预期的多,经过对比之后发现是有一些表被truncate了,由于被truncate之后部分块还没有被覆盖.所以这样的数 ...

  2. oracle 回滚 drop的表,使用ODU恢复被DROP的表 | 信春哥,系统稳,闭眼上线不回滚!...

    本实验模拟使用ODU恢复被DROP掉的表的恢复,有关ODU软件的下载和使用说明详见老熊的BLOG http://www.laoxiong.net 本实验以上一篇文章<使用ODU恢复被TRUNCA ...

  3. Oracle的闪回特性之恢复truncate删除表的数据

    /* 2008/06/06 *环境:Windows XP +Oracle10.2.0.1 *循序渐进oracle--数据库管理.优化与备份恢复 *循序渐进oracle第8章:Oracle的闪回特性之恢 ...

  4. ORACLE恢复truncate的表-转载

    这两天都在研究怎么恢复被清空过的表,恢复的方法很多,可用的工具也很多,在这里分享一下个人认为比较方便的一种方法:   首先,我们分析一下TRUNCATE的过程.TRUNCATE不会逐个清除用户数据块上 ...

  5. 【云和恩墨】一次 truncate 核心表衍生的安全管理思考

    第一章 一次 truncate 核心表衍生的安全管理思考 云和恩墨 | 2016-05-06 17:56 本文编辑整理来自上周四晚云和恩墨大讲堂 黄嵩 关于数据安全问题的分享.安全问题涉及到信息系统的 ...

  6. MySql清空表的方法介绍 : truncate table 表名

    清空某个mysql表中所有内容 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate tabl ...

  7. php delete和truncate,TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。...

    TRUNCATE 删除表,无法回退.默认选择为整个表的内容,所以不能加条件. DELETE 删除表,可以回退.可以带where 条件.建议使用delete.但是TRUNCATE 删除表数据比delet ...

  8. 如何通过直接复制frm文件以实现恢复/复制innodb数据表?

    如何通过直接复制frm文件以实现恢复/复制innodb数据表? 在MySQL5.0的使用过程中,经常会出现一些莫名奇妙的问题,导致服务无法启动,只好重新安装MySQL,但是这样原来的数据库就会丢失了. ...

  9. 一次 truncate 核心表衍生的安全管理思考

    本文编辑整理来自上周四晚云和恩墨大讲堂 黄嵩 关于数据安全问题的分享.安全问题涉及到信息系统的方方面面,尤其是其核心资产--数据的安全.无论是数据访问控制的裸露,数据操作权限的无序或者是人为的粗心大意 ...

最新文章

  1. VMware Workstation 6.0全貌概览
  2. 某女程序员吐槽:和男友准备结婚买房,男友家出首付,双方一起还贷款,男友却不在房产证上加她的名字!...
  3. Python操作数据库之 MySQL
  4. LINQ to XML 常用操作(转)
  5. Bash scripts
  6. C/C++中 static 的作用
  7. Lawn of the Dead
  8. 有关JAVA考试中数据库的题,javaee期末考试题库,用javaEE编写一个题库系统,要怎么做...
  9. mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
  10. ACM-Satellite Photographs
  11. DebugDiag调试工具
  12. linux硬件开发学习,硬件学习该从何下手
  13. 如何在苹果Mac上快速将表情符号添加到电子邮件?
  14. 1060显卡用什么软件测试,参测显卡超频测试——10分
  15. 申请一个微信小程序有哪些需要注意的事项
  16. 屏蔽Enter键和ESC键的方法
  17. 【配电网重构】基于粒子群算法实现最小化功率损耗的配电网重构附matlab代码
  18. 【资源】Oculus meta Quest 2游戏下载VR一体机游戏资源合集下载教程Pro
  19. Java面试——数据库
  20. foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂

热门文章

  1. Word并排插入多张图片 一行插入三张 排版方法汇总
  2. 爬虫学习第三天,urllib中的handler
  3. 16-webpack 压缩 CSS 代码
  4. PP实施经验分享(6)——SAP生产订单计划内投料计划外投料
  5. elasticsearch映射及字段类型
  6. vscode配置drawio绘制流程图
  7. 支持热插拔的AR眼镜,才是更好的AR眼镜
  8. 【装机知识】CPU知识整理
  9. Sipeed RISC-V调试器(ft2232d)调试longan,使用MounRiver Studio
  10. 基于JavaWeb的理发店管理系统