dul恢复oracle数据,DUL ORACLE恢复工具使用方法及下载 - ORACLE修复 - 沈阳数据恢复中心 13386848847 SQL数据库修复,RAID数据恢复,UNIX LINUX N...

LOB字段DUL恢复

1 以下测试为在SYSTEM系统表空间存在而且不损坏的情况下(http://www.raid.ln.cn

含LOB型数据的表的Unload模式

当含LOB型数据的表以.dmp方式Unload时, LOB列的数据会丢失。在这样的模式Unload会报如下警告信息:

DUL> set export_mode=true;

Parameter altered

DUL> unload table hr.t_blob;

Preparing lob metadata from lob index

. unloading (index organized) table LOB00c00223 10 rows unloaded

Reading LOB00c00223.dat 10 entries loaded and sorted

. unloading table T_BLOB

DUL: Error: Column IMAGE_DATA of type BLOB cannot be unloaded in export_mode

DUL: Warning: Column will be ignored

4 rows unloaded

DUL> exit

2 BLOB类型数据实测DUL 9.x即DUL4版本不支持

导出模式为sql*loader方式,报错如下:

DUL> set export_mode=false;

Parameter altered

DUL> unload table hr.t_blob;

Preparing lob metadata from lob index

Reading LOB01800013.dat 18 entries loaded and sorted

. unloading table T_BLOB

DUL: Error: Block type does not match (expected 27, found 40)

DUL: Error: While processing block ts#=6, file#=6, block#=12

DUL: Error: Column conversion failed! (type# = 113)

00000000 00540001 01080000 00010000 00010000 00001b8b .T.. .... .... .... ....

DUL: Error: Col# 2:Column Conversion driver failed

DUL: Error: while processing row 0

DUL: Error: While processing block ts#=3, file#=3, block#=316

DUL: Error: Block type does not match (expected 27, found 40)

DUL: Error: While processing block ts#=6, file#=6, block#=39

DUL: Error: Column conversion failed! (type# = 113)

00000000 00540001 01080000 00010000 00010000 00001b8c .T.. .... .... .... ....

DUL: Error: Col# 2:Column Conversion driver failed

DUL: Error: while processing row 1

DUL: Error: While processing block ts#=3, file#=3, block#=316

DUL: Error: Block type does not match (expected 27, found 40)

DUL: Error: While processing block ts#=6, file#=6, block#=68

DUL: Error: Column conversion failed! (type# = 113)

00000000 00540001 01080000 00010000 00010000 00001b8d .T.. .... .... .... ....

DUL: Error: Col# 2:Column Conversion driver failed

DUL: Error: while processing row 2

DUL: Error: While processing block ts#=3, file#=3, block#=316

DUL: Error: Block type does not match (expected 27, found 40)

DUL: Error: While processing block ts#=6, file#=6, block#=136

DUL: Error: Column conversion failed! (type# = 113)

00000000 00540001 01080000 00010000 00010000 00001b8e .T.. .... .... .... ....

DUL: Error: Col# 2:Column Conversion driver failed

DUL: Error: while processing row 3

DUL: Error: While processing block ts#=3, file#=3, block#=316

DUL: Warning: Recreating file "HR_T_BLOB.ctl"

0 rows unloaded

DUL> prepare LOB01800013'

Dul: parse error: End of statement expected, when parsing

File "standard input" line number 1 column 8

DUL>

DUL: Error: Block type does not match (expected 27, found 40)这个报错表明这个版本的Dul不认识Blob块。

3 DUL 10.x版本支持LOB型数据

测试版本Dul 10.2.0.21B For solaris。

//unload 表hr.t_blob表

DUL> unload table hr.t_blob;

. unloading (index organized) table LOB01800013

DUL: Warning: Recreating file "LOB01800013.ctl"

18 rows unloaded

Preparing lob metadata from lob index

Reading LOB01800013.dat 18 entries loaded and sorted 18 entries

. unloading table T_BLOB

DUL: Warning: Recreating file "HR_T_BLOB.ctl"

4 rows unloaded

DUL>

//truncate掉表t_blob

SQL> connect hr/hr

Connected.

SQL> truncate table t_blob;

Table truncated.

SQL>

//查看一下dul生成的sql*loader脚本

$ ls -l *T_BLOB*

-rw-r--r-- 1 ora2 dba 391 12月 13 08:54 HR_T_BLOB.ctl

-rw-r--r-- 1 ora2 dba 124 12月 13 08:54 HR_T_BLOB.dat

$ cat HR_T_BLOB.ctl

load data

infile 'HR_T_BLOB.dat'

insert

into table "HR"."T_BLOB"

("IMAGE_ID" CHAR(1) enclosed by X'22' ,

"FILE_NAME" CHAR(11) enclosed by X'22' ,

LOBFILE_NAME_COL2 FILLER CHAR(20) enclosed by X'22',

"IMAGE_DATA" LOBFILE(LOBFILE_NAME_COL2) TERMINATED BY EOF NULLIF LOBFILE_NAME_COL2 = 'NONE')

$ cat HR_T_BLOB.dat

"1" "image01.jpg" "LF0001.lob"

"2" "image02.jpg" "LF0002.lob"

"3" "image03.jpg" "LF0003.lob"

"4" "image04.jpg" "LF0004.lob"

$ ls -l LF000*

-rw-r--r-- 1 ora2 dba 129882 12月 13 08:54 LF0001.lob

-rw-r--r-- 1 ora2 dba 195890 12月 13 08:54 LF0002.lob

-rw-r--r-- 1 ora2 dba 486696 12月 13 08:54 LF0003.lob

-rw-r--r-- 1 ora2 dba 124249 12月 13 08:54 LF0004.lob

//用sql*loader把数据载入到表t_blob中

$ sqlldr hr/hr control=HR_T_BLOB.ctl

SQL*Loader: Release 9.2.0.6.0 - Production on Wed Dec 13 08:57:29 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Commit point reached - logical record count 4

//查看一下载入结果,可见已成功载入。

$ sqlplus hr/hr

SQL*Plus: Release 9.2.0.6.0 - Production on Wed Dec 13 08:58:13 2006

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production

With the Partitioning option

JServer Release 9.2.0.6.0 - Production

SQL> SELECT image_id,file_name,length(image_data) FROM t_blob;

IMAGE_ID FILE_NAME LENGTH(IMAGE_DATA)

---------- ---------------------------------------- ------------------

1 image01.jpg 129882

2 image02.jpg 195890

3 image03.jpg 486696

4 image04.jpg 124249

SQL>

4 dul10.x处理无system表空间数据文件的LOB数据还存在问题

dul10.x处理无system表空间数据文件的LOB数据还存在问题,实测时会报错,然后异常退出。

DUL> UNLOAD TABLE OBJNO6630 ( COL001 NUMBER, COL002 VARCHAR2(30), COL003 BLOB)

2 STORAGE( DATAOBJNO 6630 );

. unloading table OBJNO6630

DUL: INTERNAL Error: LOB Chunk size should not be zero

$

DUL 处理无SYSTEM表空间数据文件存在问题的原因以及解决方法参考我们下面的帖子:

oracle 没有system系统表空间恢复大lob数据

5 DUL Unload压缩表(compress table)

实测表明,dul9.x的版本不支持压缩表,报错或Unload出来的数据只是零条,而Dul10.x则已经支持了压缩表。测试版本Dul 10.2.0.21B

For solaris。

//HR下的一张表T1,含有16384条记录,非压缩

SQL> select count(*) from T1;

COUNT(*)

----------

16384

SQL> SELECT table_name,compression FROM user_tables WHERE table_name='T1';

TABLE_NAME COMPRESS

------------------------------ --------

T1 DISABLED

//变更T1为压缩表

SQL> alter table T1 move compress;

Table altered.

SQL> SELECT table_name,compression FROM user_tables WHERE table_name='T1';

TABLE_NAME COMPRESS

------------------------------ --------

T1 ENABLED

SQL>

//执行dul,其中bootstrap输出省略

DUL> bootstrap;

//dul压缩表成功

DUL> unload table hr.T1;

. unloading table T1 16384 rows unloaded

DUL>

下面把如何插入测试LOB数据的过程也写出来,让大家参考一下,以让新使用DUL 的人可以方便的测试整个过程,因为ORACLE数据库插入LOB数据文件比较麻烦如果没有这方面的经验的话。

6 准备一张含BLOB字段的表

下面演示如何将LOB文件从操作系统导入库中。

//HR用户下建一张含BLOB型字段的表T_BLOB SQL> show user

USER is "HR"

SQL> CREATE TABLE T_blob

2 (

3 image_id number,

4 file_name varchar2(30),

5 image_data blob

6 )

7 lob (image_data) store as image_data

8 (

9 tablespace users

10 disable storage in row

11 )

12 /

Table created. //建立sql*loader的控制文件,准备四张图片 $ cat t_blob.ctl LOAD DATA INFILE 'images.txt' INTO TABLE T_BLOB

FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( image_id char, file_name CHAR(30), image_data LOBFILE (file_name) TERMINATED BY

EOF ) $ cat images.txt 1,image01.jpg 2,image02.jpg 3,image03.jpg 4,image04.jpg $ //执行sql*loader导入操作 $ sqlldr hr/hr

control=t_blob.ctl SQL*Loader: Release 9.2.0.6.0 - Production on Mon Oct 29 14:54:31 2007 Copyright (c) 1982, 2002, Oracle

Corporation. All rights reserved. Commit point reached - logical record count 4 $ //验证一下 SQL> SELECT

image_id,file_name,length(image_data) FROM t_blob 2 / IMAGE_ID FILE_NAME LENGTH(IMAGE_DATA) ---------- ---------------------

Tags:DUL ORACLE恢复工具使用方法及下载发布:admin | 分类:ORACLE修复 | 评论:0 | 引用:0 | 浏览:

ODU全称为Oracle Database Unloader,是类似于OracleDUL的软件,用于直接从Oracle数据库数据文件中获取表数据。在各种原因造成的数据库不能打开时,用于抢救数据,最大限度地减少数据丢失。 ODU有什么功能特点? 支持的Oracle数据库版本包括8i,9i,10g,11g 自动检测数据文件的表空间号和文件号 在有SYSTEM表空间的情况下,自动获取数据字典信息。 支持各种表,普通的HEAP表,IOT表,聚簇(CLUSTER)表。 DESC表,以显示表的列定义 支持10g及以上的大文件(BigFile)表空间 列出表的分区和子分区 支持表被truncate后的数据恢复 支持表被drop后的数据恢复 支持压缩表 支持在没有SYSTEM表空间和数据字典损坏的情况下恢复数据,在没有数据字典可用时,ODU能够自动判断数据的类型 支持IOT表导出: 普通IOT表的导出 压缩IOT表的导出 支持IOT表溢出段 支持IOT表分区(包括子分区) 只能在有SYSTEM表空间时才能导出IOT表 支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。能够在一个平台上导出其他平台的数据,比如在Windows 32位系统上,使用AIX系统上的数据文件导出数据。 支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 导出的数据格式包括纯文本和DMP文件两种。以纯文本导出时,能够自动生成建表的SQLSQLLDR导入所需的CONTROL文件(.CTL) 支持同一个库中不同的块大小的数据文件。 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB支持Big Endian和Little Endian字节序 支持LOB分区,子分区 支持同一个表中,不同LOB列使用不同CHUNCK SIZE的情况 CLOB数据可以导出到与其他列相同的文件中,或存储到单独的文件中 LOB列只有在SYSTEM表空间存在的情况下才能导出 支持多种字符集之间的转换,能够正确的转换CLOB、NCLOB、NVARCHAR2列类型的数据到指定的字符集。 ODU全面支持64位系统,支持超过4G大小的数据文件。 支持复制操作系统命令不能复制的坏文件 模拟oracle的dump块功能,能够dump数据文件块的数据 目前不支持的功能: 11g的SecureFiles ------------------------ 详细使用说明见 http://www.laoxiong.net/odu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值