今日导数据遇到一错误,记得之前也遇到过,但是没做记录,在此记一记,便于加深印象。
使用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 是个系统视图。