oracle 11g不能匯出空表的解決方案

來源:互聯網
上載者:User

標籤:

在oracle 11g r2中,發現傳統的exp居然不能匯出空的表,然後查詢一下, 發現需要如下的步驟去搞,筆記之。  oracle 11g 新增了一個參數:deferred_segment_creation,含義是段延遲建立,預設是true。具體是什麼意思呢?  如果這個參數設定為true,你建立了一個表T1,並且沒有向其中插入資料,那麼這個表不會立即分配extent,也就是不佔資料空間,只有當你insert資料後才分配空間。這樣可以節省少量的空間。  解決辦法  1 設定deferred_segment_creation 參數為FALSE後,無論是空表還是非空表,都分配segment。     在sqlplus中,執行如下命令:     SQL>alter system set deferred_segment_creation=false;     查看:    SQL>show parameter deferred_segment_creation;     該值設定後只對後面新增的表產生作用,對之前建立的空表不起作用。     注意並且要重新啟動資料庫,讓參數生效  2  使用ALLOCATE EXTENT的說明     使用ALLOCATE EXTENT可以為資料庫物件分配Extent。其文法如下:     -----------    ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE ‘filename‘ | INSTANCE integer }    -----------     可以針對資料表、索引、物化視圖等手工分配Extent。     ALLOCATE EXTENT使用範例:      ALLOCATE EXTENT     ALLOCATE EXTENT(SIZE integer [K | M])     ALLOCATE EXTENT(DATAFILE ‘filename‘)     ALLOCATE EXTENT(INSTANCE integer)  www.2cto.com    ALLOCATE EXTENT(SIZE integer [K | M]   DATAFILE ‘filename‘)     ALLOCATE EXTENT(SIZE integer [K | M]   INSTANCE integer)        針對資料表操作的完整文法如下:     -----------     ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE ‘filename‘ | INSTANCE integer})]    -----------      故,需要構建如下樣子簡單的SQL命令:     -----------    alter table aTabelName allocate extent    -----------  3.2 構建對空表分配空間的SQL命令,      查詢目前使用者下的所有空表(一個使用者最好對應一個預設資料表空間)。命令如下:     -----------    SQL>select table_name from user_tables where NUM_ROWS=0;    -----------     根據上述查詢,可以構建針對空表分配空間的命令語句,如下:     -----------    SQL>Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0    -----------     批量輸出上述產生的SQL語句,建立C:\createsql.sql,其內容如下:     -----------    set heading off;    set echo off;    set feedback off;    set termout on;    spool C:\allocate.sql;    Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;    spool off;  www.2cto.com   -----------     執行C:\createsql.sql,命令如下:    -----------    SQL>@ C:\createsql.sql;    -----------     執行完畢後,得到C:\allocate.sql檔案。     開啟該檔案會看到,已經得到對所有空表分配空間的命令SQL語句。  3.4 執行SQL命令,對空表分配空間:     執行C:\allocate.sql,命令如下:    -----------    SQL>@ C:\allocate.sql;    -----------      執行完畢,表已更改。  3.4 此時執行exp命令,即可把包括空表在內的所有表,正常匯出。 轉自http://www.2cto.com/database/201203/125469.html

oracle 11g不能匯出空表的解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.