原因:在oracle 11g 預設空表不能匯出,因為在11g版本中新新增了乙個引數deferred_segment_creation,它的意思是段延遲建立;安裝資料庫後預設是true。可以檢視一下,在命令視窗:
sql> show parameter deferred_segment_creation;
true的意思是當你建立乙個表table1,並且沒有向表中插入資料,那麼這個表不會立即被分配extent,即不會被分配儲存空間。當你插入資料時才分配儲存空間,好處是減少空間的浪費,所以當你匯出乙個空表時,就會提示表不存在。
解決方法:
將上述引數設定為false,在命令視窗:
sql> alter system set deferred_segment_creation=false;
然後關閉資料庫重新鏈結,結果匯出資料時還是提示原來問題。
why? 因為該引數修改後,對之前建立的空表不起作用,對之後建立的表才起作用。
這咋整?那之前的空表就不能匯出了嗎?別急,看下列解決方式:
1、如果空表就幾張,那就先在空表裡插入一條資料,這樣該錶就被分配個儲存空間,再把資料刪掉,這樣就可以匯出表。手動麻煩些,不過就幾張表。
2、如果空表幾十張甚至上百張,那就統一處理,需要用到allocate extent 為表分配空間,需要構造下列語句:
alter table
表名allocate extent;
步驟1:首先找到所有空表:
sql> select table_name from user_tables where num_rows=0;
步驟2:拼湊出上述語句並執行:
sql> select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
步驟4:匯出資料;
ORACLE 11g 匯出資料
oracle 11g 匯出 表的時候 不會匯出空表 匯出空表操作步驟 使用plsql 1 開啟sql window 執行下面的 sql select alter table table name allocate extent from user tables where segment creat...
oracle11g資料匯入匯出
oracle資料庫中進行資料的匯入匯出時要在cmd中進行而不是在sqlplus中進行操作!1 向oracle資料庫中匯入完整的資料庫 字尾名 dmp 首先進入cmd,輸入sqlplus nolog執行oracle自帶程式,然後輸入conn as sysdba,以資料庫管理員 dba 的身份鏈結到後台...
oracle11g無法匯出空表問題
產生原因 oracle11g為了節約空間,對空表不分配segment 解決方法 方法1.用如下語句設定空表可匯出 alter system set deferred segment creation false注意 該值設定後需重新啟動資料庫,讓引數生效。並且該值只對後面新增的表產生作用,對之前建立...