分享

DevX.Me ? Oracle EXP

 ufo999 2011-08-22



今天下午,想在测试环境下进行数据库迁移的模拟测试,本机Oracle 版本为9.2.0.1 ,服务器Oracle版本为9.2.0.8 ,在使用EXP命令进行用户数据导出时,如果表中有数据类型是Lob的列,则会出现EXP-00003:未找到段×××的存储定义(EXP-00003 : no storage definition found for segment …..)。

出现 EXP-00003异常,是Oracle数据库的一个Bug。当使用低版本的EXP从高版本(9.2.0.5或者更高)去导出含有Lob列的表的时候,就会遇到EXP-00003异常。

为了解决这个问题,可以选择升级客户端,将客户端EXP升级到较高版本,可以解决这个Bug;当然有些人不想这么麻烦,那么可以用下面的临时解决方案(替换视图”exu9tne”):

EXP导出前,在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
/

EXP导出完成后,执行下面的SQL恢复视图定义(Metalink建议):

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

PS: 下午升级数据库后,服务起不来了,自己又是菜鸟一个,折腾N久还是不行,最后一狠心,重装……唉,可怜了我辛辛苦苦导进去的数据……

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多