版本不當導致的exp出錯

junsansi發表於2008-10-27

在一次exp匯出操作時遇到了ORA-00904,ORA-01003錯誤,多方搜尋也幾無所得。

匯出的大概情形如下:

D:\>exp user/pass@connstr file=d:\xx.dmp

Export: Release 10.2.0.4.0 - Production on Fri Oct 24 13:25:33 2008

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user USER
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user USER
About to export USER's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export USER's tables via Conventional Path ...
. . exporting table                          LC_BL          0 rows exported
. . exporting table                        LC_BLLX          0 rows exported
. . exporting table                         LC_DLR          0 rows exported
. . exporting table                          LC_MB          0 rows exported
. . exporting table                        LC_MBJD          0 rows exported
. . exporting table                        LC_MBLB          0 rows exported
. . exporting table                        LC_RYXZ          0 rows exported
. . exporting table                        LC_SJJD          0 rows exported
. . exporting table                        LC_SJLC          0 rows exported
. . exporting table                        LC_SWLB          4 rows exported
. . exporting table                   OA_BBS_ANNEX          0 rows exported
. . exporting table                   OA_BBS_BOARD          0 rows exported
. . exporting table                  OA_BBS_DETAIL
EXP-00008: ORACLE error 904 encountered
ORA-00904: "IFREEPOOL": invalid identifier
. . exporting table                     OA_CL_CLSY
EXP-00008: ORACLE error 1003 encountered
ORA-01003: no statement parsed
. . exporting table                     OA_CL_JBXX
EXP-00008: ORACLE error 904 encountered
ORA-00904: "IFREEPOOL": invalid identifier
. . exporting table                       OA_CL_WX
EXP-00008: ORACLE error 1003 encountered
ORA-01003: no statement parsed
. . exporting table                        OA_CYDH          0 rows exported
. . exporting table                        OA_CYHB          0 rows exported
.............................
.............................
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
EXP-00008: ORACLE error 904 encountered
ORA-00904: "OLEVEL": invalid identifier
EXP-00000: Export terminated unsuccessfully

伺服器和客戶端兩邊連線都很正常,百思不得解,難道是匯出版本的問題?不至於啊,1024匯出1023的庫,之前操作過,沒發現過這個問題,而且看提示不像啊,眾所周知版本錯誤會提示ORA-06550。實在無法,最後報著死馬當活馬醫的想法嘗試換了一個同版本的客戶端執行exp,結果順利執行。

後來又經過多番嘗試,發現出錯的均是含lob欄位的表,看來一方面oracle在執行exp時對版本的處理非常嚴格,即使大版本相同,小版本有略微差異也會導致exp時報錯,另一方面是處理規則也存在版本延續的情況,如果不涉及到處理規則的變化,即使exp時客戶端版本與伺服器不符,匯出時也有可能不報錯(運氣好的話)。

將此次事件記錄下來以加強記憶,以後執行匯出還是都儘可能確保版本一致吧(起碼exp的客戶端版本不能高於伺服器)。

 

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

相關文章