我正尝试在命令提示符下使用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/
它在那里工作。
不确定为什么在我的笔记本电脑上我无法正常工作。接受建议。谢谢,
答案 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。
因此,要么删除单引号,要么切换为双引号。