exp/imp导入导出版本问题和ORA-6550报错

前几天有位同事问到exp/imp是否涉及到版本问题,我认为,只要是软件,都会涉及到高低版本的兼容性问题,Oracle也是软件,自然也是这样。

简单的实验:
exp工具版本:10g
导出的source数据库版本:9i
bash-4.1$ exp x/x@x tables=T file=/home/x/t.dmp
Export: Release 10.2.0.4.0 – Production on Wed Dec 11 15:17:05 2013

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

EXP-00056: ORACLE error 6550 encountered
ORA-06550: line 1, column 41:
PLS-00302: component ‘SET_NO_OUTLINES’ must be declared
ORA-06550: line 1, column 15:
PL/SQL: Statement ignored
EXP-00000: Export terminated unsuccessfully

从报错看,好像是有个组件未定义,导致导出失败。

从MOS上看到一篇文章,有个介绍exp/imp版本兼容性问题的经典总结:

Export client compatibility:
Always use a version of the EXPORT utility that is equal to the lowest version of either the source or the target database.

导出客户端兼容性:建议使用和源数据库或目标数据库中最低版本一致的EXPORT工具版本。

Import client compatibility:
Always use a version of the IMPORT utility that is equal to the version of the target database.

导入客户端兼容性:建议使用和目标数据库版本一致的IMPORT工具版本。

这里很明显为我们实际中需要exp/imp导入导出指明了方向。

下面是导入导出的一个版本矩阵:

Import data into an older release (desupported) target database.

Import data into Oracle8i or higher release database.

标签