如何使用tnsnames.ora连接SQLPlus

11
我想要连接Oracle数据库,而不安装Oracle客户端。
我下载了两个东西:
"Instant Client Package - Basic" "Instant Client Package - SQL*Plus"
然后,我在“C:\ Oracle \ instantclient”上创建了一个文件夹,并将所有包解压到其中。
我已经设置好系统环境,如下所示:
Path - C:\ Oracle \ instantclient NSL_LANG - 按照正确的键设置 ORACLE_HOME - C:\ Oracle \ instantclient ORACLE_SID - C:\ Oracle \ instantclient TNS_ADMIN - C:\ Oracle \ instantclient
然后,我在“C:\ Oracle \ instantclient”中创建了一个配置文件“tnsnames.ora”。
当我在命令提示符中输入以下命令时:
sqlplus user/password @HOST
我会得到以下错误消息:
ERROR: ORA-12560: TNS:protocol adapter error 但是,当我尝试以下命令时:
sqlplus user/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=address to host)(Port=1521))(CONNECT_DATA=(SID=address to SID)))
一切正常。为什么SQL无法识别tnsnames.ora文件?
3个回答

15

你的命令应该是:

sqlplus user/password@HOST

密码与@HOST部分之间不要有空格。

加上空格后,它会将@HOST视为一段脚本,在您登录后执行,并尝试进行本地连接,这会产生TNS错误。(由于您没有登录,因此不会评估HOST是否存在,因此在此时它实际上是噪音)。

C:\>sqlplus -l -s x/y @HOST
ERROR:
ORA-12560: TNS:protocol adapter error


SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus
没有空格后,它会将 HOST 作为 TNS 别名来查找:

没有空格后,它会将 HOST 作为 TNS 别名来查找:

C:\>sqlplus -l -s x/y@HOST
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified


SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus

对于我来说,由于我的tnsnames.ora中没有HOST,仍然会出现错误,但这是不同的错误,您可以看到它至少尝试将其用作TNS别名。如果您正确定义了它,它将能够连接到您的数据库。


哦,你是对的!多么愚蠢的错误 :/ 现在它可以正常工作了。非常感谢你,Alex。 - KamilK

0

永远不要手动编辑$ORACLE_HOME/network/admin/tnsname.ora文件,使用"netmr"创建本地名称。 不知道为什么它们看起来一样但是却不能工作。


0
这个命令对我来说运行正常:

sqlplus /nolog connect username/password@hostname:port/SERVICENAME


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接