Oracle的import和export的版本規則
阿新 • • 發佈:2019-01-28
今日導資料遇到一錯誤,記得之前也遇到過,但是沒做記錄,在此記一記,便於加深印象。
使用exp導資料的時候,在本地連遠端DB伺服器執行如下語句:
- exp **/**@192.168.90.125/center file=....
出現如下資訊:
- 連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
- With the Partitioning, OLAP and Data Mining options
- 已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
- 即將匯出指定的表通過常規路徑...
- . . 正在匯出表 TB_SYS_ACTION
- EXP-00008: 遇到 ORACLE 錯誤 904
- ORA-00904: "MAXSIZE": invalid identifier
- . . 正在匯出表 TB_SYS_ASSEMBLYINFO
- EXP-00008: 遇到 ORACLE 錯誤 1003
- ORA-01003: no statement parsed
- . . 正在匯出表 TB_SYS_BILLDEFINE
- EXP-00008: 遇到 ORACLE 錯誤 904
- ORA-00904: "MAXSIZE": invalid identifier
- . . 正在匯出表 TB_SYS_BILLQRYEXT
- EXP-00008: 遇到 ORACLE 錯誤 1003
- ORA-01003: no statement parsed
- . . 正在匯出表 TB_SYS_BILLQRYSIM
- EXP-00008: 遇到 ORACLE 錯誤 904
- ORA-00904: "MAXSIZE": invalid identifier
- . . 正在匯出表 TB_SYS_COLUMNDISPLAYER
- EXP-00008: 遇到 ORACLE 錯誤 1003
- ORA-01003: no statement parsed
- . . 正在匯出表 TB_SYS_DBOBJMODIFYLOG
- EXP-00008: 遇到 ORACLE 錯誤 904
- ORA-00904: "MAXSIZE": invalid identifier
- . . 正在匯出表 TB_SYS_DDFLOWCONTROL
- EXP-00008: 遇到 ORACLE 錯誤 1003
- ORA-01003: no statement parsed
- . . 正在匯出表 TB_SYS_DICT
- EXP-00008: 遇到 ORACLE 錯誤 904
- ORA-00904: "MAXSIZE": invalid identifier
- 。。。。。。。。
其實,此報錯資訊是因為本地使用的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版本中分別執行
- SQL > desc sys.exu9tbs
結果如下:
- Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
- Connected as center
- SQL> desc sys.exu9tbs
- Name Type Nullable Default Comments
- ---------- ------------ -------- ------- --------
- ID NUMBER
- OWNER CHAR(6) Y
- NAME VARCHAR2(30)
- ISONLINE VARCHAR2(7) Y
- CONTENT VARCHAR2(9) Y
- INIEXT NUMBER
- SEXT NUMBER
- PCTINC NUMBER
- MINEXT NUMBER
- MAXEXT NUMBER
- MINLEN NUMBER Y
- DEFLOG NUMBER
- EXT_MGT NUMBER
- ALLOC_TYPE NUMBER
- BLOCKSIZE NUMBER
- Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
- Connected as hbtest
- SQL> desc sys.exu9tbs
- Name Type Nullable Default Comments
- ---------- ------------ -------- ------- --------
- ID NUMBER
- OWNER CHAR(6) Y
- NAME VARCHAR2(30)
- ISONLINE VARCHAR2(7) Y
- CONTENT VARCHAR2(9) Y
- INIEXT NUMBER
- SEXT NUMBER
- PCTINC NUMBER
- MINEXT NUMBER
- MAXEXT NUMBER
- MINLEN NUMBER Y
- DEFLOG NUMBER
- EXT_MGT NUMBER
- ALLOC_TYPE NUMBER
- BLOCKSIZE NUMBER
- MAXSIZE NUMBER Y ----> 11g多了此欄位
exu9tbs 是個系統檢視。