Oracle11g新特性影響EXP匯出,ORA-01455的處理

qdrzq發表於2014-08-29
資料庫Oracle11g下,EXP邏輯匯出時,遇到如下錯誤:
EXP-00056: 遇到 ORACLE 錯誤 1455
ORA-01455: 轉換列溢位整數資料型別
EXP-00000: 匯出終止失敗

據現象觀察,出現此錯誤之前,大多數記錄數為0的正式表(不是臨時表)沒有被匯出.
查閱資料,得到原因是Oracle11g增加了引數deferred_segment_creation,引數預設值是TRUE,這樣,新建的表無記錄時,是滯後分配段的,甚至連DDL定義也無法獲取,所以EXP無法匯出空表.
解決方法:用本使用者登入,下面三個語句檢視,結果是不是0行記錄(通常第一個肯定不是0條)
(1)select 'alter table '||table_name||' allocate extent;'
from user_tables WHERE SEGMENT_CREATED='NO';
(2)select * from user_indexes WHERE SEGMENT_CREATED='NO';
(3)select * from user_lobs where segment_created='NO';
按照第一個語句構造出來的語句(一組alter table TAB_XX allocate extent;語句)執行,之後再檢視,三個語句結果都是0行記錄了.
之後,進行EXP正常.
注:上述Oracle引數如果設定為FALSE(alter system set deferred_segment_creation=FALSE;),則之後新建的空表會自動分配段,之前建的空表(未經過曾經有資料的環節)仍是沒有分配段的,仍然需要上述方法處理一下.

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

相關文章