![如何从脚本中使用 Oracle 的工具?](https://linux22.com/image/498748/%E5%A6%82%E4%BD%95%E4%BB%8E%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%20Oracle%20%E7%9A%84%E5%B7%A5%E5%85%B7%EF%BC%9F.png)
大多数 Oracle 工具和脚本都要求您通过命令行向其传递密码 - 同一台计算机上的每个人都可以看到它们。例如:
exp <user>/<password> ...
有没有办法从脚本调用这些命令(如sqlplus
,,imp
)而不损害安全性?exp
答案1
对于 imp 和 exp,您可以在文件中提供参数。您可以在文件系统中更改此文件的权限,使其仅由您选择的人员可读。查看 PARFILE 命令行选项的文档。您想要包含在 PARFILE 中的选项是 USERID 选项。
对于 SQLPLUS,您可以指定 /nolog 选项并提供连接命令作为您正在执行的 sql 脚本的第一行。
sqlplus /nolog @myscript.sql
然后在 myscript.sql 中:
connect user/pass@tnsname
...
对于 SQLPlus,我通常建议创建一个文件或使用“此处”文档,这样您就可以保护用户名/密码不被 Unix/Linux 中的“ps -ef”命令查看。如果用户名/密码包含在脚本文件或 sql 文件中,您可以使用适当的用户/组读取权限进行保护。然后,您可以在 shell 脚本中将用户/密码保留在文件中,如下所示:
sqlplus -s /nolog <<EOF
connect user/pass
select blah from blah;
quit
EOF