首页 > Linux操作系统 > Linux操作系统 > RAC环境中的密码文件
RAC环境中多个节点的密码文件应该保证一致,否则在以DBA权限登陆数据库的时候可能造成问题。
在客户端的SQLPLUS上执行下面的操作:
SQL> CONN SYS@TESTRAC1 AS SYSDBA输入口令: ****已连接。
SQL> CREATE USER YANGTK IDENTIFIED BY YANGTK;
用户已创建。
SQL> GRANT DBA, SYSDBA TO YANGTK;
授权成功。
SQL> CONN YANGTK/YANGTK@TESTRAC1 AS SYSDBA已连接。
SQL> CONN YANGTK/YANGTK@TESTRAC2 AS SYSDBA
ERROR:
ORA-01031: insufficient privileges
警告: 您不再连接到 ORACLE。
可以看到,授权SYSDBA的操作在实例TESTRAC1上执行,因此用户和密码被添加到节点1上的密码文件中,而这个操作没有在节点2上进行,因此,使用这个用户无法以SYSDBA权限登陆数据库。
必须在节点2的实例TESTRAC2上也进行同样的授权,确保密码文件进行了相同的修改:
SQL> CONN SYS@TESTRAC2 AS SYSDBA输入口令: ****已连接。
SQL> GRANT SYSDBA TO YANGTK;
授权成功。
SQL> CONN YANGTK/YANGTK@TESTRAC2 AS SYSDBA已连接。
同样的道理还适用于密码的修改:
SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;
INSTANCE_NAME
----------------
testrac2
SQL> ALTER USER YANGTK IDENTIFIED BY YTK;
用户已更改。
SQL> CONN YANGTK/YTK@TESTRAC2 AS SYSDBA已连接。
SQL> CONN YANGTK/YTK@TESTRAC1 AS SYSDBA
ERROR:
ORA-01017: invalid username/password; logon denied
警告: 您不再连接到 ORACLE。
SQL> CONN YANGTK/YANGTK@TESTRAC1 AS SYSDBA已连接。
例子已经足以说明问题了,这里就不再重复了。
对于RAC环境,在授权、撤销SYSDBA和SYSOPER权限的时候以及修改拥有SYSDBA和SYSOPER权限的用户密码的时候,应该在每个实例上分别进行,否则会造成密码的不一致。
当然,对于基于裸设备的RAC环境,也可以在RAC环境建立的过程中,通过MAPFILE指定用户的密码文件到裸设备上。这样,每个$ORACLE_HOME/dbs目录下的密码文件实际上就是连接,指向裸设备上的密码文件:
bash-3.00$ cd $ORACLE_HOME/dbs
bash-3.00$ ls -l orapwtradedb1
lrwxrwxrwx 1 oracle oinstall 35 Apr 18 15:25 orapwtradedb1 -> /dev/vx/rdsk/datadg/tradedb_pwdfile
如果采用了这种方法,那么就可以避免多次修改密码问题的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69303/,如需转载,请注明出处,否则将追究法律责任。