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

posted @ 2009-02-20 10:41  程序员的那些  阅读(1563)  评论(0编辑  收藏  举报