Oracle:使用带有DB链接的Impdp远程导入

时间:2014-02-19 17:07:05

标签: oracle plsql impdp ora-12170

我正在尝试使用数据泵导入架构。这是我的问题:我只能访问源数据库服务器上的实用程序,但它的版本是11.1,而目标数据库版本是11.2,所以如果我运行导入,则会出错:

UDI-00018: Data Pump client is incompatible with database version 11.01.00.06.00

我想通过使用我的笔记本电脑解决这个问题,使用我的笔记本电脑安装Oracle Express版本11.2,与目标数据库版本相同,使用此命令:

impdp username/password@targetDB directory=data_pump_dir network_link=sourceDB schemas=EMP

在此命令中, targetDB 是在我的本地oracle上创建的公共数据库链接,并且相同的记录已添加到tnsnames.ora; sourceDB 是在目标数据库中创建的公共数据库链接,指向源数据库。

但我收到了这个错误:

Connected to: Oracle Database 11g Release 11.2.0.2.0 - 64bit Production
ORA-39001: invalid argument value
ORA-39200: Link name "sourceDB" is invalid.
ORA-12170: TNS:Connect timeout occurred

源数据库版本是:

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for 64-bit Windows: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production

目标数据库版本是:

Oracle Database 11g Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE 11.2.0.2.0 Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production

我的本​​地数据库版本是:

Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production              
PL/SQL Release 11.2.0.2.0 - Production                                           
CORE    11.2.0.2.0  Production                                                         
TNS for 32-bit Windows: Version 11.2.0.2.0 - Production                          
NLSRTL Version 11.2.0.2.0 - Production  

那我做错了什么?

有没有办法从源导入到目标?

1 个答案:

答案 0 :(得分:0)

看起来您无法远程访问本地数据库:

为了避免

  

LocalDate localDate = LocalDate.parse("2016-04-17"); LocalDateTime localDateTime = localDate.atStartOfDay(); Instant instant = localDateTime.toInstant(ZoneOffset.UTC);   是为了确保您能够连接到远程数据库。

我建议你开始确保它可以使用访问db-link的简单查询:

ORA-12170: TNS:Connect timeout occurred

另一种解决方案

您的问题的另一个解决方案是在导出文件时指定导出文件的目标版本,例如用:

SQL> select * from dual@sourceDB;