一、ODU功能的描述:
        ODU全称为Oracle Database Unloader,是类似于Oracle的DUL的软件,用于直接从Oracle数据库的数据文件中获取表数据。在各种原因造成的数据库不能打开时,用于抢救数据,最大限度地减少数据丢失。
       ODU所拥有的功能特点:
        1)支持的Oracle数据库版本包括8i,9i,10g,11g;
        2)自动检测数据文件的表空间号和文件号;
        3)在有SYSTEM表空间的情况下,自动获取数据字典信息;
        4)支持各种表,普通的HEAP表,IOT表,聚簇(CLUSTER)表;
        5)支持10g及以上的大文件(BigFile)表空间;
        6)列出表的分区和子分区;
        7)支持表被truncate、drop后的数据恢复;
  8)支持压缩表;
        9)支持在没有SYSTEM表空间和数据字典损坏的情况下恢复数据,在没有数据字典可用时,ODU能够自动判断数据的类型;
       10)支持IOT表、普通IOT表、压缩IOT表导出;
  11)支持IOT表溢出段;
        12)支持IOT表分区(包括子分区);
        13)只能在有SYSTEM表空间时才能导出IOT表;
        14)支持多种平台的数据库;
        15)模拟oracle的dump块功能,能够dump数据文件块的数据;
        16)支持复制操作系统命令不能复制的坏文件;
        17)支持多种字符集之间的转换;
二、基于Truncate表后恢复实践操作
1、首先将相关信息配置到ODU中的control.txt文件中,其中control.txt文件是ODU的数据文件信息文件。你可以理解为类似于Oracle数据库的控制文件,存放了ODU导出数据时需要的Oracle数据文件信息,其默认格式:表空间号 文件号 相对文件号 文件名 块大小
select t1.TS#,
       t2.FILE_ID,
       t2.RELATIVE_FNO,
       t2.FILE_NAME,
       t2.blocks
  from v$tablespace   t1,
       dba_data_files t2
 where t1.NAME = t2.TABLESPACE_NAME
 order by t1.TS#;
2、在数据库中创建两个测试表t1,t2
SQL> connect easypub/easypub;
SQL> create table t1 as select * from user_objects;
SQL> create table t2 as select * from t1;
之后清空t1表的数据
SQL> truncate table t1;
3、我们OFFLINE掉T1表的表空间、或者关闭数据库、或者关闭所有的应用,目的只有一个,确保空间不会被重用,数据不会被覆盖,然后做个checkpoint,让ODU能够读到最新的数据字典数据。
SQL>select tablespace_name from user_tables where table_name=’T1′;
  TABLESPACE_NAME
  ------------------------------
  TBS_CORE
SQL> alter tablespace tbs_core offline;
 Tablespace altered
 SQL> alter system checkpoint;
 System altered
4、运行ODU,并在提示符下输入命令unload dict,将从SYSTEM表空间中导出数据字典,并存储在后缀名为.odu文件中。
5、获取easypub用户下的T1表,也就是我们要恢复的表的信息:
ODU> desc easypub.t1
6、从上面的输出中,我们可以看到,easypub.t1表所在的表空间号为7,数据段头部为6号文件的7611号块。
7、接下来用ODU扫描表空间的extent:
ODU> scan extent tablespace 7
8、我们使用ODU来确定T1表原来的data object id。一般来说,数据段的数据块,一般是在段头后面相邻的块中。但是我们可以从段头来确认
ODU> dump datafile 6 block 7611
9、从上面的输出中的“Extent 0 : L1 dba:0x01801db9 Date dba:ox01801dbc
段的数据块也就是6号文件的7611
我们dump第6号文件的7611块头,来得到表T1原来的data object id:
ODU> dump datafile 6 block 7611 header;
可以看到,T1表原来的data object id就是60156。
10、使用ODU来unload数据:
ODU> unload table easypub.t1 object 60156;
ODU会自动将恢复的数据添加到data文件中
11、将TBS_CORE表空间ONLINE:
SQL> alter tablespace tbs_core online;
 Tablespace altered
