微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于连接到 solaris 服务器上的数据库的 Shell 脚本

如何解决用于连接到 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 举报,一经查实,本站将立刻删除。