ITPub博客

首页 > 数据库 > Oracle > Oracle误truncate操作恢复(二)

Oracle误truncate操作恢复(二)

原创 Oracle 作者:龙山游龙 时间:2025-03-05 17:31:12 0 删除 编辑

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)验证数据

 

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

请登录后发表评论 登录
全部评论
传统商业、开源和国产据库领域十从业经验,TB级高并发数据库的管理经验。对于数据库内部原理、体系结构,数据页/块结构原理有着深刻认识;对于数据库新特性、分布式高可用架构和性能调优有着丰富的的实战经验。擅长故障诊断以及数据库异常打开及数据灾难挽救。

注册时间:2015-06-28

  • 博文量
    178
  • 访问量
    334692