今天升級的時候實施跟我說 他加了一張表 可是用oracle 的exp的時候 顯示該表不存在。 排查了下 原來是那張表沒有數據。 oracle11g 有顯示 不容許導出空表。 因而便有了下面的資料,谷歌別人也遇到過問題 得出結論。 oracle11g的新特性,數據條數是0時不分配segment,因此就不能被導出。 解決方法: 1、 insert一行,再rollback就產生segment了。oracle
該方法是在在空表中插入數據,再刪除,則產生segment。導出時則可導出空表。 2、 設置deferred_segment_creation參數io
該參數值默認是TRUE,當改成FALSE時,不管是空表仍是非空表,都分配segment。修改SQL語句:table
alter system set deferred_segment_creation=false scope=both;select
需注意的是:該值設置後對之前導入的空表不產生做用,仍不能導出,只能對後面新增的表產生做用。如需導出以前的空表,只能用第一種方法。 3、 用如下這句查找空表方法
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;數據
把查詢結果導出,執行導出的語句,強行修改segment值,而後再導出便可導出空表,查詢
可是我只用了方法1 比較簡單就解決了問題~scope