我们有一台运行在远程服务器上的Oracle服务器,该服务器只有SSH连接,我们需要针对该服务器运行数据导入过程。
我尝试了不同的SSH隧道组合:
但它们都不能与imp.exe一起使用。有趣的是,所有这些组合对于使用JDBC的SQL Developer和Scriptella脚本都可以正常工作。标准错误输出中显示以下错误:
IMP-00058: ORACLE error 12514 encountered
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
IMP-00000: Import terminated unsuccessfully
以下内容出现在sqlnet.log中:
***********************************************************************
Fatal NI connect error 12514, connecting to:
(DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=tktdb1)(CID=(PROGRAM=C:\oraclexe\app\oracle\product\10.2.0\server\bin\imp.exe)(HOST=...)(USER=...)))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=11111)))
VERSION INFORMATION:
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 10.2.0.1.0 - Production
Time: 07-MAR-2011 10:53:26
Tracing not turned on.
Tns error struct:
ns main err code: 12564
TNS-12564: TNS:connection refused
ns secondary err code: 0
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
有什么想法吗?
答案 0 :(得分:2)
我认为连接字符串是正确的。如果是:您的数据库是否恰好处于受限模式?在这种情况下,它支持的服务不可用于连接。如果是这种情况,请尝试使用SID = xxx
连接tns别名我在这里看不到ssh有什么影响。数据库连接正常。如果您需要通过ssh隧道数据库连接,ssh只起作用。如果普通的sql客户端可以在没有这个的情况下连接,那么imp也可以这样做。通常情况下,ssh仅用于连接服务器,在您的情况下不需要。
我希望这有帮助, 罗纳德。