Oracle9i客户端EXP导出高版本数据库中BLOB和CLOB大字段的问题
标题:Oracle9i客户端EXP导出高版本数据库中BLOB和CLOB大字段的问题
正文:
使用Oracle9i(版本:9.2.0.1.0)的客户端exp命令导出Oracle10g的数据库,当表中有BLOB或CLOB类型的字段时,会报如下的错误:
---------
EXP-00003: 未找到段 (13,115) 的存储定义
---------
无法成功导出表。
经过查找资料和测试,发现可能是版本差异造成的一个问题。
经过如下操作可以修正该问题:
1.修改Oracle客户端的文件catexp.sql。
catexp.sql文件在Oracle客户端安装路径:../ora92/rdbms/admin/中。
在修改之前,备份catexp.sql文件。
打开catexp.sql文件,找到视图“exu9tne”。
然后把语句“UNION ALL select * from sys.exu9tneb”加入到视图exu9tne定义的最后一行。
形成如下样子:
---------
CREATE OR REPLACE VIEW exu9tne (
tsno, fileno, blockno, length) AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1
UNION ALL
SELECT * from sys.exu9tneb
/
---------
2.以sys帐号执行该脚本:
----------
CREATE OR REPLACE VIEW exu9tne (
tsno, fileno, blockno, length) AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1
UNION ALL
SELECT * from sys.exu9tneb
/
GRANT SELECT ON sys.exu9tne TO PUBLIC;
----------
经过如上操作,即可在Oracle9i的客户端使用exp命令成功导出Oracle10g的数据库中含有BLOB或CLOB字段类型的表。
by JRQ
2009/02/20