oracle 匯出空表

2022-07-20 13:12:12 字數 1033 閱讀 3176

資料庫備份 空表不能匯出的問題處理;

設定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...