1

我正在尝试使用 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

我确定我错过了一些简单的东西,但无法弄清楚。谢谢你的帮助。

4

1 回答 1

2

您不能只编写这样的代码并期望将其传递给相关程序。您的 SQL 行正在由 KSH 而不是您的 SQL 服务器执行。相反,您需要按照以下方式做更多的事情:

echo "SQL CODE HERE" | sqlplus ....
于 2013-11-01T10:18:54.013 回答