Database Oracle数据泵impdp到远程服务器
我们有一个转储文件要导入到Amazon rds服务器 这就是我所做的: 创建公共数据库链接并验证其是否正常工作:Database Oracle数据泵impdp到远程服务器,database,oracle,datapump,impdp,Database,Oracle,Datapump,Impdp,我们有一个转储文件要导入到Amazon rds服务器 这就是我所做的: 创建公共数据库链接并验证其是否正常工作: create public database link rdsdblink connect to dbuser identified by dbpsw using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST='xxx')(PORT=1521)))(CONNECT_DATA=(SID=dbsid)))'; SQL&
create public database link rdsdblink
connect to dbuser identified by dbpsw
using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST='xxx')(PORT=1521)))(CONNECT_DATA=(SID=dbsid)))';
SQL> select * from dual @ rdsdblink;
D
-
X
为转储文件创建目录:
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'G:\DB';
impdp dbuser/dbpsw@rdsdblink tablespaces=EMP directory=DATA_PUMP_DIR dumpfile=EMP_dump.DMP logfile=EMP_dump.log network_link=rdsdblink
导入转储文件:
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'G:\DB';
impdp dbuser/dbpsw@rdsdblink tablespaces=EMP directory=DATA_PUMP_DIR dumpfile=EMP_dump.DMP logfile=EMP_dump.log network_link=rdsdblink
我还将rdsdblink连接字符串添加到tnsnames.ora文件中,并重新启动了oracle服务(“立即关闭”,然后是“启动”)
发生以下错误:
连接到:Oracle Database 11g 11.2.0.2.0版-64位生产
ORA-39001:参数值无效
ORA-39200:链接名称“rdsdblink”无效。
ORA-02019:找不到远程数据库的连接说明 我的本地oracle版本: Oracle Database 11g Express Edition 11.2.0.2.0版-生产 远程oracle版本:
Oracle Database 11g 11.2.0.2.0版-64位生产版您已连接到远程数据库(通过
dbuser/dbpsw@rdsdblink
),但数据库链接是在本地数据库中创建的。此时,您正试图在远程数据库上运行导入,同时还有一个到远程数据库的网络链接,而该网络链接正试图使用该远程数据库上不存在的数据库链接
tnsnames.ora
条目和DB链接是完全不同的东西
您需要在本地正常连接—可能使用创建DB链接时使用的凭据。然后,network\u link
参数将使由impdp
启动的本地数据库会话对远程服务器起作用;因此可以使用您的本地目录
除了。。。它不是那样工作的。由网络链接标识的远程数据库
可以用作导入源,而无需转储文件;但它不能是从文件导入的目标
从:
网络链接
参数通过数据库链接启动导入。
这意味着impdp
客户端所连接的系统
联系由引用的源数据库
source\u database\u link
,从中检索数据,并将数据直接写入连接实例上的数据库。没有垃圾场
涉及的文件
如果您真的想沿着这条路线走下去,我认为您需要一个从远程到本地的链接,并对远程运行导入(就像现在一样),但要直接从您的模式中提取,而不是从以前的导出中提取。您仍然需要访问远程服务器上的目录
对象,因为日志等将写入其中,即使您没有复制转储文件。即使使用nologfile
,我相信如果您没有指定目录或对其没有权限,也会出错
他说了同样的话:
对于导入,NETWORK\u LINK
参数还标识数据库
指向源服务器的链接。这里的区别在于对象
直接从源导入到本地服务器,而无需
正在写入转储文件。虽然不需要一个
DUMPFILE
参数,仍需要目录对象
与操作关联的日志
谢谢你,我对这个很陌生,所以如果我要对远程运行导入,如何指向本地转储文件?@Cal-你不能。该文件必须位于您连接的DB实例正在运行的服务器上。它必须在rds服务器上,我想这不是一个选项?否则,您必须一步导出和导入,而不需要中间转储文件,如果您的侦听器未暴露在Internet上,则获取DB链接可能会有问题。谢谢您的帮助。我们会想办法的。@Cal-你看到了吗?它包括一个
impdp
到RDS中,但来自EC-您可以从数据库中执行相同的操作,但前提是您能够访问它,这是不可能的。如果可以重做导出,则可以使用exp
和imp
来代替,这在您的场景中是可行的。它可能会给你一些其他的想法。