使用Fy_Recover_data恢复被truncate的表
参考文档:
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的表相关推荐
- 特殊手段恢复被truncate的表
最近在写oracle抽取数据文件工具,在抽取数据文件恢复数据的时候发现,恢复的数据比预期的多,经过对比之后发现是有一些表被truncate了,由于被truncate之后部分块还没有被覆盖.所以这样的数 ...
- oracle 回滚 drop的表,使用ODU恢复被DROP的表 | 信春哥,系统稳,闭眼上线不回滚!...
本实验模拟使用ODU恢复被DROP掉的表的恢复,有关ODU软件的下载和使用说明详见老熊的BLOG http://www.laoxiong.net 本实验以上一篇文章<使用ODU恢复被TRUNCA ...
- Oracle的闪回特性之恢复truncate删除表的数据
/* 2008/06/06 *环境:Windows XP +Oracle10.2.0.1 *循序渐进oracle--数据库管理.优化与备份恢复 *循序渐进oracle第8章:Oracle的闪回特性之恢 ...
- ORACLE恢复truncate的表-转载
这两天都在研究怎么恢复被清空过的表,恢复的方法很多,可用的工具也很多,在这里分享一下个人认为比较方便的一种方法: 首先,我们分析一下TRUNCATE的过程.TRUNCATE不会逐个清除用户数据块上 ...
- 【云和恩墨】一次 truncate 核心表衍生的安全管理思考
第一章 一次 truncate 核心表衍生的安全管理思考 云和恩墨 | 2016-05-06 17:56 本文编辑整理来自上周四晚云和恩墨大讲堂 黄嵩 关于数据安全问题的分享.安全问题涉及到信息系统的 ...
- MySql清空表的方法介绍 : truncate table 表名
清空某个mysql表中所有内容 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate tabl ...
- php delete和truncate,TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。...
TRUNCATE 删除表,无法回退.默认选择为整个表的内容,所以不能加条件. DELETE 删除表,可以回退.可以带where 条件.建议使用delete.但是TRUNCATE 删除表数据比delet ...
- 如何通过直接复制frm文件以实现恢复/复制innodb数据表?
如何通过直接复制frm文件以实现恢复/复制innodb数据表? 在MySQL5.0的使用过程中,经常会出现一些莫名奇妙的问题,导致服务无法启动,只好重新安装MySQL,但是这样原来的数据库就会丢失了. ...
- 一次 truncate 核心表衍生的安全管理思考
本文编辑整理来自上周四晚云和恩墨大讲堂 黄嵩 关于数据安全问题的分享.安全问题涉及到信息系统的方方面面,尤其是其核心资产--数据的安全.无论是数据访问控制的裸露,数据操作权限的无序或者是人为的粗心大意 ...
最新文章
- VMware Workstation 6.0全貌概览
- 某女程序员吐槽:和男友准备结婚买房,男友家出首付,双方一起还贷款,男友却不在房产证上加她的名字!...
- Python操作数据库之 MySQL
- LINQ to XML 常用操作(转)
- Bash scripts
- C/C++中 static 的作用
- Lawn of the Dead
- 有关JAVA考试中数据库的题,javaee期末考试题库,用javaEE编写一个题库系统,要怎么做...
- mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
- ACM-Satellite Photographs
- DebugDiag调试工具
- linux硬件开发学习,硬件学习该从何下手
- 如何在苹果Mac上快速将表情符号添加到电子邮件?
- 1060显卡用什么软件测试,参测显卡超频测试——10分
- 申请一个微信小程序有哪些需要注意的事项
- 屏蔽Enter键和ESC键的方法
- 【配电网重构】基于粒子群算法实现最小化功率损耗的配电网重构附matlab代码
- 【资源】Oculus meta Quest 2游戏下载VR一体机游戏资源合集下载教程Pro
- Java面试——数据库
- foj2198 Problem 2198 快来快来数一数 dp 矩阵快速幂