大多数 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