导出的时候,我们有时候会遇到一种错误
EXP-00003: no storage definition found for segment
这个是属于数据库的bug.
从9.2.0.5.0 或更高版本的数据库中已经不存在这种问题(如: 9.2.0.6.0 or 10.1.0.4.0)
如果客户端版本低于9205,而服务器高于或者等于9205,也可能遭遇这个bug
除了打补丁以外,还有种解决方法
1.先找到这个文件,$ORACLE_HOME/rdbms/admin/catexp.sql
2.其中有个exu9tne视图的定义,找到它.
3.单独编辑这个视图的定义,再后面加上UNION ALL select * from sys.exu9tneb,并重建这个视图
4.用SYS用户来登录并exp
5.还原SYS.exu9tne的原来的定义,还是用原始脚本catexp.sql
自己定义后的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 #这里是我们自己添加的一行
EXP-00003: no storage definition found for segment
这个是属于数据库的bug.
从9.2.0.5.0 或更高版本的数据库中已经不存在这种问题(如: 9.2.0.6.0 or 10.1.0.4.0)
如果客户端版本低于9205,而服务器高于或者等于9205,也可能遭遇这个bug
除了打补丁以外,还有种解决方法
1.先找到这个文件,$ORACLE_HOME/rdbms/admin/catexp.sql
2.其中有个exu9tne视图的定义,找到它.
3.单独编辑这个视图的定义,再后面加上UNION ALL select * from sys.exu9tneb,并重建这个视图
4.用SYS用户来登录并exp
5.还原SYS.exu9tne的原来的定义,还是用原始脚本catexp.sql
自己定义后的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 #这里是我们自己添加的一行