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

Oracle11gR2用exp無法導出空表解決方法

編輯:Oracle教程

Oracle11gR2用exp無法導出空表解決方法


Oracle 11gR2 用exp無法導出空表解決方法

在11gR2中有個新特性,當表無數據時,不分配segment以節省空間,Oracle 當然在執行export導出時,空表則無法導出,但是還是有解決辦法的:解決方法:
一、insert一行,再rollback就產生segment了。
該方法是在在空表中插入數據,再刪除,則產生segment。導出時則可導出空表。

二、設置deferred_segment_creation參數

該參數值默認是TRUE,當改為FALSE時,無無是空表還是非空表,都分配segment。修改SQL語句:

SQL> alter system set deferred_segment_creation=false scope=both;
需注意的是:該值設置後對以前導入的空表不產生作用,仍不能導出,只能對後面新增的表產生作用。如需導出之前的空表,只能用第一種方法。

三、用以下SQL語句查找空表 
SQL>select \'alter table \'||table_name||\' allocate extent;\' from user_tables where num_rows=0;
把查詢結果導出,執行導出的語句,強行修改segment值,然後再導出即可導出空表,
注意:數據庫插入數據前,修改11g_R2參數可以導出空表

查找空表並生成更新表語句: 
SQL> select \'alter table \'||table_name||\' allocate extent;\' from user_tables where num_rows=0

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