程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle11gexp導出空表

oracle11gexp導出空表

編輯:Oracle教程

oracle 11g 默認對空表不分配segment,故使用exp導出Oracle11g數據庫時,空表不會導出。默認情況下,deferred_segment_creation 參數為TRUE,將參數

deferred_segment_creation 參數設置為FALSE後,無論是空表還是非空表,都分配segment。

在sqlplus 中連接數據庫:

(1)、查看該參數的值

SQL> show parameter deferred_segment_creation;

\

(2)、修改該參數值為false

SQL> alter system set deferred_segment_creation=false;

注: 該值設置後只對後面新增的表產生作用,對之前建立的空表不起作用。(我在修改此參數之前創建一張空表tab1,修改之後又創建一直表tab2,在導出操作時,確實沒有導出表tab1 而導出表tab2。)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

deferred_segment_creation=false之前的空表如何才能導出呢???

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

查找空表:

SQL> select table_name from user_tables where num_rows=0 or num_rows is null;

方法1:insert 一行,然後在rollback 就產生segment了。該方法是在空表中插入數據再刪除,則產生segment。導出時則可導出空表。

方法2:可以使用手工為空表分配Extent的方式,來解決之前建立的空表的問題。

SQL> alter table tablename allocate extent;

方法3:不用exp ,使用expdp工具可以導出空表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved