我正在尝试使用ksh脚本连接到Oracle数据库。当我直接从提示符运行它时,它可以工作。但是当我把它放在一个脚本(abc.sh)中时,它失败了。下面是我在脚本中添加的内容(编辑后缩短):
这里abc是用户名,而abc $ 123是有权访问数据库DBNAME的用户的密码。
#!/usr/bin/ksh
sqlplus -s /nolog << EOF > output
connect abc/abc$123@DBNAME;
set echo off
set heading off
select table_name from dba_tables;
exit;
EOF
如果直接输入,但是以./abc.sh运行,则会产生错误 -
ERROR ORA-01017: invalid username/password; logon denied
我确定我错过了一些简单的东西,但无法弄清楚这一点。谢谢你的帮助。
答案 0 :(得分:2)
您不能只编写这样的代码并期望将其传递给相关程序。您的SQL行由KSH而不是您的SQL服务器执行。相反,你需要做更多的事情:
echo "SQL CODE HERE" | sqlplus ....