大多数Oracle工具和脚本要求您通过命令行向其传递密码 – 同一台计算机上的每个人都可以看到它们。 例:
exp <user>/<password> ...
有没有办法从脚本中调用这些命令(如sqlplus , imp , exp )而不危及安全性?
imp和exp可以在一个文件中提供参数。 您可以在文件系统中更改此文件的权限,使其只能由您select的人阅读。 检查PARFILE命令行选项的文档。 您将要包含在PARFILE中的选项是USERID选项。
对于SQLPLUS,您可以指定/ nolog选项并提供连接命令作为正在执行的sql脚本的第一行。
sqlplus /nolog @myscript.sql
然后在myscript.sql中:
connect user/pass@tnsname ...
对于SQLPlus,我通常build议创build一个文件或使用“here”文件,这样可以在Unix / Linux中使用“ps -ef”命令保护用户名/密码不被查看。 如果用户名/密码包含在脚本文件或sql文件中,则可以使用适当的用户/组读取权限进行保护。 然后你可以在shell脚本中像这样保持用户/文件的内部:
sqlplus -s /nolog <<EOF connect user/pass select blah from blah; quit EOF
您可以使用“外部标识”在操作系统级别进行身份validation。
请参阅: 高级安全pipe理员指南
了解详情。