我希望使用一个sqlplus命令,其密码从视图中隐藏,这样它就不会出现在ps -ef命令中。
我知道Internet博客上提供了很多解决方案,但是大多数解决方案似乎都需要管理员权限,因此我对该服务器的访问权限受到限制。而其他人似乎似乎对我没有用。
我当前使用的命令如下:
sqlplus -s SOME_USERNAME/SOME_PASSWORD@somedns.intra.com:1500/SOMESID @some.sql
传奇:
SOME_USERNAME:模式/用户
SOME_PASSWORD:密码
SOMESID:此数据库的SID。
@ some.sql:包含插入语句的sql文件。
非常感谢任何指针。
更新:忘了提及此sqlplus命令将在外壳程序脚本中使用。
答案 0 :(得分:5)
在这种情况下,如何从shell脚本中输入密码?
您可以使用a heredoc:
sqlplus -s /nolog <<!EOF
connect SOME_USERNAME/SOME_PASSWORD@somedns.intra.com:1500/SOMESID
@some.sql
!EOF
将connect
和@some.sql
视为SQL * Plus的输入流,就像您在交互式会话中键入它们一样,它们不属于对可执行文件的初始调用-因此连接详细信息不会出现在ps
输出中。
如果您愿意,也可以使用变量,因为变量扩展是在将流传递给可执行文件之前在shell中进行的-即使SQL * Plus无法理解说$PASSWD
,到heredoc的工作原理,并传递实际的变量值。
答案 1 :(得分:3)
使用sqlplus -s SOME_USERNAME@\"somedns.intra.com:1500/SOMESID\" @some.sql
并在命令行中输入密码。
或者使用外部身份验证,根本不使用密码
最后,SOMESID不是SID,而是服务名称。您使用的Easy Connect语法仅适用于服务名称。 SID非常古老。