如何使用“impdp”命令导入带端口号的.dmp数据?

时间:2012-03-23 12:56:14

标签: oracle connection listener tnsnames

我正在尝试将数据导入Oracle数据库。我有“.imp”和“.dmp”文件用于导入数据。数据库使用端口1521,数据库名称为“DB”。 我尝试了以下命令,但不起作用。

impdp root/password@xxx.xxx.xxx.xxx:1521:DB 
    dumpfile=transmart.dmp
    logfile=transmart.imp
    schemas=i2b2hive,i2b2metadata,i2b2sampledata,i2b2demodata,i2b2workdata
             ,biomart,biomart_user,deapp,searchapp,tm_cz,tm_lz,tm_wz

错误: ORA-12504:TNS:侦听器未获得CONNECT_DATA中的SERVICE_NAME ORA-12545:连接失败,因为目标主机或对象不存在 < / p>

我可以毫无问题地telnet IP和端口。

有人可以建议吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

EZConnect string中存在语法错误。

试试这个(不需要用tnsnames.ora这样做):

impdp root/password@xxx.xxx.xxx.xxx:1521/DB

注意在端口和服务名称之间用“/”替换“:”。

作为旁注,我很久以前就没有把密码放在命令行中的习惯,在命令运行时可能很容易窥探密码。让程序提示您输入密码:

impdp root@xxx.xxx.xxx.xxx:1521/DB

特别是如果您要使用root作为命令; - )

答案 1 :(得分:0)

您对telnet的引用表明您是从远程客户端而不是在数据库服务器上本地运行它。

您需要使用DB的位置信息编辑客户端的TNSNAMES.ORA文件。也许你认为你已经完成了这个,在这种情况下你可能引入了拼写错误或语法错误。

要检查的另一件事是监听器正在数据库服务器上运行,因为这是ORA-12545的一个非常常见的原因。

答案 2 :(得分:0)

导入最新的transmart数据库转储,我们使用了以下内容:

wget https://github.com/transmart/transmartApp-DB/zipball/master
unzip master
tar zxvf transmart.dmp.tar.gz
cp transmart.dump /u01/app/oracle/admin/XE/dpdump
chown oracle:dba /u01/app/oracle/admin/XE/dpdump/transmart.dmp
impdp SYSTEM dumpfile=transmart.dmp logfile=transmart3.log full=y

如果您不使用full=y,最终会错过许多表格。希望这对你或其他人有用。