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

时间:2018-05-08 17:26:02

标签: windows oracle command-prompt sqlplus

我正尝试在命令提示符下使用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个错误,但至少没有提示输入密码:

  

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

我已尝试ORACLE_HOME的各种值,但它会提示PW但仍然不喜欢它 - 或者它不会提示并失败并显示其他错误。我需要它来获取我提供的PW值并连接,但似乎无法使其工作。我还确保我对该目录和sp1us.msb目录中的client_1\sqlplus\mesg文件具有读取和执行权限。

这是我第一次尝试在笔记本电脑上运行SQLPLUS。我已经在Linux服务器上运行它,然后在脚本中我在shell脚本文件中设置:

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

它在那里工作。

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

1 个答案:

答案 0 :(得分:0)

Windows命令提示符将单引号视为与Linux不同。在Linux上,其中任何一个都可以工作:

let voiceId : String = "com.apple.ttsbundle.Alice-compact"

speechUtterL1 = AVSpeechUtterance(string: "dì qualcosa in italiano")
speechUtter.voice = AVSpeechSynthesisVoice(identifier: voiceId)

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

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

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

因此,要么删除单引号,要么切换为双引号。