在不同数据库版本之间导出和导入(Oracle)



我有两个数据库服务器:

  1. Windows服务器2016上的Oracle数据库12c
  2. Windows服务器2003上的Oracle数据库9i

我想把一个模式从1号服务器导入2号服务器。我像往常一样导出了一个转储文件:

expdp system@tnsname/password directory=directory_name schemas=schema_name dumpfile=dumpfile.dmp version=9.2 

然后我尝试将其导入服务器2

imp system@tnsname/password fromuser=old_user touser=new_user file=dumpfile.dmp 

但我得到了错误IMP-00037:字符集标记未知。我搜索了错误,它告诉文件已损坏。但是,为了确保文件正常,我将其重新导入到服务器1中,并且运行良好。此外,两个数据库上的字符集和nls_length_semantic是相同的。

那么,解决方案是什么呢?我错过什么了吗?

提前谢谢你,

一般规则说:

  • 使用较低数据库版本的导出实用程序导出数据
  • 使用目标数据库版本的导入实用程序导入数据

在您的情况下,考虑到9i是一个不存在数据泵的旧版本,您唯一的选择是使用原始EXP和IMP实用程序,这两个实用程序都是9i数据库版本。

我不知道9i的EXP是否能够从12c数据库版本导出数据,我甚至无法尝试(没有那个旧数据库(。

据我记忆所及,互联网上有一个公开的兼容性矩阵。现在它被隐藏在"我的Oracle支持"下,所以如果可以的话,请查看它的内容。我做到了;如果你的9i数据库是9.0.1,那你就倒霉了。如果它更高,那么正如我所说,使用EXP和IMP 9.2.0版本。

最新更新