oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
生活随笔
收集整理的這篇文章主要介紹了
oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
先來看一下例子。我們創建一張表T2。?
Sql代碼?? SQL>?create?table?t2?(n?number);???? Table?created.???? SQL>?desc?t2???? ?Name??????????????????????????????????????Null?????Type???? ?-----------------------------------------?--------?----------------------------???? ?N??????????????????????????????????????????????????NUMBER???
嘗試使用exp將此表導出。?
Sql代碼?? D:\Temp>exp?kamus/oracle?tables=t2?? ??? Export:?Release?11.2.0.1.0?-?Production?on?Fri?Apr?16?18:11:51?2010?? ??? Copyright?(c)?1982,?2009,?Oracle?and/or?its?affiliates.??All?rights?reserved.?? ??? ??? Connected?to:?Oracle?Database?11g?Enterprise?Edition?Release?11.2.0.1.0?-?64bit?Production?? ??? With?the?Partitioning,?Oracle?Label?Security,?Data?Mining?and?Real?Application?Testing?opt?? ions?? Export?done?in?ZHS16GBK?character?set?and?AL16UTF16?NCHAR?character?set?? ??? About?to?export?specified?tables?via?Conventional?Path?...?? EXP-00011:?KAMUS.T2?does?not?exist?? Export?terminated?successfully?with?warnings.??
報錯說這張表并不存在。這是讓很多客戶費解的地方,在測試庫中創建應用的表結構,然后再將表結構exp到產品庫中去,這是很多客戶常用的方法,但是在11gR2中如果這些表是新創建的沒有插入過任何一條記錄,那么將會碰到上面這樣的錯誤。?
原因在于11gR2中的新功能 – Deferred Segment Creation(延遲段創建),默認情況下這個功能是啟用的。?
Sql代碼?? SQL>?show?parameter?DEFERRED_SEGMENT_CREATION???? NAME?????????????????????????????????TYPE?????????????????VALUE???? ?? ------------------------------------?--------------------?--------------------???? ?? deferred_segment_creation????????????boolean??????????????TRUE???
SQL>?
延遲段創建的含義是當此新創建一個可能會有Segment的對象時(比如表、索引、物化視圖等),如果這個對象中還沒有任何記錄需要消耗一個Extent,那么將不會在創建對象時自動創建Segment,這樣做的好處無疑是在創建對象時大大提高了速度。?
對于上例中的T2表,我們在創建結束就立刻檢查DBA_SEGMENTS視圖,會發現沒有任何記錄。?
Sql代碼?? SQL>?select?segment_name?from?user_segments?where?segment_name='T2';???? ?rows?selected???
而對于exp程序而言,當僅僅存在Object的定義而沒有相應的Segment時,就會報出EXP-00011對象不存在的錯誤。?
解決方法就很簡單了,以下方法任選其一。?
1. 設置DEFERRED_SEGMENT_CREATION為FALSE,這樣創建對象時就會自動創建Segment?
2. 在創建對象時,明確指定立刻創建Segment?
create table t2 (n number) SEGMENT CREATION IMMEDIATE;?
3. 使用expdp替代exp(Datapump本身就是Oracle10g以后的推薦工具)?
Sql代碼?? ????D:\Temp>expdp?kamus/oracle?tables=t2?? ??? Export:?Release?11.2.0.1.0?-?Production?on?Fri?Apr?16?18:14:41?2010?? ??? Copyright?(c)?1982,?2009,?Oracle?and/or?its?affiliates.??All?rights?reserved.?? ??? Connected?to:?Oracle?Database?11g?Enterprise?Edition?Release?11.2.0.1.0?-?64bit?Production?? ??? With?the?Partitioning,?Oracle?Label?Security,?Data?Mining?and?Real?Application?Testing?opt?? ions?? Starting?"KAMUS"."SYS_EXPORT_TABLE_01":??kamus/********?tables=t2?? Estimate?in?progress?using?BLOCKS?method...?? Processing?object?type?TABLE_EXPORT/TABLE/TABLE_DATA?? Total?estimation?using?BLOCKS?method:?0?KB?? Processing?object?type?TABLE_EXPORT/TABLE/TABLE?? .?.?exported?"KAMUS"."T2"????????????????????????????????????0?KB???????0?rows?? Master?table?"KAMUS"."SYS_EXPORT_TABLE_01"?successfully?loaded/unloaded?? ******************************************************************************?? Dump?file?set?for?KAMUS.SYS_EXPORT_TABLE_01?is:?? ??D:\ORACLE\ADMIN\ORCL\DPDUMP\EXPDAT.DMP?? Job?"KAMUS"."SYS_EXPORT_TABLE_01"?successfully?completed?at?18:15:10 ?
與50位技術專家面對面20年技術見證,附贈技術全景圖
Sql代碼??
嘗試使用exp將此表導出。?
Sql代碼??
報錯說這張表并不存在。這是讓很多客戶費解的地方,在測試庫中創建應用的表結構,然后再將表結構exp到產品庫中去,這是很多客戶常用的方法,但是在11gR2中如果這些表是新創建的沒有插入過任何一條記錄,那么將會碰到上面這樣的錯誤。?
原因在于11gR2中的新功能 – Deferred Segment Creation(延遲段創建),默認情況下這個功能是啟用的。?
Sql代碼??
延遲段創建的含義是當此新創建一個可能會有Segment的對象時(比如表、索引、物化視圖等),如果這個對象中還沒有任何記錄需要消耗一個Extent,那么將不會在創建對象時自動創建Segment,這樣做的好處無疑是在創建對象時大大提高了速度。?
對于上例中的T2表,我們在創建結束就立刻檢查DBA_SEGMENTS視圖,會發現沒有任何記錄。?
Sql代碼??
而對于exp程序而言,當僅僅存在Object的定義而沒有相應的Segment時,就會報出EXP-00011對象不存在的錯誤。?
解決方法就很簡單了,以下方法任選其一。?
1. 設置DEFERRED_SEGMENT_CREATION為FALSE,這樣創建對象時就會自動創建Segment?
2. 在創建對象時,明確指定立刻創建Segment?
create table t2 (n number) SEGMENT CREATION IMMEDIATE;?
3. 使用expdp替代exp(Datapump本身就是Oracle10g以后的推薦工具)?
Sql代碼??
總結
以上是生活随笔為你收集整理的oracle11g R2 出现新增的表在导出的时候报EXP-00011: xx does not exist的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统时间修改及同步
- 下一篇: sqlnet.expire_time a