今天一位同事接到一項任務是修改數據庫SYS和SYSTEM用戶的密碼,老大在佈置任務的時候還帶了一句別忘了同步密碼文件,於是想到了自己前幾天寫的一篇博客介紹Oracle密碼文件的,當時只是寫了如何創建密碼文件,如何遠程使用SYSDBA登錄數據庫做操作,但是並沒有提到密碼文件中用戶的密碼跟數據庫中用戶的密碼是否有關係。
下面來測試一下,我用的平臺是11.2.0.4
首先修改SYS的密碼
sys@ORCL>alter user sys identified by zhaoxu; User altered. --由於11g裏dba_user視圖裏的password是空值,所以選擇user$視圖 sys@ORCL>select password from user$ where name='SYS'; PASSWORD ------------------------------------------------------------------------------------------ C53B64BC84353309 --建議remote_login_passwordfile需要爲EXCLUSIVE sys@ORCL>show parameter remote_login_passwordfile NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ remote_login_passwordfile string EXCLUSIVE
創建一個密碼文件然後測試遠程登錄
#創建一個與SYS用戶密碼相同的密碼文件 [oracle@rhel6 dbs]$ cd $ORACLE_HOME/dbs [oracle@rhel6 dbs]$ orapwd file=orapworcl entries=3 password=zhaoxu [oracle@rhel6 dbs]$ ls -l orapworcl -rw-r----- 1 oracle oinstall 1536 Dec 26 21:32 orapworcl #測試連接成功 [c:\~]$ sqlplus sys/[email protected]/orcl as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12月 26 21:34:22 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. 連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select password from user$ where name='SYS'; PASSWORD ------------------------------------------------------------ C53B64BC84353309 #密碼的HASH值沒有變化 #創建一個與SYS密碼不同的密碼文件 [oracle@rhel6 dbs]$ orapwd file=orapworcl entries=3 password=luoxi force=y [oracle@rhel6 dbs]$ ls -l orapworcl -rw-r----- 1 oracle oinstall 1536 Dec 26 21:36 orapworcl #測試連接,使用原密碼文件的密碼登錄不成功,使用新密碼文件的密碼登錄成功,但是SYS用戶的密碼HASH值仍沒有變 [c:\~]$ sqlplus sys/[email protected]/orcl as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12月 26 21:36:20 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR: ORA-01017: invalid username/password; logon denied [c:\~]$ sqlplus sys/[email protected]/orcl as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12月 26 21:36:30 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. 連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select password from user$ where name='SYS'; PASSWORD ------------------------------------------------------------ C53B64BC84353309
測試直接修改SYS用戶密碼,查看密碼文件會有什麼變化
#修改SYS密碼成功,密碼HASH值與之前不同 sys@ORCL>alter user sys identified by oracle; User altered. sys@ORCL>select password from user$ where name='SYS'; PASSWORD ------------------------------------------------------------------------------------------ 8A8F025737A9097A #查看密碼文件,在修改SYS密碼時密碼文件也有更新 [oracle@rhel6 dbs]$ ls -l orapworcl -rw-r----- 1 oracle oinstall 1536 Dec 26 21:39 orapworcl #測試遠程登錄,使用luoxi密碼已不能登錄數據庫,但修改的SYS密碼可以登錄數據庫 [c:\~]$ sqlplus sys/[email protected]/orcl as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12月 26 21:41:50 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR: ORA-01017: invalid username/password; logon denied [c:\~]$ sqlplus sys/[email protected]/orcl as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12月 26 21:41:58 2016 Copyright (c) 1982, 2013, Oracle. All rights reserved. 連接到: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
總結一下:修改SYS密碼時,會同時修改密碼文件中的密碼,保持一致;如果是手工創建的密碼文件,密碼文件中的密碼可以與SYS密碼相同也可以不同,都不影響遠程登錄。不過還是建議全SYS密碼與密碼文件中的密碼一致,以免需要急用遠程登錄時密碼反而不對,造成維護上的問題。
查詢MOS上也有相關的文檔:Password or SYS Doesn't Match the Hash Value in USER$ (文檔 ID 2139304.1)