0

在将 11g 数据库转储导入 9i 数据库时,我需要执行 impdp 实用程序的附加功能。我还需要能够使用 impdp 实用程序的相同附加功能从 9i 数据库导入 11g 数据库。

根据我的发现,数据泵客户端与 9i 数据库不兼容,因此我无法使用此附加功能。有没有办法解决这个问题?

请帮忙。

4

1 回答 1

2

要在 9i 和 11g 数据库之间移动数据,您需要使用原始导出原始导入实用程序而不是数据泵。

由于您想在不同版本之间移动数据,因此本节非常相关:

每当您在不同版本的 Oracle 数据库之间移动数据时,都适用以下基本规则:

  • 导入实用程序和要导入数据的数据库(目标数据库)必须是相同的版本。例如,如果您尝试使用导入实用程序 9.2.0.7 导入 9.2.0.8 数据库,则可能会遇到错误。

  • 导出实用程序的版本必须等于源数据库或目标数据库的版本,以较早者为准。

例如,要创建导出文件以导入更高版本的数据库,请使用与源数据库相同的导出实用程序版本。相反,要创建导出文件以导入早期版本数据库,请使用与目标数据库版本相同的导出实用程序版本。

因此,要将数据从 9i 移动到 11g,您需要使用 9i 二进制文件导出并使用 11g 二进制文件导入。要将数据从 11g 移动到 9i,您需要使用 9i 二进制文件进行导出和导入;这意味着您需要一个可以访问 11g 数据库的 9i 环境。如果它们在不同的服务器上,您需要从远程访问 11g 数据库的 9i 环境进行导出,或者在 11g 服务器上安装 9i,补丁级别与目标环境相同。

将数据从 11g 转移到 9i 似乎是一件奇怪的事情,考虑到 9i 有多旧,以及它已经失去支持有多长时间了。

要涵盖您关于类似于 的行为的原始问题append,来自导入文档

在导入数据之前手动创建表时,导出转储文件中的 CREATE TABLE 语句将失败,因为该表已经存在。为避免此故障并继续将数据加载到表中,请设置导入参数 IGNORE=y。否则,由于建表错误,不会将数据加载到表中。

imp没有truncate选项,所以数据总是附加到那里;如果没有该IGNORE=Y标志,导入将失败,因为对象存在,而不是因为其中有数据。

于 2013-07-15T08:54:13.837 回答