在外壳程序脚本中连接到sqlplus并使用单独的密码运行SQL脚本

时间:2018-07-30 09:18:59

标签: sql shell sqlplus

我正在用Jenkins编写一个Shell脚本,该脚本登录数据库并运行一个sql文件。所有命令都记录到控制台,因此,如果我对sqlplus(sqlplus -s $USERNAME/$PASSWORD@connectionstring)使用简单的登录方法,则会记录密码,这是不理想的。

这有效:

sqlplus -S ${USERNAME}/${PASSWORD}@connectionstring @sql_update.sql

但是一旦替换了值,登录Jenkins就会显示命令:

 + sqlplus user123/pass123@connectionstring @sql_update.sql

为避免记录密码,我尝试使用sqlplus登录方法,您只需提供用户名,然后要求输入密码。 我已经尝试了以下方法,但是得到ORA-01-17: invalid username/password; logon denied

sqlplus -s ${USERNAME}@\"connectionstring\" <<EOF
${PASSWORD}
sql_update.sql
exit
EOF

这显然有什么问题吗?

值得注意的是,仅禁用控制台日志记录是不可行的,因为脚本中的其他内容需要它。

此外,此问题与Connect to sqlplus in a shell script and run SQL scripts之间的区别是我要询问是否分别提供密码。

编辑,感谢Echo off in Jenkins Console Output,我设法部分解决了该问题。现在,我的脚本在运行命令之前包含set +x,这会隐藏命令。但是,我仍然想知道上面的问题是什么,所以现在暂时不提这个问题。

0 个答案:

没有答案