oracle 未找到段的存储定义,Exp-00003 no storage definition found issue in oracle 11g (未找到段 (0,0) 的存储定义)...

这篇博客详细记录了在使用Oracle数据库导出数据时遇到的'未找到段的存储定义'错误,包括错误原因和解决步骤。通过检查存储定义、升级客户端版本、手动分配表空间等方式解决了问题。建议在遇到类似问题时,首先确认存储定义,然后检查客户端与服务器版本匹配,最后考虑使用expdp替代exp。
摘要由CSDN通过智能技术生成

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Tes

已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

服务器使用 AL32UTF8 字符集 (可能的字符集转换)

正在导出簇定义

... (had truncated)

...

. 即将导出 anbob 的表通过常规路径...

. . 正在导出表 ANBOB_IMAG

EXP-00003: 未找到段 (0,0) 的存储定义

. . 正在导出表 ANBOB_ITEM导出了 16 行

. . 正在导出表 ANBOB_UNION导出了 4 行

. . 正在导出表 ANBOB_INDICATOR_LIMIT

EXP-00003: 未找到段 (0,0) 的存储定义

. . 正在导出表 ANBOB_CREDIT导出了 6 行

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

. . 正在导出表 ANBOB_MODEL导出了 1 行

. . 正在导出表 ANBOB_FILE

EXP-00003: 未找到段 (0,0) 的存储定义

. . 正在导出表 ANBOB_FILE_DETAILS

EXP-00003: 未找到段 (0,0) 的存储定义

. . 正在导出表 ANBOB_DEF0000000004

[oracle@db231 ~]$ oerr exp 3

00003, 00000, "no storage definition found for segment(%lu, %lu)"

// *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.

Diagnosis:

We could not find a storage clause for the named segment.

- The arguments above are file and block, referred to here as

F and B

- First determine what the segment is:

select * from dba_segments

where HEADER_FILE = F

and HEADER_BLOCK = B;

- If it is an INDEX see Bug:231159

- If it is a TABLE it may be best to run this to find table SEGMENTS

whose segment owner differs from the OBJECT owner:

select o.owner#, o.name, o.type#, o.namespace, s.user#

from obj$ o, tab$ t, seg$ s

where o.obj#=t.obj#

and t.file#=s.file#

and t.block#=s.block#

and o.owner#!=s.user#

;

Any rows returned should be investigated.

Solution:

1) run this sql, if something not like 0 returns move those indexes, if 0 returns go to step 2

select count(*) from dba_indexes where owner<>table_owner;

2) Rerun the export and specify the parameter COMPRESS=Y (this is the default value for COMPRESS).

if the error still occurs,

3) Copy $ORACLE_HOME/rdbms/admin/catexp.sql to $ORACLE_HOME/rdbms/admin/catexp2.sql

add this line to $ORACLE_HOME/rdbms/admin/catexp2.sql:

"UNION ALL select * from sys.exu9tneb"

run

$ORACLE_HOME/rdbms/admin/catexp2.sql

if the error still occurs,

4) Upgrade your client version. Your version must be equal or higher than exp version of your target db.

5) Check those tables with exp error had created segment? if not? try to allocate the segments space manully using this sql:

alter table xx allocate extent

6) I recommend try to using expdp instend of exp

This case solution is following:

sys@anbob>@p segment_cre

NAME VALUE

---------------------------------------- ----------------------------------------

deferred_segment_creation FALSE

I guess those tables that to export error should be created before modifying parameters deferred_segment_creation=false. and the exp client version is 11.2.0.1 lower than target DB version 11.2.0.4. when I using above 5# way, to allocate the segment's extent, try to exp again, it is worked fine at all. the exp-3 error does not throw again.

References MOS note[443453.1]

「喜欢文章,快来给作者赞赏墨值吧」 赞赏

【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

请登录后发表评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值