首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle数据泵到远程服务器

Oracle数据泵到远程服务器
EN

Stack Overflow用户
提问于 2014-01-28 17:27:09
回答 1查看 22.3K关注 0票数 6

我们有一个转储文件,我们想要导入到一个亚马逊的rds服务器。

我就是这样做的:

创建一个公共db链接并验证它是否有效:

代码语言:javascript
复制
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

为转储文件创建一个目录:

代码语言:javascript
复制
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'G:\DB';

导入转储文件:

代码语言:javascript
复制
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位生产

EN

回答 1

Stack Overflow用户

发布于 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参数,但与操作关联的日志仍然需要目录对象。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21412533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档