SQLPLUS 无法在 windows 命令提示符下连接

SQLPLUS Unable to connect in windows command prompt

我正在尝试在命令提示符下使用 SQLPLUS 从笔记本电脑连接到 Linux 服务器上的 oracle 实例。

我安装了 oracle SQLDeveloper 并将其用于交互,但我正在尝试获取 SQLPLUS 运行ning 以便我可以设置一些批处理。

COMMAND window 中,我首先设置我的 ORACLE_HOME 变量使用:

set ORACLE_HOME=C:\app\oracle\product.2.0\client_1

然后我尝试使用 SQLPLUS 连接使用:

sqlplus -s 'myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))'

即使我指定了 PW,它也会以输入密码响应:提示,当我输入它并按回车键时,我收到 ERROR

ORA-12560: TNS:protocol adapter error

所以,接下来,我使用以下方法设置 ORACLE_HOME 变量:(添加 \BIN

set ORACLE_HOME=C:\app\oracle\product.2.0\client_1\BIN

然后我尝试使用 SQLPLUS 进行连接:

-s 'myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xxx)))'

这会产生 2 个错误,但至少不会提示输入密码:

Error 6 initializing SQL*Plus SP2-0667: Message file sp1.msb not found SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

我已经为 ORACLE_HOME 尝试了各种值,但要么它会提示输入 PW 但仍然不喜欢它,要么它不会提示并因其他错误而失败。我需要它获取我提供的 PW 值并进行连接,但似乎无法正常工作。我还确保我具有对该目录和 client_1\sqlplus\mesg 目录中的 sp1us.msb 文件的读取和执行权限。

这是我第一次尝试在笔记本电脑上 运行 SQLPLUS。我在 Linux 服务器上有 运行 它,之前和在脚本中我在 shell 脚本文件本身中设置了:

export ORACLE_HOME=/oracle/app/product/11.2.0.4/dbhome_1/

它在那里工作。

不知道为什么在我的笔记本电脑上无法正常工作。接受建议。谢谢,

Windows 命令提示符对待单引号的方式与 Linux 不同。在 Linux 上,其中任何一个都可以工作:

sqlplus -s 'myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))'
sqlplus -s "myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))"
sqlplus -s myID/myPW@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DBServer)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XXX)))

除非你的真实值中隐藏了任何特殊字符。

但在 Windows 中,第一个带有单引号的引号将这些引号包含在传递给 SQL*Plus 的值中。这导致它将整个事物视为用户名。

然后它会提示您输入密码;但由于它也没有看到连接字符串 - 因为它认为 @... 也是用户名的一部分 - 它无法到达您的数据库以尝试验证它,因此 ORA-12560.

因此,要么删除单引号,要么改用双引号。