欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle 11g R2 exp导出表不完整

程序员文章站 2022-05-14 11:44:20
...

今天发现从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变化了