標籤:style blog http color io ar strong 資料 div
ORACLE 11G中有個新特性,當表無資料時,不分配segment,以節省空間的
解決方案:
1、insert一行,再rollback就產生segment了。
該方法是在在空表中插入資料,再刪除,則產生segment。匯出時則可匯出空表。
2、設定deferred_segment_creation 參數
Sql代碼
- SQL>show parameter deferred_segment_creation
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- deferred_segment_creation boolean TRUE
- SQL> alter system set deferred_segment_creation=false;
-
- 系統已更改。
-
- SQL> show parameter deferred_segment_creation
-
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- deferred_segment_creation boolean FALSE
該參數值預設是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。
需注意的是:該值設定後對以前置入的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用。如需匯出之前的空表,只能用第一種方法。
搞了我好久,最後查到這個方法。
先查詢一下目前使用者下的所有空表
select table_name from user_tables where NUM_ROWS=0;
用以下這句尋找空表
select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0
把查詢結果匯出,執行匯出的語句
然後再執行
http://inshect.iteye.com/blog/1567504
oracle 匯入空表的辦法