首页 文章

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

提问于
浏览
0

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

我安装了oracle SQLDeveloper并将其用于交互式,但尝试运行SQLPLUS以便我可以设置一些批处理过程 .

COMMAND 窗口中,我首先使用以下命令设置 ORACLE_HOME 变量:

set ORACLE_HOME=C:\app\oracle\product\11.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:协议适配器错误

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

set ORACLE_HOME=C:\app\oracle\product\11.2.0\client_1\BIN

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

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

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

错误6初始化SQL * Plus SP2-0667:找不到消息文件sp1.msb SP2-0750:您可能需要将ORACLE_HOME设置为Oracle软件目录

我已经尝试了 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/

它在那里工作 .

不知道为什么在我的笔记本电脑上我不能让它工作 . 接受建议 . 谢谢,

1 回答

  • 0

    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)))
    

    除非你的真实 Value 中隐藏着任何特殊字符 .

    但在Windows中,第一个带有单引号的内容包括传递给SQL * Plus的值中的引号 . 这使得它将整个事物视为用户名 .

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

    因此,要么删除单引号,要么切换到双引号 .

相关问题