今天发现从Oracle 11gR2 Exp导出表时不完整,有些没有记录的表都未导出。网上查了一下,说是Oracle 11g R2的新特性Deferred Segm
今天发现从oracle 11gr2 exp导出表时不完整,,有些没有记录的表都未导出。
网上查了一下,说是Oracle 11g R2的新特性Deferred Segment Creation 引起
检查user_tables表发现没有导出的表的segment_created属性是NO
解决办法:
1、可通过下面语句生成SQL执行:
select ‘alter table ‘|| table_name ||’ move;’
from user_tables where segment_created=’NO’;
或是
select ‘alter table ‘|| table_name ||’ allocate extent;’
from user_tables where segment_created=’NO’;
2、通过修改系统参数(未测试):
可以通过修改deferred_segment_creation 为false 来禁用这个功能,修改只对以后创建的table 生效。 对于已经存在的table不受影响。
alter system set deferred_segment_creation=true;
其它
alter table … move不但拉回了HWM,而且回收了extent
在oracle9i中,delete很大的表的数据后,需要收缩表的空间,
可以使用alter table tabname move (tablespace tbs_name),
注意:这个时候一定需要rebuild index . 因为move后,数据的rowid变化了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1901038.html