Linux环境下sqlplus 18/19/21如何使用含@字符的密码登录
解决方案
方案1(优先推荐,全版本兼容、适配自动化场景)
通过/nolog参数结合shell heredoc实现无交互连接,完全绕开命令行特殊字符解析问题,支持任意特殊字符的密码,无需额外转义:
sqlplus /nolog << 'EOF' CONNECT USER/"@PWD"@SERVER:1521/BASE -- 此处填写需要执行的SQL逻辑 SELECT SYSDATE FROM DUAL; EXIT; EOF
注意heredoc的起始标记加单引号
'EOF'可以避免shell提前解析内容里的特殊变量,适配更复杂的SQL场景。
方案2(单行命令写法,适合简单调用场景)
18c+版本调整了命令行参数的解析规则,需要把引号转义后传递给sqlplus原生识别,Bash环境下可使用以下写法:
sqlplus USER/\"@PWD\"@SERVER:1521/BASE
该写法和shell类型强相关,不同shell(比如csh、zsh)的转义规则会有差异,生产自动化场景优先选择方案1。
内容的提问来源于stack exchange,提问作者Nacros
相关产品推荐
相关产品推荐

