首页 > 数据库 > Oracle > Oracle误truncate操作恢复(二)
使用数据恢复工具(如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)验证数据

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