經過exp/imp進行數據庫備份或搭建測試環境。sql
在imp中導入一個用戶模式時,即便是空表(ROWS=N),表空間佔用很大(20多GB), 後續導入會報"Unable to INITIAL EXTENT ....tablespace" 錯誤。數據庫
查找緣由發現是表空間已滿了。(可經過數據庫自帶的em管理頁面查看)測試
看一個簡單的實驗:url
查看某個表空間大小:spa
導入前:(單位MB).net
表空間名 表空間大小 表空間使用大小 剩餘大小 使用率blog
IA_GENERAL_DAT_TS 37067.984375 .171875 37067.8125 0%ip
查看某個用戶段大小:get
導入前 0.it
導入一個用戶後,導出文件.dmp時的選項(compress = Y)
表空間大小
1 IA_GENERAL_DAT_TS 37067.984375 26485.671875 10582.3125 71.45%
select sum(t.bytes) from dba_segments t where t.owner='TEST';
sum = 37725732864 bytes
把該用戶刪掉,從新導入。導出.dmp文件時的選項(compress = N)
表空間大小
1 IA_GENERAL_DAT_TS 37067.984375 5.421875 37062.5625 .01%
select sum(t.bytes) from dba_segments t where t.owner='TEST';
sum = 8847360 bytes
經過上述加上compress=n 選項便可解決導入空表時表空間過大的問題。
compress 選項並不是壓縮的意思,而是與表的initial storage 設置相關的, 若是爲Y, 即導入的表大小跟原始數據庫表大小一致(即便是空表!!)