今天發(fā)現(xiàn)從Oracle 11gR2 Exp導出表時不完整,有些沒有記錄的表都未導出。網(wǎng)上查了一下,說是Oracle 11g R2的新特性Deferred Segm
今天發(fā)現(xiàn)從Oracle 11gR2 Exp導出表時不完整,,有些沒有記錄的表都未導出。
網(wǎng)上查了一下,說是Oracle 11g R2的新特性Deferred Segment Creation 引起
檢查user_tables表發(fā)現(xiàn)沒有導出的表的segment_created屬性是NO
解決辦法:
1、可通過下面語句生成SQL執(zhí)行:
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、通過修改系統(tǒng)參數(shù)(未測試):
可以通過修改deferred_segment_creation 為false 來禁用這個功能,修改只對以后創(chuàng)建的table 生效。 對于已經(jīng)存在的table不受影響。
alter system set deferred_segment_creation=true;
其它
alter table ... move不但拉回了HWM,而且回收了extent
在oracle9i中,delete很大的表的數(shù)據(jù)后,需要收縮表的空間,
可以使用alter table tabname move (tablespace tbs_name),
注意:這個時候一定需要rebuild index . 因為move后,數(shù)據(jù)的rowid變化了
聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com