今天下午,想在测试环境下进行数据库迁移的模拟测试,本机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久还是不行,最后一狠心,重装……唉,可怜了我辛辛苦苦导进去的数据…… |
|