一次exp導出出錯的原因分析

客戶金保數據庫從10g轉成11g,需要定期從生產庫抽取數據到金保數據庫中,考慮到生產庫沒有多餘的空間存放expdp產生的文件,數據抽取採用遠程exp及imp方式,從金保服務端直接exp到金保本地,導出過程中報錯:

連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 – 64bit Production

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options

已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

 

即將導出指定的表通過常規路徑…

. . 正在導出表 AB01

EXP-00008: 遇到 ORACLE 錯誤 904

ORA-00904: “MAXSIZE”: invalid identifier

. . 正在導出表 AB02

EXP-00008: 遇到 ORACLE 錯誤 1003

ORA-01003: no statement parsed

. . 正在導出表 AB07

EXP-00008: 遇到 ORACLE 錯誤 904

ORA-00904: “MAXSIZE”: invalid identifier

. . 正在導出表 AB09

EXP-00008: 遇到 ORACLE 錯誤 1003

ORA-01003: no statement parsed

. . 正在導出表 AB14

EXP-00008: 遇到 ORACLE 錯誤 904

ORA-00904: “MAXSIZE”: invalid identifier

. . 正在導出表 ABC1

EXP-00008: 遇到 ORACLE 錯誤 1003

 

從該報錯信息上看,MAXSIZE字段報錯,無效的定義,應該是oracle的內部機制出現錯誤,而之前的10g客戶端exp都不存在問題,我們通過跟蹤該導出過程,發現報錯出現在以下的查詢過程中:

ksedmp: internal or fatal error

ORA-00904: “MAXSIZE”: invalid identifier

Current SQL statement for this session:

SELECT INIEXT, SEXT, MINEXT, MAXEXT, PCTINC, BLOCKS, LISTS, GROUPS, EXTENTS, PCACHE, TS_TYPE, TSNAME, ISONLINE, BLOCKSIZE, HSCOMPRESS,MAXSIZE FROM SYS.EXU9STOU WHERE FILENO = :1 AND BLOCKNO = :2 AND TSNO = :3

 

當我們使用exp工具導出數據的時候,需要訪問SYS.EXU9STOU表以獲取基本的對象存儲參數,而從報錯信息上也可以很明顯的看出,查詢對於MAXSIZE字段定義無效,我們分別比對11g及10g的關於該表的列信息:

 

 

從以上信息我們可以看到,從11g開始SYS.EXU9STOU表增加了字段

MAXSIZE NUMBER

從而導致該導出過程報錯。

 

從以上結果看,該報錯原因也就很明確了,通過11g的客戶端導出10g的數據時無法導出的,也就是高版本客戶端無法導出低版本數據庫。如果需要通過exp,導出,建議還是採用與生產同版本的數據庫客戶端

發佈了369 篇原創文章 · 獲贊 8 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章