sqlplus:sql脚本第一行的用户名/密码

时间:2014-09-20 15:12:28

标签: sql oracle sqlplus

刚刚发现SQLPLUS会将sql脚本的第一行解析为连接字符串,如果我在终端中调用sqlplus时不包含凭据,详细信息如下: 我有一个名为runme.sql的SQL脚本:

scott/tiger@//localhost:1522/orcl

select * from dual;

exit;

如果我将sqlplus调用为sqlplus @runme.sql,sqlplus可以解析第一行并连接到数据库并运行sql。如果有的话,有人能指出我的文件吗?还有什么支持这种语法的优点?

1 个答案:

答案 0 :(得分:1)

The documentation通常是一个很好的起点。如果您在命令行上提供用户名/密码,请注意warning;在提示时至少提供密码更安全,特别是在Unix类型环境中意味着凭证不会出现在ps命令的输出中。

在脚本中输入密码或用户名和密码都可以自动执行,但当然您必须确保任何不知道凭据的人都无法查看该脚本。

正如LalitKumarB在评论中指出的那样,在任何地方硬编码密码都存在安全风险。如果您以交互方式运行脚本,那么每次都会提示稍微不一致。 (与被滥用的凭证可能造成的损害以及随后恢复和/或找到新工作的不便相比,这并不是非常不方便)。如果脚本没有以交互方式运行,那么使用调度程序而不是cron。您还可以使用Oracle Wallets以获得更高的安全性,而不会造成太大的不便。

特别是关于解析第一行的查询,the documentation说:

  

如果未指定登录但指定start,则SQL * Plus假定脚本的第一行包含有效登录。

在此上下文中,“start”与在命令行上使用@提供脚本名称相同。