oracle11.2.0版本
rhel5.5版本
在某用户下新建的表,未使用,表中没有任何数据。
exp时报EXP-00011:错误,找不到该表。
但是数据库中明明存在该表。
在11gR2中如果这些表是新创建的没有插入过任何一条记录,那么将会碰到上面这样的错误。
原因在于11gR2中的新功能 – Deferred Segment Creation(延迟段创建),默认情况下这个功能是启用的。
SQL> show parameter deferred_segment_creation;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
延迟段创建的含义是当此新创建一个可能会有Segment的对象时(比如表、索引、物化视图等),如果这个对象中还没有任何记录需要消耗一个Extent,那么将不会在创建对象时自动创建Segment,这样做的好处无疑是在创建对象时大大提高了速度。
我们在创建结束就立刻检查DBA_SEGMENTS视图,会发现没有任何记录。
SQL> select segment_name from user_segments where segment_name='T2';
no rows selected
解决方法:
1. 设置DEFERRED_SEGMENT_CREATION为FALSE,这样创建对象时就会自动创建Segment
2. 在创建对象时,明确指定立刻创建Segment
create table t2 (n number) SEGMENT CREATION IMMEDIATE;
3. 使用expdp替代exp(Datapump本身就是Oracle10g以后的推荐工具)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16566331/viewspace-679539/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16566331/viewspace-679539/