Oracle 11g 導出數據報 “ORA-01455: 轉換列溢出整數數據類型”的問題


最近發現雲服務器上的Oracle 11g在導出時報錯,如下:

...

. 正在導出后期表活動
. 正在導出實體化視圖
. 正在導出快照日志
EXP-00008: 遇到 ORACLE 錯誤 1455
ORA-01455: 轉換列溢出整數數據類型
EXP-00000: 導出終止失敗

從網上搜了半天,有很多種說法:
1. 版本問題,說10g的導出11g的就有這個問題,但是我的客戶端和服務器采用的是相同的版本,所以不存在版本問題。有的還說是32位和64位的問題,我的Oracle是32位,客戶端也是32位,同一台設備上,所以應該是和版本無關。
2. Exp加參數,很多人提出加各種參數,包括:

Direct=y
INDEXES=n STATISTICS=none

不管是單獨還是聯合使用,都無效還是報錯。

3、數據問題,我干脆不導出數據,只導出數據庫結構,仍然報錯,看來與數據無關。

靜下來考慮了半天,看到是快照日志出錯,但是我的數據庫中沒有建立快照啊?后來反應過來了,雖然沒有快照,但是建立有物化視圖(MATERIALIZED VIEW),會不會是物化視圖的問題?

刪除物化視圖后導出,一切正常,說明還是物化視圖導出導致的錯誤,真是個大坑啊,這些導出文件在重新導入時都要報錯,備份工作算是白做了。幸好發現得早!

 

2015.3.18

今天某用戶的數據導出又開始報上述錯誤了,檢查了一下,發現某個物化視圖采用了提交更新模式:

CREATE MATERIALIZED VIEW V_INBED_BILL_CHECK_TOTAL 

REFRESH COMPLETE ON COMMIT

AS ...

由於必須開啟日志:

--建立物化視圖日志,將涉及的字段序列化
CREATE MATERIALIZED VIEW LOG ON T_CHECK_BILL WITH ROWID,
SEQUENCE(ORG_ID,BATCH_ID,SI_TYPE_ID,HOSP_ID,CHECK_RULE_ID,INBED_BILL_ID,PRES_BILL_ID,PSN_ID,CHECK_ITEM_AMT,CHECK_ITEM_CNT,CHECK_DEDUC_AMT)
INCLUDING NEW VALUES;

今天重新建立物化視圖,全部采用手工更新模式,所以重建物化視圖為:

 CREATE MATERIALIZED VIEW V_INBED_BILL_CHECK_TOTAL 

REFRESH ON DEMAND
AS ...

在導出數據時,刪除物化視圖后導出仍然報錯,發現沒有執行原來的刪除命令:

 

DROP MATERIALIZED VIEW LOG ON T_CHECK_BILL;

執行該命令后,報錯消失。

所以正確的理解應該是:

建立物化視圖過程中,如果開啟了物化視圖日志,導出時將會報”ORA-01455”的錯誤,導致導出失敗。刪除物化視圖日志可以解決該問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM