1. 程式人生 > >Oracle的import和export的版本規則

Oracle的import和export的版本規則

今日導資料遇到一錯誤,記得之前也遇到過,但是沒做記錄,在此記一記,便於加深印象。

使用exp導資料的時候,在本地連遠端DB伺服器執行如下語句:

  1. exp **/**@192.168.90.125/center file=....

出現如下資訊:

  1. 連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
  2. With the Partitioning, OLAP and Data Mining options
  3. 已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
  4. 即將匯出指定的表通過常規路徑...
  5. . . 正在匯出表 TB_SYS_ACTION
  6. EXP-00008: 遇到 ORACLE 錯誤 904
  7. ORA-00904: "MAXSIZE": invalid identifier
  8. . . 正在匯出表 TB_SYS_ASSEMBLYINFO
  9. EXP-00008: 遇到 ORACLE 錯誤 1003
  10. ORA-01003: no statement parsed
  11. . . 正在匯出表 TB_SYS_BILLDEFINE
  12. EXP-00008: 遇到 ORACLE 錯誤 904
  13. ORA-00904: "MAXSIZE": invalid identifier
  14. . . 正在匯出表 TB_SYS_BILLQRYEXT
  15. EXP-00008: 遇到 ORACLE 錯誤 1003
  16. ORA-01003: no statement parsed
  17. . . 正在匯出表 TB_SYS_BILLQRYSIM
  18. EXP-00008: 遇到 ORACLE 錯誤 904
  19. ORA-00904: "MAXSIZE": invalid identifier
  20. . . 正在匯出表 TB_SYS_COLUMNDISPLAYER
  21. EXP-00008: 遇到 ORACLE 錯誤 1003
  22. ORA-01003: no statement parsed
  23. . . 正在匯出表 TB_SYS_DBOBJMODIFYLOG
  24. EXP-00008: 遇到 ORACLE 錯誤 904
  25. ORA-00904: "MAXSIZE": invalid identifier
  26. . . 正在匯出表 TB_SYS_DDFLOWCONTROL
  27. EXP-00008: 遇到 ORACLE 錯誤 1003
  28. ORA-01003: no statement parsed
  29. . . 正在匯出表 TB_SYS_DICT
  30. EXP-00008: 遇到 ORACLE 錯誤 904
  31. ORA-00904: "MAXSIZE": invalid identifier
  32. 。。。。。。。。

其實,此報錯資訊是因為本地使用的exp匯出工具的版本與db伺服器端exp版本不一致。

本地用的exp是11g版本,而db伺服器端exp是10g版本。

由於Oracle的imp/exp元件的一個操作原則就是向下相容,且有一些規則:

規則1:低版本的exp/imp可以連線到高版本(或同版本)的資料庫伺服器,但高版本的exp/imp不能連線到低版本的資料庫伺服器。

規則2:高版本exp出的dmp檔案,低版本無法imp(無法識別dmp檔案);低版本exp出的dmp檔案,高版本可以imp(向下相容)。

規則4:從Oracle 低版本Export的資料可以Import到Oracle高版本中,但限於Oracle的相鄰版本,如從Oracle 7 到 Oracle 8。對於兩個不相鄰版本間進行轉換,如從Oracle 6 到 Oracle 8,則應先將資料輸入到中間版本—Oracle 7,再從中間資料庫轉入更高版本Oracle 8。

於是在db伺服器端進行exp操作,然後在本地imp操作,結果匯入成功。

為弄清楚為什麼提示  ORA-00904: "MAXSIZE": invalid identifier,可在10g和11g版本中分別執行

  1. SQL > desc sys.exu9tbs

結果如下:

  1. Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
  2. Connected as center
  3. SQL> desc sys.exu9tbs
  4. Name Type Nullable Default Comments
  5. ---------- ------------ -------- ------- --------
  6. ID NUMBER
  7. OWNER CHAR(6) Y
  8. NAME VARCHAR2(30)
  9. ISONLINE VARCHAR2(7) Y
  10. CONTENT VARCHAR2(9) Y
  11. INIEXT NUMBER
  12. SEXT NUMBER
  13. PCTINC NUMBER
  14. MINEXT NUMBER
  15. MAXEXT NUMBER
  16. MINLEN NUMBER Y
  17. DEFLOG NUMBER
  18. EXT_MGT NUMBER
  19. ALLOC_TYPE NUMBER
  20. BLOCKSIZE NUMBER
  1. Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
  2. Connected as hbtest
  3. SQL> desc sys.exu9tbs
  4. Name Type Nullable Default Comments
  5. ---------- ------------ -------- ------- --------
  6. ID NUMBER
  7. OWNER CHAR(6) Y
  8. NAME VARCHAR2(30)
  9. ISONLINE VARCHAR2(7) Y
  10. CONTENT VARCHAR2(9) Y
  11. INIEXT NUMBER
  12. SEXT NUMBER
  13. PCTINC NUMBER
  14. MINEXT NUMBER
  15. MAXEXT NUMBER
  16. MINLEN NUMBER Y
  17. DEFLOG NUMBER
  18. EXT_MGT NUMBER
  19. ALLOC_TYPE NUMBER
  20. BLOCKSIZE NUMBER
  21. MAXSIZE NUMBER Y ----> 11g多了此欄位

exu9tbs 是個系統檢視。