如何在多个Oracle数据库中更改密码?

时间:2009-12-11 19:24:18

标签: oracle passwords

是否有工具允许我在多个Oracle数据库中更改密码?

它每月到期,我想同时更改它们。

7 个答案:

答案 0 :(得分:4)

有时候,最简单的可能是最好的。使用如下所示的替换变量创建SQL * Plus脚本:

connect myuser/&&oldpass@db1;
alter user myuser identified by &&newpass replace &&oldpass;
connect myuser/&&oldpass@db2;
alter user myuser identified by &&newpass replace &&oldpass;
connect myuser/&&oldpass@db3;
alter user myuser identified by &&newpass replace &&oldpass;
-- and so forth through your list of instances

(当然,你用你的SQL * Net别名替换你的用户ID和“db1”等“myuser”。)构建脚本。运行它,输入一次旧密码和新密码,它将全部更改。每次添加或删除数据库时都需要编辑脚本,但这应该是相当罕见的。请注意,密码在运行时会在屏幕上显示。

答案 1 :(得分:3)

您可以在1个数据库中更改密码(我在几年内没有这样做 - 所以请仔细尝试 - 上次我这样做是7.3.4和8i)然后将哈希从数据库复制到数据库。这曾经工作过。所以......在数据库1中

SQL> password
Changing password for SCOTT
Old password:
New password:
Retype new password:

然后在同一个数据库中

SQL> SELECT password FROM dba_users WHERE  username='SCOTT';
PASSWORD
--------------- 
F81184D39902C27

现在转到其他数据库并在以下位置更改密码:

SQL> ALTER USER scott IDENTIFIED BY VALUES 'F81184D39902C27';
User altered.

你可以编写一个小程序来连接和修改多个。我只有11i 数据库来测试这个。

答案 2 :(得分:1)

我想说如果您必须使用相同的凭据登录到多个数据库,您应该使用其他选项(包括LDAP / Active Directory)进行身份验证。

答案 3 :(得分:1)

如果您的密码在每个数据库上都是相同的,那么您也有这个简单的unix shell脚本:

#!/bin/bash
read -p " Enter Username :" USERNAME  ; echo
read -p " Enter old Password :" -s oldpass ; echo
read -p " Enter new Password :" -s newpass ; echo
read -p " Repeat new Password :" -s newpass2 ; echo

if [ "${newpass}" = "${newpass2}" ] 
then
  sqlplus "${USERNAME}"/${oldpass}@db1  << _EOF
         connect "${USERNAME}"/${oldpass}@db1;
      alter user "${USERNAME}" identified by ${newpass} replace ${oldpass};
         connect "${USERNAME}"/${oldpass}@db2;
      alter user "${USERNAME}" identified by ${newpass} replace ${oldpass};
         connect "${USERNAME}"/${oldpass}@db3;
      alter user "${USERNAME}" identified by ${newpass} replace ${oldpass};
_EOF
else 
   echo "given new passwords did not match".
fi

希望它有所帮助。

答案 4 :(得分:0)

如果您的系统上有Oracle网格控制,则可以创建作业(在作业中,然后创建sql作业),并指定目标组(如果已定义)或手动选择要通过核对表连接的目标数据库,然后针对这些数据库运行该作业。

答案 5 :(得分:0)

我在这里找到了一个很好的实用工具:http://www.bsutils.com/PassAid.html

答案 6 :(得分:0)

您可以创建所有数据库的重复列表:

    sqlplus <username>/<oldpass>@<database>;
    alter user <username> identified by <newpass>;
    exit
    --Repeat this for as many databases as you need

OR

您可以创建所有所需数据库的表,然后为数据库创建参数。然后绘制数据库名称以使其从表中读取。