前几天有位同事问到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.