ODU是国内Oracle数据库大牛老熊的一个数据恢复工具。下载了一个windows版本,玩了一下恢复被truncate表的数据
创建测试用的表空间:
create tablespace mytbs datafile 'C:\ORACLE\ORADATA\ORCL\mytbs.dbf' size 10m autoextend off;
创建测试表以及数据:
create table test_recovery tablespace mytbs as
select rownum rn, dbms_random.value(1, 200000) col from dual connect by rownum <= 100;
将表truncate:
truncate table test_recovery;
触发检查点,将数据写入数据文件:
alter system checkpoint;
将表空间offline
alter tablespace mytbs offline;
将system表空间数据文件以及测试所用表空间数据文件拷贝至ODU的data目录
以下是ODU的control.txt文件的内容:
#ts #fno #rfno filename block_size bigfile
0 1 1 C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF 8192
5 2 10 C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF 8192
1 3 3 C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF 8192
6 4 4 C:\ORACLE\ORADATA\ORCL\MYTBS.DBF 8192
2 5 5 C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF 8192
4 6 6 C:\ORACLE\ORADATA\ORCL\USERS01.DBF 8192
这里的信息,可以查询v$datafile视图
打开odu.exe
unload dict
--数据字典相关
scan extent tablespace 6
unload table sys.test_recovery object auto
ODU> scan extent tablespace 6
scan extent start: 2015-05-13 14:23:10
scanning extent...
scanning extent finished.
scan extent completed: 2015-05-13 14:23:10
ODU> unload table sys.test_recovery object auto
Auto mode truncated table.
Unloading table: TEST_RECOVERY,object ID: 93118
Unloading segment,storage(Obj#=93118 DataObj#=93118 TS#=6 File#=4 Block#=130 Clu
ster=0)
100 rows unloaded
之后,数据会被生成在data文件夹之下,可以用sqlldr导入
sqlldr导入:
sqlldr userid='sys/sys as sysdba' control=SYS_TEST_RECOVERY.ctl
恢复完成
参考:
http://www.laoxiong.net/odu_recover_truncated_table.html
http://blog.csdn.net/tianlesoftware/article/details/6775394
创建测试用的表空间:
create tablespace mytbs datafile 'C:\ORACLE\ORADATA\ORCL\mytbs.dbf' size 10m autoextend off;
创建测试表以及数据:
create table test_recovery tablespace mytbs as
select rownum rn, dbms_random.value(1, 200000) col from dual connect by rownum <= 100;
将表truncate:
truncate table test_recovery;
触发检查点,将数据写入数据文件:
alter system checkpoint;
将表空间offline
alter tablespace mytbs offline;
将system表空间数据文件以及测试所用表空间数据文件拷贝至ODU的data目录
以下是ODU的control.txt文件的内容:
#ts #fno #rfno filename block_size bigfile
0 1 1 C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF 8192
5 2 10 C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF 8192
1 3 3 C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF 8192
6 4 4 C:\ORACLE\ORADATA\ORCL\MYTBS.DBF 8192
2 5 5 C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF 8192
4 6 6 C:\ORACLE\ORADATA\ORCL\USERS01.DBF 8192
这里的信息,可以查询v$datafile视图
打开odu.exe
unload dict
--数据字典相关
scan extent tablespace 6
unload table sys.test_recovery object auto
ODU> scan extent tablespace 6
scan extent start: 2015-05-13 14:23:10
scanning extent...
scanning extent finished.
scan extent completed: 2015-05-13 14:23:10
ODU> unload table sys.test_recovery object auto
Auto mode truncated table.
Unloading table: TEST_RECOVERY,object ID: 93118
Unloading segment,storage(Obj#=93118 DataObj#=93118 TS#=6 File#=4 Block#=130 Clu
ster=0)
100 rows unloaded
之后,数据会被生成在data文件夹之下,可以用sqlldr导入
![](http://img.blog.itpub.net/blog/attachment/201505/13/8520577_14315034981iAo.png?x-oss-process=style/bb)
sqlldr导入:
sqlldr userid='sys/sys as sysdba' control=SYS_TEST_RECOVERY.ctl
![](http://img.blog.itpub.net/blog/attachment/201505/13/8520577_1431503587pz6d.png?x-oss-process=style/bb)
恢复完成
参考:
http://www.laoxiong.net/odu_recover_truncated_table.html
http://blog.csdn.net/tianlesoftware/article/details/6775394
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8520577/viewspace-1652634/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8520577/viewspace-1652634/