資料庫備份 空表不能匯出的問題處理;
設定deferred_segment_creation 引數:
設定deferred_segment_creation 引數為false來禁用"段推遲建立"(也就是直接建立segment),無論是空表還是非空表,都分配segment。
在sqlplus中,執行如下命令:
sql>alter system set deferred_segment_creation=false;
檢視:sql>show parameter deferred_segment_creation;
注意:該值設定後只對後面新增的表產生作用,對之前建立的空表(已經存在的)不起作用,仍不能匯出。
並且要重新啟動資料庫,讓引數生效。
set heading off;
set echo off;
set feedback off;
set termout on;
spool c:\sql_allocate.sql;
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;
spool off;
2. 執行e:\sql_script.sql檔案來生成「分配表空間的sql**」的指令碼檔案sql_allocate.sql。
命令如下:
sql>@ e:\sql_script.sql; (也可寫乙個批處理檔案,命令如下:sqlplus 使用者名稱/密碼@資料庫 @e:\sql_script.sql)
執行完畢後,得到e:\sql_allocate.sql指令碼檔案(裡面是給所有空表分配segment的sql**)。
開啟該檔案會看到,已經得到對所有空表分配空間的sql語句
3. 執行e:\sql_allocate.sql檔案來對錶分配空間。
命令如下:sql>@ e:\sql_allocate.sql
執行完畢,表已更改。之前存在的空表已分配segment空間!
oracle 11g 匯出空表 exp 匯出
oracle 11g 匯出空表 exp 匯出 在沒有dba許可權的條件下,用exp 匯出是乙個不錯的選擇,但是在遇到空表的情況下 11g預設不匯出空表,則可以進行如下操作 對已存在的表 執行如下 要經過統計分析後 num rows 0 才準確 分析表例子 analyze table test1 co...
oracle11g匯出空表
該引數意思是當建立物件 如表 初始時沒有資料,是否立即建立segment。預設是true。這會導致在按使用者匯出時,沒有segment的物件不會匯出。首先執行下面的語句 select alter table table name allocate extent from user tables wh...
oracle 11g匯出空表
oracle 11g 用exp命令匯出庫檔案備份時,發現只能匯出來一部分表而且不提示錯誤,之前找不到解決方案只能把沒匯出來的表重新建建立。後來發現是所有的空表都沒有匯出來。於是想好好查查,因為在以前的10g版本中沒有這樣的問題。查資料發現oracle 11g中有個新特性 新增了乙個引數 deferr...