RAC环境中的密码文件

RAC环境中多个节点的密码文件应该保证一致,否则在以DBA权限登陆数据库的时候可能造成问题。

ITPUB个人空间;o \1}@c7lMdk

在客户端的SQLPLUS上执行下面的操作:

SQL> CONN SYS@TESTRAC1 AS SYSDBA输入口令: ****已连接。
1YXJ/O2y(a5w0SQL> CREATE USER YANGTK IDENTIFIED BY YANGTK;

用户已创建。

SQL> GRANT DBA, SYSDBA TO YANGTK;

授权成功。

SQL> CONN YANGTK/YANGTK@TESTRAC1 AS SYSDBA已连接。ITPUB个人空间:iU/Esw
SQL> CONN YANGTK/YANGTK@TESTRAC2 AS SYSDBAITPUB个人空间z-MI4NQGML)cuF
ERROR:ITPUB个人空间!i D'W,n8FeB X
ORA-01031: insufficient privileges

警告: 您不再连接到 ORACLE

可以看到,授权SYSDBA的操作在实例TESTRAC1上执行,因此用户和密码被添加到节点1上的密码文件中,而这个操作没有在节点2上进行,因此,使用这个用户无法以SYSDBA权限登陆数据库。

必须在节点2的实例TESTRAC2上也进行同样的授权,确保密码文件进行了相同的修改:

SQL> CONN SYS@TESTRAC2 AS SYSDBA输入口令: ****已连接。ITPUB个人空间PCL$Fx6kl-U+o
SQL> GRANT SYSDBA TO YANGTK;

授权成功。

SQL> CONN YANGTK/YANGTK@TESTRAC2 AS SYSDBA已连接。

同样的道理还适用于密码的修改:

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAMEITPUB个人空间x#H|"c&Z5XzF
----------------
,t q&Y+JQ`3o2Z0testrac2

SQL> ALTER USER YANGTK IDENTIFIED BY YTK;

用户已更改。

SQL> CONN YANGTK/YTK@TESTRAC2 AS SYSDBA已连接。
r/kz1t"IC0SQL> CONN YANGTK/YTK@TESTRAC1 AS SYSDBAITPUB个人空间'B0]Yn(Q)Z:m
ERROR:ITPUB个人空间9O[K6gpg4cKT"OO `
ORA-01017: invalid username/password; logon denied

警告: 您不再连接到 ORACLE
r*H:k#pf4XaI5cJ`0SQL> CONN YANGTK/YANGTK@TESTRAC1 AS SYSDBA
已连接。

例子已经足以说明问题了,这里就不再重复了。

对于RAC环境,在授权、撤销SYSDBASYSOPER权限的时候以及修改拥有SYSDBASYSOPER权限的用户密码的时候,应该在每个实例上分别进行,否则会造成密码的不一致。

当然,对于基于裸设备的RAC环境,也可以在RAC环境建立的过程中,通过MAPFILE指定用户的密码文件到裸设备上。这样,每个$ORACLE_HOME/dbs目录下的密码文件实际上就是连接,指向裸设备上的密码文件:

bash-3.00$ cd $ORACLE_HOME/dbsITPUB个人空间K \AWJS8h
bash-3.00$ ls -l orapwtradedb1
N"l%Ayo0lrwxrwxrwx 1 oracle oinstall 35 Apr 18 15:25 orapwtradedb1 -> /dev/vx/rdsk/datadg/tradedb_pwdfile

如果采用了这种方法,那么就可以避免多次修改密码问题的。

请使用浏览器的分享功能分享到微信等