如图中所示,客户端通过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.

Recent Comments