客戶端登入Oracle 12.2伺服器報ORA-01017的解惑
最近安裝了一套OL5.6 x86-86的Oracle 12.2.0.1單機測試庫,導完資料交給業務後,業務反饋使用PL/SQL Developer連線時報如下錯誤:
登入失敗報錯
趕緊查了查MOS,原來在預設情況下Oracle 12.2對客戶端版本有限制,主要是由sqlnet.ora中的以下兩個引數控制:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=n
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n
這兩個引數預設是11,表明預設只允許11g的客戶端進行連線,考慮到很多PC端 plsql developer用的客戶端都是10g,把這兩個引數改為10:
SQLNET.ALLOWED_LOGON_VERSION_SERVER10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT引數主要是當資料庫作為dblink的客戶端時使用,設定後無需重啟監聽和資料庫就可以生效。對於RAC,Oracle讀取的這兩個引數是在RDBMS的ORACLE_HOME裡,而不是GRID的ORACLE_HOME裡。
解決完這個問題,有些客戶端可以連線了,但是有些客戶端報:ORA-01017: invalid username/password。於是我做了一些測試,發現在10.2.0.4版本的客戶端連線會報ORA-01017,而10.2.0.5的版本可以正常連線,11.2.0.3、11.2.0.4和12.2.0.1的客戶端也都沒有問題,其它版本沒有找到相關客戶端,也就沒有測試。
這裡已經設定了10g客戶端可以連線12.2的資料庫,但為什麼10.2.0.4的客戶端還會報ORA-01017口令錯誤,而10.2.0.5客戶端就可以連線。
經過檢查,在Oracle 12c的資料庫中(其實從11g開始就有了),dba_users檢視上有個欄位是password_versions,該值情況如下:
SQL>set linesize200
SQL>column username format a15
SQL>column account_status format a18
SQL>column default_tablespace format a25
SQL>column password_versions format a20
SQL>select username,account_status,default_tablespace,created,password_versions from dba_users where username='SUXING';
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE CREATED PASSWORD_VERSIONS
-------------------------------------------------------------------------------
SUXING OPEN TBS_SU_TS_S12017-06-0621:36:1911G12C
password_versions表明當前SUXING使用者口令的認證方式是11g和12c,所以10.2.0.4客戶端連線出現了問題。那如何支援10g的認證方式呢,其實很簡單,只要確認sqlnet.ora中的SQLNET.ALLOWED_LOGON_VERSION_SERVER和SQLNET.ALLOWED_LOGON_VERSION_CLIENT已經設定為10,然後使用alert user xxx identified by xxxxxx後,PASSWORD_VERSIONS就支援10g的認證方式了,如下:
SQL>set linesize200
SQL>column username format a15
SQL>column account_status format a18
SQL>column default_tablespace format a25
SQL>column password_versions format a20
SQL>select username,account_status,default_tablespace,created,password_versions from dba_users where username='SUXING';
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPACE CREATED PASSWORD_VERSIONS
-------------------------------------------------------------------------------
SUXING OPEN TBS_SU_TS_S12017-06-0621:36:1910G11G12C
所以整個問題的過程如下:在Oracle 12c上安裝建庫並遷移資料後,由於前期未設定SQLNET.ALLOWED_LOGON_VERSION_SERVER和SQLNET.ALLOWED_LOGON_VERSION_CLIENT為10,導致建立的使用者不支援10g的口令認證方式。而修改這兩個sqlnet引數後,資料庫裡使用者的口令認證方式未發生變化,所以10.2.0.4客戶端連線不上伺服器,報ORA-01017。使用alert user xxx identified by xxxxxx修改口令後,由於sqlnet中的這兩個引數已經修改為支援10g客戶端的連線,所以dba_user中的password_versions也相應地修改為支援10g的認證方式,所以10.2.0.4版本的客戶就可以連線資料庫了。
所以當一些客戶端是10.2.0.4的應用需要注意了,如果資料庫伺服器使用資料遷移的方式升級到Oracle 12c,需要注意在Oracle 12c中使用者口令是否支援10g的認證方式,否則遷移後就報默名其妙的口令錯誤,10.2.0.5版本的客戶端測試沒有問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31392094/viewspace-2156221/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis從客戶端登入伺服器Redis客戶端伺服器
- Oracle 12.2對客戶端工具的支援說明Oracle客戶端
- 使用Oracle客戶端wallet實現匿名登入Oracle客戶端
- 構造CAS客戶端的登入Servlet客戶端Servlet
- GitHub Windows客戶端無法登入GithubWindows客戶端
- oracle 客戶端與伺服器端的關係Oracle客戶端伺服器
- vnc登入工具,好用的vnc登入工具,具體登入vnc客戶端使用教程VNC客戶端
- Oracle客戶端連線伺服器教程Oracle客戶端伺服器
- 水煮八《——客戶端以sysdba登入設定客戶端
- ORACLE12.2中使用者無法登陸報ORA-01017的解決辦法Oracle
- CAS SSO單點登入客戶端環境搭建客戶端
- RAC禁止某個客戶端登入資料庫客戶端資料庫
- 改造CAS單點登入 --- 自定義登陸頁面(客戶端)客戶端
- 客戶端使用sysdba許可權登入資料庫客戶端資料庫
- Oracle 客戶端安裝Oracle客戶端
- oracle客戶端升級Oracle客戶端
- oracle客戶端安裝Oracle客戶端
- 為oracle客戶端瘦身:Oracle客戶端
- js 客戶端與伺服器端的通訊JS客戶端伺服器
- 3.CAS SSO單點登入客戶端環境搭建客戶端
- Steam客戶端無法登入怎麼辦 新裝w10系統steam客戶端登不上去怎麼解決客戶端
- sqlplus as sysdb登入報ora-01017SQL
- 避免 ChatGPT 電腦版客戶端彈出強制登入的方法ChatGPT客戶端
- [精華][推薦]CAS SSO單點登入服務端客戶端例項服務端客戶端
- Oracle10g RAC, 客戶端登陸,偶爾報 ORA-12535, 急!Oracle客戶端
- Oracle 客戶端生成AWR方法Oracle客戶端
- aix安裝oracle客戶端AIOracle客戶端
- centos安裝oracle客戶端CentOSOracle客戶端
- Oracle 低版本客戶端連線 18c 報ORA-28040 和 ORA-01017 錯誤的解決方法Oracle客戶端
- oracle RAC的客戶端HA配置薦Oracle客戶端
- 客戶端到伺服器端的通訊過程客戶端伺服器
- SourceTree 4.1.5中文破解免登入版(Git客戶端工具)Git客戶端
- MT4客戶端通訊分析(一)——登入部分分析客戶端
- 小弟求救伺服器-客戶端程式伺服器客戶端
- ASP.NET程式單客戶端(瀏覽器)登入的實現方案ASP.NET客戶端瀏覽器
- rsync 客戶端同步的時候報錯客戶端
- Easyvision中的伺服器與客戶端伺服器客戶端
- 怎麼登入遠端伺服器 遠端登入VPS伺服器伺服器