首頁 >資料庫 >mysql教程 >Oracle 11g R2 exp导出表不完整

Oracle 11g R2 exp导出表不完整

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB原創
2016-06-07 17:26:27979瀏覽

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

linux

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn