如何将 SQLPlus 与 tnsnames.ora 连接

How to connect SQLPlus with tnsnames.ora

我想连接我的 Oracle 数据库而不 安装 Oracle 客户端。

我下载了:

然后我在 C:\Oracle\instantclient 上创建了文件夹,我在其中提取了所有包。

我已经设置 system environment 喜欢:

Path - C:\Oracle\instantclient NSL_LANG - with properly key ORACLE_HOME - C:\Oracle\instantclient ORACLE_SID - C:\Oracle\instantclient TNS_ADMIN - C:\Oracle\instantclient

然后我在 C:\Oracle\instantclient

中创建了带有配置的 tnsnames.ora 文件

当我向 cmd 发出命令时:

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 文件?

你的命令应该是:

sqlplus user/password@HOST

密码和 @HOST 部分之间没有 space。

对于 space,它会将 @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

删除 space 后,它会查找 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别名。如果您正确定义了它,它将能够连接到您的数据库。

切勿手动编辑 $ORACLE_HOME/network/admin/tnsname.ora,使用 "netmr" 创建本地名称。 不知道为什么它是一样的但不起作用。

这个突击队很适合我:

sqlplus /nolog 连接 username/password@hostname:port/SERVICENAME