Truncate 表之恢复
来源:互联网 发布:java排序算法 编辑:程序博客网 时间:2024/05/22 16:20
Truncate 表之恢复
1. 测试环境:
Linux:172.28.145.21
DB:testdb01
2. 原理
Truncate 不会逐个清除用户数据块上的数据,而仅仅重置数据字典和元数据块上的元数据(如存储断头和扩展段图)。
也就是说,此时,基本数据表并未破坏,而是被系统回收,等待被重新分配—因此,要恢复被truncate的数据,需要及时备份所在的数据文件。
3. 存储过程包:
Fy_Recover_Data是利用Oracle表扫描机制、数据嫁接机制恢复TRUNCATE或者损坏数据的工具包。由纯PLSQL编写,从网上下载下来的:
4. 测试模拟:
创建表:
CREATETABLET_TRUNCATEASSELECT*FROM TAB;
Truncate 表数据:
truncatetableshiyu.T_TRUNCATE;
恢复:执行FY_Recover_Data.SQL 存储过程
开始恢复:执行下面语句:
declare
tgtowner varchar2(30);
tgttable varchar2(30);
datapath varchar2(4000);
datadir varchar2(30);
rects varchar2(30);
recfile varchar2(30);
rstts varchar2(30);
rstfile varchar2(30);
blksz number;
rectab varchar2(30);
rsttab varchar2(30);
copyfile varchar2(30);
begin
tgtowner :='SHIYU';--table owner
tgttable :='T_TRUNCATE'; --table name
datapath :='/data/oradata/test01/'; --必须和T_TRUNCATE表所在的数据文件目录相同
datadir :='DUMP_DIR'; -oracle中目录的名字,可以修改
Fy_Recover_data.prepare_files(tgtowner,tgttable, datapath,datadir, rects,recfile, rstts,rstfile, blksz);
Fy_Recover_data.fill_blocks(tgtowner,tgttable, datadir,rects, recfile,rstts,8,tgtowner, tgtowner,rectab, rsttab,copyfile);
Fy_Recover_data.recover_table(tgtowner,tgttable, tgtowner,rectab, tgtowner,rsttab, datadir,datadir, recfile,datadir,copyfile, blksz);
end;
/
注:执行上面的SQL产生2个表空间(2个数据文件),还有1个copy文件。
如下截图:
--把恢复的数据从shiyu. TRUNCATE$$ 中插入到shiyu. TRUNCATE表(shiyu. TRUNCATE$$ 中是shiyu. TRUNCATE表truncate之前的数据)
insertintoshiyu.T_TRUNCATEselect*from shiyu.T_TRUNCATE$$;
这时在查询刚才truncate掉的表
5. 收尾:
数据恢复后,把恢复时产生的2个表空间删除,再删除对应数据文件
DROPTABLESPACEFY_REC_DATAINCLUDINGCONTENTSANDDATAFILES;
DROPTABLESPACEFY_RST_DATAINCLUDINGCONTENTSANDDATAFILES;
- Truncate 表之恢复
- oracle 恢复truncate表
- dul恢复truncate表测试
- ODU恢复测试一:truncate表恢复
- 无备份恢复truncate掉的表
- truncate表的数据恢复(一)
- truncate表的数据恢复(二)
- Oracle的闪回特性之恢复truncate删除表的数据
- MySQL之truncate表后恢复思路整理(前提是有备份且开启binlog)
- oracle truncate恢复方法
- 循序渐进oracle第8章:Oracle的闪回特性之恢复truncate删除表的数据
- 使用ODU恢复oracle被truncate的表数据
- oracle中误truncate 表后的恢复数据方法
- 利用Oracle表扫描机制恢复被Truncate的数据
- 如何恢复被drop或truncate表的数据
- oracle数据库中truncate表后如何快速恢复
- 利用rman恢复被失误drop或者truncate的表
- 利用闪回恢复truncate表的数据
- CSS3:border-radius隐藏的威力
- Android下录音amr文件
- shell '++'运算符出错和let: not found错误的解决
- Spark经典案例3-数据排序
- JDBC的使用(后台学习之路(七))
- Truncate 表之恢复
- 【设计模式】【十二】享元模式
- 百度知道的问答,别笑抽过去了
- linux内核调试+qemu+eclipse
- JS之鼠标移上显示,鼠标移开隐藏
- 有趣的机器学习(四)
- 中英文对照 —— 数学定律定理(公式及其描述)
- FastDFS的Tracker及Storage节点添加及删除
- vb.net 使用windows API方法