Stories

Detail Return Return

Oracle如何修改賬號密碼版本? - Stories Detail

密碼版本的概念

什麼是Oracle的密碼版本(Password Version)呢? 這裏所説的密碼版本(Password Version) 術語指的是身份驗證協議的版本,而不是Oracle Database的版本.雖然它看起來像數據庫版本一樣,實際意義並不相同.一般不同的密碼版本對應不同密碼哈希算法,需通過配置參數和重置用户密碼實現.

sqlnet文件中的參數allowed_logon_version_server可以設置如下值:

  • 12a: for Oracle Database 12c release 12.1.0.2 or later authentication protocols (strongest protection)

  • 12: for Oracle Database 12c release 12.1 authentication protocols (default and recommended value)

  • 11: for Oracle Database 11g authentication protocols

  • 10: for Oracle Database 10g authentication protocols

  • 9: for Oracle9i Database authentication protocol

  • 8: for Oracle8i Database authentication protocol

Oracle數據庫密碼版本用於控制服務器接受的客户端連接的最低版本。這個參數的值代表了不同的客户端認證版本,每個數字代表一個特定的認證協議版本。服務器在身份驗證特定賬户所需的密碼版本方面也更具限制性。客户端是否能夠身份驗證特定賬户取決於服務器的SQLNET.ALLOWED_LOGON_VERSION_SERVER參數設置,以及指定賬户存在的密碼版本。密碼版本的列表可以在 DBA_USERS.PASSWORD_VERSIONS 中看到。

ALLOWED_LOGON_VERSION_SERVER參數值 密碼版本 客户端要求 客户端版本要求 Exclusive Mode
12a 12C O7L_MR Oracle 12c release 1 (12.1.0.2) client或後面版本才能連接數據庫 Yes
12 11G,12C O5L_NP Oracle 11g release 2 (11.2.0.3) client或後續版本才能連接數據庫 Yes
11 10G,11G,12C O5L 使用 Oracle Database 10g 及更高版本的客户端可以連接到服務器,使用早於 Oracle Database 11.2.0.3 版本且未應用關鍵補丁更新 CPUOct2012 或更高版本補丁的客户端必須使用 10G 密碼版本。 No
10 10G,11G,12C O5L 同上一行 No
9 10G,11G,12C O4L 同上一行 No
8 10G,11G,12C O3L 同上一行 No

設置連接到Oracle 數據庫時允許的最低身份驗證協議,有些版本協議有排他模式(Exclusive Mode),不允許低版本的客户端連接到數據庫,此時可能會報下面錯誤:

– ORA-28040: No matching authentication protocol error 
– ORA-03134: Connections to this server version are no longer supported

如果沒有sqlnet.ora或sqlnet.ora中沒有設置參數allowed_logon_version_server, 這個參數有沒有默認值呢? 答案是有, 從Oracle 12.2這個版本開始,參數allowed_logon_version_server的默認值是12.

查看密碼版本

查看數據庫用户的密碼版本可以使用下面SQL:

SET LINESIZE 720
COL USERNAME FOR A30
SELECT USERNAME,PASSWORD_VERSIONS,ACCOUNT_STATUS FROM DBA_USERS ORDER BY USERNAME;

修改密碼版本

沒有直接的命令修改Oracle賬號的密碼版本,密碼版本取決於sqlnet.ora中的參數SQLNET.ALLOWED_LOGON_VERSION_SERVER, 如果數據庫遷移或一些需求,需要你修改數據庫
密碼版本,你可以按照下面步驟修改.

步驟1: 修改$ORACLE_HOME/network/admin下的sqlnet.ora參數文件

---For Generating all Password Versions 10G, 11G and 12c
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 or 9 or 10 or 11

---For Generating the 11G and 12c password Versions
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12

---For Generate only 12c Password Versions
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a

具體選擇哪一個密碼版本,取決於你的具體需求.具體參考上面的表格.

步驟2: 重新修改賬號密碼

ALTER USER xxxx IDENTIFIED BY '*******';

如果使用賬號的原始密碼,也要執行上面SQL

步驟3: 檢查驗證賬號的密碼版本

SET LINESIZE 720
COL USERNAME FOR A30
SELECT USERNAME,PASSWORD_VERSIONS,ACCOUNT_STATUS FROM DBA_USERS ORDER BY USERNAME;

參考資料

https://docs.oracle.com/en/database/oracle/oracle-database/18/spmsu/finding-and-resetting-user-passwords-10g-password-version.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/parameters-for-the-sqlnet.ora.html#GUID-B2908ADF-0973-44A9-9B34-587A3D605BED

user avatar yuezhang_5e5e7da0beeea Avatar 1810739137qq Avatar zdyz Avatar
Favorites 3 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.