oracle 11g 不能匯出空表

arthurtangel發表於2011-07-13
Oracle11g的資料庫遷移,習慣性的用了exp/imp,然後在新的資料庫發現,空表根本沒有exp出來,然後查資料,發現瞭如下資訊:

ORACLE 11G在用EXPORT匯出時,空表不能匯出。

11G中有個新特性,當表無資料時,不分配segment,以節省空間

  解決方法:
  1、insert一行,再rollback就產生segment了。
  該方法是在在空表中插入資料,再刪除,則產生segment。匯出時則可匯出空表。

  2、設定deferred_segment_creation 引數
  該引數值預設是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。

  需注意的是:該值設定後對以前已經存在的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用。如需匯出之前的空表,只能用第一種方法】

覺得不是解決方法,然後就用了expdp和impdp
create directory expdp_dir as   '/data/app1/dp';
grant read,write on directory expdp_dir to DRGN_OWNER;

expdp DRGN_OWNER/DRGN_OWNER DIRECTORY=expdp_dir DUMPFILE=DRGN_OWNER.dmp SCHEMAS=DRGN_OWNER logfile=DRGN_OWNERexpdp.log

create directory impdp_dir as '/data/app1/dp';
grant read,write on directory impdp_dir to DRGN_OWNER;

impdp DRGN_OWNER/DRGN_OWNER DIRECTORY=impdp_dir DUMPFILE=DRGN_OWNER.dmp logfile=DRGN_OWNER.dmpimpdp.log

空表果然已經匯入了

對於DBA新建資料庫,我個人建議,建立了空的資料庫後,馬上執行
alter system set deferred_segment_creation=flase sscope=spfile;
shutdowm immediate
startup

【總結】
1、瞭解11g的新特性
2、建議客戶使用穩定的10.2.0.4,11g啊,還是用expdp吧。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11990065/viewspace-702119/,如需轉載,請註明出處,否則將追究法律責任。

相關文章