12、使用sqlldr导入我们恢复的数据即可
13、最后检验恢复的数据是否完全恢复
SQL> select * from t2 minus select * from t1;
未选定行
SQL> select * from t1 minus select * from t2;
未选定行
可以看到数据已经完全恢复

显示结果1.jpg

显示desc结果2.jpg

显示scan结果.jpg

显示dump datafile结果.jpg

显示dump datafile head结果.jpg

显示unload table 结果.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26423870/viewspace-759549/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26423870/viewspace-759549/

基于ODU恢复truncate表的总结操作相关推荐

  1. oracle truncate可以恢复吗,恢复truncate表

    如果数据库是非归档模式且没有备份,此时如果drop掉一张表,有办法可以恢复吗?当然可以,而且是完全恢复:http://blog.sina.com.cn/s/blog_61cd89f60102ed97. ...

  2. mysql binlog定点恢复锁表_MySQL -- binlog 操作与恢复

    binlog 开启.查看: > show variables like 'log_bin';  #查看是否开启 > set sql_log_bin=1 || set sql_log_bin ...

  3. 案例:Oracle dul数据挖掘 没有数据库备份非常规恢复truncate删除的数据表

    Oracle数据库在没有备份情况下在对表中的某数据表进行truncate删除后,通过oracle dul进行非常规恢复 1.准备oracle dul测试环境 SQL> select count( ...

  4. oracle dul误删数据,案例:Oracle dul数据挖掘 没有数据库备份非常规恢复truncate删除的数据表...

    Oracle数据库在没有备份情况下在对表中的某数据表进行truncate删除后,通过oracle dul进行非常规恢复 1.准备oracle dul测试环境SQL> select count(* ...

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

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

  6. truncate表后恢复方法总结

    truncate表后恢复方法总结 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

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

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

  8. ORACLE恢复truncate的表-转载

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

  9. AUL恢复truncate删除的表

    背景 接到用户申告,新毕业的兄弟不小心把数据库中的3个关键表给truncate了,由于这个业务还在测试阶段,系统没有任何形式的备份. 客户的OS平台是windows平台,数据库是Oracle9207 ...

最新文章

  1. 数据结构与算法实验祝恩_《数据结构与算法》实验教学大纲
  2. Numpy中np.mashgri() 函数介绍及2种应用场景
  3. spring data mongo比较两个字段查询
  4. 第1阶段——uboot分析之查找命令run_command函数和命令定义过程(6)
  5. Codeforces Round #404 (Div. 2) B. Anton and Classes 水题
  6. yum php 降级 5.3,CentOS 5.3 通过yum升级php的方法
  7. 2019/5/28 感觉吧
  8. Linux如何清除系统密码,如何消除LINUX系统密码
  9. UVA 10115 Automatic Editing
  10. C实现NV12转I420
  11. 如何更改计算机开机壁纸,win7开机登录界面的壁纸怎么修改
  12. hadoopsnappy解压_配置Hadoop2.7.2和Hbase1.1.5支持Snappy解压压缩库
  13. AI论文投稿前的自我反思
  14. UITableViewCell设置行距
  15. 小白普及:云主机与传统服务器的区别
  16. C++:数组、链表与哈希表
  17. 微信公众号打开的h5网页点击按钮返回公众号
  18. 搜索引擎优化(SEO)之 前端性能优化技巧
  19. 直播 | 乐高式微服务化改造
  20. 解决el--checkbox 复选框的禁用方法

热门文章

  1. uniapp实现非图片文件下载(doc,xls.zip等格式)
  2. Dota2设置英文配音中文界面
  3. python人机对话性别年龄名字_人机交互程序 python实现人机对话
  4. win10家庭版安装SQL2000综合安装问题解决方法
  5. 深入浅出DirectShow Filter(转)
  6. 原生API编写简单富文本编辑器001
  7. 2021春运购票日历
  8. 一般复印店复印一张多少钱
  9. 域中DC和AD的区别
  10. MySQL:几个奇怪state和主从延迟问题(特例)