Oracle误truncate操作恢复(二)

来源:这里教程网 时间:2026-03-03 21:38:13 作者:

5 使用 ODU 灾难恢复

使用数据恢复工具(如ODU、DUL、PRM-DUL BBED等 ,本文仅以 ODU为例,介绍第三方工具的使用:

测试环境:

软件

版本

操作系统

Oracle

11.2.0.4

Redhat6.9

ODU

3.0.9

Windows11

恢复流程大致如下:

a)  offline 掉测试表所在的表空间并和并将数据文件 system 数据文件复制到 windows

b)  修改 odu 配置文件启动 odu

c)  创建数据字典

d)  加载测试表空间数据

e)  恢复测试表数据,生成 sqlldr 导入文件

f)  将文件传回 linux ,使用 sqlldr 导入数据

 

1)创建测试数据: create table tt1 as select * from dba_objects; select count(*) from TT1; truncate table TT1;  

2)查询测试表相关信息:

需要记录表空间名称和 OBJECT_ID select b.tablespace_name,a.* from dba_objects a,user_tables b where a.object_name='TT1' and a.object_name=b.table_name;

3)将目标表空间offline:

alter tablespace test offline; alter system checkpoint;

4)找到system表空间和目标表空间的数据文件路径 select a.name from v$datafile a,v$tablespace b where a.ts#=b.ts# and b.NAME in ('SYSTEM','TEST');

5)将文件传输到ODU所在的windows机器上    

6)进入ODU目录,修改control.txt文件,将文件路径根据实际情况修改  

7)进入cmd,执行odu.exe,进入odu命令行

此时能看到程序已经成功识别 control.txt文件,并加载出我们传到windows端的数据文件。  

8)创建数据字典 unload   dict  

9)扫描目标表空间的数据 scan extent tablespace 5     ----5 是表空间的 ts#  

10)恢复测试表数据 unload table test.tt1 object auto  

11)执行完成后会生成如下3个文件  

12)将TEST_TT1.ctl和TEST_TT1.txt文件传回Linux服务器  

13)表空间online alter tablespace test   online;   14)使用sqlldr将数据导入 sqlldr test/oracle control=TEST_TT1.ctl  

15)验证数据  

相关推荐