RAC環境中的密碼檔案

yangtingkun發表於2007-06-08

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環境,在授權、撤銷SYSDBASYSOPER許可權的時候以及修改擁有SYSDBASYSOPER許可權的使用者密碼的時候,應該在每個例項上分別進行,否則會造成密碼的不一致。

當然,對於基於裸裝置的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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章