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

