ORACLE 11G EXP匯出空表方法

來源:互聯網
上載者:User

EXP在匯出11G的庫的時候,與過去10G,9I的版本有很大的差別. 就是沒有資料的表是不會分配空間的.

從Oracle 11.2.0.1版本開始,Oracle又提供了一種新的空間分配方法: Create一個非分區表時,這個Table Segment並沒有立刻建立, 而是直到有第一行記錄插入的時候才去建立這個Segment,這和我們以前的Segment的建立和空間分配方法是不一樣.這樣的段也被稱為延遲段.


(1)降低空間的開銷:當一次建立成百上千個表時,因為很多表短時間內根本不會用到,所以可以節約大量的磁碟開銷

(2)加快應用的部署:因為沒有分配Segment,所以建表的時候僅僅是操作資料字典而已,不設計空間的分配,所以效率自然就高了很多


2、設定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。需注意的是:該值設定後對以前置入的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用

當啟用deferred segment 之後,如果有空表,在使用exp進行匯出時, 會報:EXP-00011: 'Table Name' does not exist。即空表不被匯出。

 如果想在建立表時就分配segment,可以使用如下SQL:     createtable b_tab (id number, text varchar2(10)) segment creation immediate;


空表: user_talbes的rows=0   ,分配的段是user_segments


select'altertable '||table_name ||'allocate extent size 64K;'  from user_tables where table_name not in       (select segment_name from user_segments where segment_type ='TABLE')



相關文章

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.