当你有两个或两个以上Oracle数据库时,可能要求你指出你想登陆的数据库名称。如果你使用的SQL*Plus,你需要在同一数据库里(db1是数据库名)说明三个登录参量(用户名、密码和db_name),如下: >> sqlplus scott/tiger@db1 这存在着安全风险。为了隐藏密码(只显示星号通配符),你可以输入以下指令: >>sqlplus scott@db1 输入以上指令后按ENTER键,要求你输入密码。输入密码后,星号通配符(*)就代替了以前你输入的字符,这就是Oracleto通常处理密码的方……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
当你有两个或两个以上Oracle数据库时,可能要求你指出你想登陆的数据库名称。如果你使用的SQL*Plus,你需要在同一数据库里(db1是数据库名)说明三个登录参量(用户名、密码和db_name),如下:
>> sqlplus scott/tiger@db1 |
这存在着安全风险。为了隐藏密码(只显示星号通配符),你可以输入以下指令:
>>sqlplus scott@db1 |
输入以上指令后按ENTER键,要求你输入密码。输入密码后,星号通配符(*)就代替了以前你输入的字符,这就是Oracleto通常处理密码的方法。事实上,你是将密码隐藏了……
我已经在Oracle8企业修订版8.0.5.0.0和Oracle Server 7.3.4.0.0版本中测试了这一技巧。
读者反馈:
Michael P.:它在8.0.5.以上的版本上运行得很好。但是SQL*PLUS在其他脚本里运行得怎样呢?在这种情况下,我该怎样隐藏密码呢?
Hing M:要从OS脚本中调用SQL*Plus,目前我发现隐藏密码的唯一方法就是不使用密码,而是连接internal.。很显然这一方法有局限性,因为你必须从当地服务器开始连接。这种方法出现的问题是输出和输出不接受userid=internal。那么这种情况下有没有隐藏密码的其他窍门呢?
Phillip D:我多年都在使用hideargs覆盖隐藏指令密码。要了解更多的信息,你可以查看:
http://www.usg.edu/OIIT/support/oracle/General/Unix/HideArgs.html
我经常使用OS配置验证递规背景,而不是将密码保留在脚本里面。
作者:是的,SQL*Plus在脚本里和密码是和密码一起发出的指令。我一点也不知道如何在脚本里面隐藏密码。然而,一个工作区(如我们在Unix的环境下进行操作)就是在脚本上对相关的用户发出指令。
Denis D:假定是Unix环境,使用SQL*Plus还可以用下面的方法:
sqlplus /nolog <<EOF connect usr/pass@somewhere rem put any commands inline: select sysdate from dual; @my_batch_program quit EOF |
以上操作针对Oracle8 用户。对于旧版本,可以进行如下操作:
sqlplus <<EOF usr/pass@somewhere rem put any commands inline: select sysdate from dual; @my_batch_program quit EOF |
以上操作适用于所有Unix外壳程序。
Geoff H.:我的确喜欢Philip D的指令,但是我却不了解hidearg覆盖。我认为你隐藏密码的方法可以再细分为两种:第一种,执行’ps -ef ’观察这一过程,建议你的用户登录Unix服务器,因此为什么在Oracle帐户里不能简单地在外面识别用户身份呢?如果运行得不够好,而且他们希望能连接到更远的地方,那么就在Unix包上使用Batch用户帐号登录。如果你希望限制用户登录脚本的权限并想隐藏密码,为什么不允许用户登录SUDO,登录超级用户执行脚本呢?这些方法都能运行,整个都取决于你怎样安装。希望这些建议能对你们有所帮助。
Witold I.:我有时用另一诀窍隐藏密码,即利用我设定的环境变量。在脚本中可设定环境变量选择用户。如:
set the_password=mypass sqlplus user1/%the_password%@mydb |
事实上,我常在TKPROF脚本里面使用这种方法,但是我用sqlplus也测试了,这种方法也很管用。