我们有一个转储文件,我们想要导入到一个亚马逊的rds服务器。
我就是这样做的:
创建一个公共db链接并验证它是否有效:
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我还将rdsdblink连接字符串添加到tnsnames.ora文件并重新启动oracle服务(“立即关闭”,然后是“启动”)。
发生下列错误:
连接到: Oracle数据库11g发行版11.2.0.2.0-64位生产
ORA-39001:无效的参数值
ORA-39200:链接名"rdsdblink“无效。
ORA-02019:找不到远程数据库的连接描述
我的本地甲骨文版本: oracle数据库11g速成版11.2.0.2.0版-生产
远程oracle版本: Oracle数据库11g发行版11.2.0.2.0 -64位生产
发布于 2014-01-28 17:46:06
您已经连接到远程数据库(通过dbuser/dbpsw@rdsdblink),但是您的DB链接是在本地数据库中创建的。目前,您正在尝试运行远程DB上的导入,同时也运行到远程DB的网络链接,而该网络链接正在尝试使用该远程DB上不存在的DB链接。
tnsnames.ora条目和DB链接是完全不同的。
您需要正常地在本地连接--可能使用用于创建DB链接的任何凭据。然后,network_link参数将使由impdp启动的本地数据库会话针对远程服务器进行操作;因此可以使用本地目录。
除了..。不是那样的。network_link标识的远程数据库可以用作导入源,根本没有转储文件;但它不能成为从文件导入的目标。
来自文档
NETWORK_LINK参数通过数据库链接启动导入。这意味着连接到impdp客户端的系统与source_database_link引用的源数据库联系,从它检索数据,并将数据直接写入连接实例上的数据库。不涉及转储文件。
如果您真的想沿着这条路线走下去,我想您需要一个从remote到本地的链接,并针对remote运行导入(现在是这样),而是直接从您的模式中提取,而不是从以前的导出中提取。您仍然需要访问远程服务器上的DIRECTORY对象,因为日志等将在那里写入,即使您没有复制转储文件。即使使用nologfile,如果您没有指定目录或对目录没有权限,我相信它也会出错。
你在上一个问题中链接到的文章也是这么说的:
对于导入,
NETWORK_LINK参数还标识指向源服务器的数据库链接。这里的区别是,对象直接从源导入本地服务器,而不被写入转储文件。尽管不需要DUMPFILE参数,但与操作关联的日志仍然需要目录对象。
https://stackoverflow.com/questions/21412533
复制相似问题