Oracle exp导出DMP不全

Oracle & PLSQL Add comments |

如图中所示,客户端通过exp(版本:9.2.0.1.0)工具导出服务器端数据(版本:9.2.0.5.0)时,出现EXP-00003:未找到段(*,*)的存储定义。

ORACLE官方网站找到的信息:

EXP-00003: no storage definition found for segment(number, number)

Cause: Export could not find the storage definitions for a cluster, index, or table.

Action: Record the accompanying messages and report this as an Export internal error to customer support. (根本没提出解决方法)

网上查找相关信息:

查看metalink,发现只要是9.2.0.5以前的exp去导出9.2.0.5以后数据库中含有LOB字段的表,都会出现这个错误。
解决办法:
1、升级client端到9.2.0.5以上。
通过升级客户端版本至9.2.0.5.0,解决问题
     我使用9208/10.1.0.4的exp导出一个含有BLOB和CLOB的表,能导出所有数据!
 
2、替代解决办法:
(服务器端为在线运行数据库,没有试)
 在导出前, 连接到SYS用户, 运行以下SQL:

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

导出完成后,再复原这个view(定义可以通过user_views看到)对于oracle9i和oracle10g这个定义都相同:

CREATE OR REPLACE VIEW exu9tne (
tsno, fileno, blockno, length) AS
SELECT ts#, segfile#, segblock#, length
FROM sys.uet$
WHERE ext# = 1

 

另外,oracle9i的文档中关于exp/imp utility在如下说明:

Whenever you are moving data between different releases of the Oracle database
server, the following basic rules apply:

  • The Import utility and the database to which data is being imported (the target
    database) must be the same version.(imp与导入目标数据库的版本必须相同)
  • The version of the Export utility must be equal to the lowest version of the
    source or target database.(exp的版本必须等于源数据库与目标数据库两者中的版本最低者)

 

Leave a Reply

You must be logged in to post a comment.


Powered byWordPress 2.6.2 | Theme by N.Design Studio | Processed in 0.78 秒 苏ICP备07500719号

Entries RSS Comments RSS 登录
Links to Page