如何解决用于连接到 solaris 服务器上的数据库的 Shell 脚本
var=$(sqlplus -s username/pwd$@SID <<EOF
set heading on
set trimspool off
set linesize 200
set Feedback off
SET MARKUP HTML ON
spool output.htmL
SELECT * FROM V$SESSION where username='FSUSER' and PROGRAM='sql Developer' and OSUSER NOT IN ('username');
spool off;
exit;
EOF)
echo "$var" > output.txt
exit 0
但输出文件显示为 ORA 错误,手动连接在同一台服务器上正常工作,没有任何问题。
错误:ORA-12162:TNS:net 服务名称指定不正确
SP2-0306:无效选项。用法:CONN[ECT] [{logon|/|proxy} [AS]
{SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM}] [edition=value]] 其中
::= [/][@
感谢这里的任何帮助
解决方法
对于此处的文档(构造 <<EOF ... EOF
),结束标记应该是该行中唯一的字符。因此替换
EOF)
与
EOF
)
您的代码有另一个问题:$
中的 V$SESSION
被评估/解析,导致错误。使用反斜杠 V\$SESSION
或在开始标记 EOF 周围加上引号可以避免解析:
var=$(sqlplus -S /nolog << 'EOF'
....
EOF
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。