Oracle 中deferred_segment_creation 的用法以及exp時解決辦法,oraclesegment

來源:互聯網
上載者:User

Oracle 中deferred_segment_creation 的用法以及exp時解決辦法,oraclesegment

SYS@ORCL>show parameter segment

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     TRUE
rollback_segments                    string
transactions_per_rollback_segment    integer     5

deferred_segment_creation參數,在11.2.0.4g才有的參數,
建立一個表,在沒有插入資料時是否分配空間,為true時,不分配空間,但在sys使用者下不支援;
deferred_segment_creation=ture;
1.在sys使用者下,建立一個沒有資料的表時,同時自動分配空間;
2.在普通使用者下,建立一個沒有資料的表時,不會分配空間;

查看sql語句,是否已經分配空間;
select dbms_metadata.get_ddl('TABLE','T1') from dual;
   --設定輸出格式(set long 99999)

deferred_segment_creation在11.2.0.4版本的Oracle資料庫新增參數,預設是true。

這會導致在exp時,沒有segment的對象不會匯出。

解決:

(1)設定deferred_segment_creation的值為false
     此方法只對以後的表有效,之前的表還是沒分配空間。

(2) 建立表的時候聲明立即建立Segment

     create table table_name segment creation immediate;

(3)對於已經建立但是還沒有Segment的表來說,
   可以執行alter table table_name allocate extent來使其建立出分配空間,
   當然也可以插入一條資料,使其建立分配空間;


Oracle 11g怎沒有deferred_segment_creation

這是11gR2的新特性、你的莫非是11gR1版本?

select version from v$instance;
 
oracle資料匯入匯出問題解

1、EXP/IMP 會忽略“空表”操作,如果你想對空表也操作,可以使用EXPDP/IMPDP命令實現,用法和EXP/IMP差不多,只是使用之前要建立個目錄!

【相關知識擴充--------------只為分享,共同成長】
ORACLE 11g
新增了一個參數:deferred_segment_creation,預設值是
true。具體是如果deferred_segment_creation為true,當建立表並且沒有向其中插入資料的時候,這個表不會立即分配
extent,即不佔資料空間,只有insert資料後才分配空間,這樣做可以節省少量的空間!為了防止再次出現EXP/IMP匯出表不全,所以在使用11g時,把這個參數預設設定為“false”!
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.