我需要在将11g数据库转储导入9i数据库时执行impdp实用程序的追加功能。我还需要能够反过来使用impdp实用程序的相同追加功能从9i数据库导入11g数据库。
据我所知,数据泵客户端与9i数据库不兼容,因此我无法使用此追加功能。有没有办法解决这个问题?
请帮忙。
答案 0 :(得分:1)
要在9i和11g数据库之间移动数据,您需要使用original export和original import实用程序而不是数据泵。
由于您希望在不同版本之间移动数据,this section非常相关:
每当您在Oracle的不同版本之间移动数据时 数据库,适用以下基本规则:
导入实用程序和要导入数据的数据库(目标数据库)必须是同一版本。例如,如果你 尝试使用导入实用程序9.2.0.7导入到9.2.0.8 数据库,那么你可能会遇到错误。
导出实用程序的版本必须等于源数据库或目标数据库的版本,以较早者为准。
例如,要创建导出文件以便导入到更高版本 发布数据库,使用等于的版本的Export实用程序 源数据库。相反,为导入创建导出文件 在早期版本数据库中,使用Export实用程序的一个版本 等于目标数据库的版本。
因此,要将数据从9i移动到11g,您需要使用9i二进制文件导出并使用11g二进制文件导入。要将数据从11g移动到9i,您需要使用9i二进制文件进行导出和导入;这意味着您需要一个可以访问11g数据库的9i环境。如果它们位于不同的服务器上,您需要从远程访问11g数据库的9i环境导出,或者在11g服务器上安装9i,与目标环境处于相同的补丁级别。
将数据从11g移动到9i似乎是一件奇怪的事情,考虑到9i的年龄,以及它已经失去了多长时间。
中涵盖与append
类似行为的原始问题
在导入数据之前手动创建表时,CREATE 导出转储文件中的TABLE语句将因表而失败 已经存在。为了避免这种失败并继续加载数据 在表中,设置Import参数IGNORE = y。否则,没有数据会 由于表创建错误而被加载到表中。
imp
没有truncate
选项,因此数据总是附加到任何地方;不是没有IGNORE=Y
flag导入将失败,因为对象存在,而不是因为其中有数据。