我正在尝试将数据导入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和端口。
有人可以建议吗?
谢谢!
答案 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
,最终会错过许多表格。希望这对你或其他人有用。