客戶端登入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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlplus as sysdb登入報ora-01017SQL
- oracle windows sqlplus ora-01017 登入被拒絕OracleWindowsSQL
- vnc登入工具,好用的vnc登入工具,具體登入vnc客戶端使用教程VNC客戶端
- 使用PLSQL客戶端登入ORACLE時報ORA-12502和ORA-12545錯誤的解決方案SQL客戶端Oracle
- Oracle 低版本客戶端連線 18c 報ORA-28040 和 ORA-01017 錯誤的解決方法Oracle客戶端
- Oracle 客戶端安裝Oracle客戶端
- CAS SSO單點登入客戶端環境搭建客戶端
- Oracle 客戶端生成AWR方法Oracle客戶端
- aix安裝oracle客戶端AIOracle客戶端
- 19c登入pdb密碼報錯ORA-01017密碼
- 低版本客戶端連線高版本資料庫報錯ORA-28040、ORA-01017客戶端資料庫
- windows oracle11g資料庫使用sqlplus登入的時候出現ora-01017報錯WindowsOracle資料庫SQL
- library官網登入入口,zlibrary中文網及客戶端/app客戶端APP
- 3.CAS SSO單點登入客戶端環境搭建客戶端
- Steam客戶端無法登入怎麼辦 新裝w10系統steam客戶端登不上去怎麼解決客戶端
- 避免 ChatGPT 電腦版客戶端彈出強制登入的方法ChatGPT客戶端
- Easyvision中的伺服器與客戶端伺服器客戶端
- 怎麼登入遠端伺服器 遠端登入VPS伺服器伺服器
- linux簡易 Oracle客戶端安裝LinuxOracle客戶端
- 使用11g客戶端或pl/sql developer連線高版本Oracle 19c ORA-28040 ORA-01017客戶端SQLDeveloperOracle
- SourceTree 4.1.5中文破解免登入版(Git客戶端工具)Git客戶端
- 用AnySQL在沒有oracle客戶端的伺服器上傳送郵件SQLOracle客戶端伺服器
- 「Oracle」客戶端 PL/SQL DEVELOPER 安裝使用Oracle客戶端SQLDeveloper
- CAS SSO單點登入客戶端環境搭建之框架深度分析客戶端框架
- Redis 6.0 客戶端快取的伺服器端實現Redis客戶端快取伺服器
- MQTT伺服器搭建服務端和客戶端MQQT伺服器服務端客戶端
- 客戶端登陸logout操作,事務回滾客戶端Go
- MySQL:客戶端匯入資料Terminal close -- query aborted報錯MySql客戶端
- 客戶端 post ,get 訪問伺服器客戶端伺服器
- ORA-21561 OID generation failed [Ubuntu 16.04下Oracle客戶端連線伺服器]AIUbuntuOracle客戶端伺服器
- PC客戶端Winform掃描微信二維碼登入網站Navite客戶端ORM網站Vite
- 關於CAS SSO單點登入客戶端環境搭建原始碼分析客戶端原始碼
- 4.1.7.2.5 與快速應用程式通知整合的Oracle客戶端Oracle客戶端
- 在不安裝oracle客戶端的情況下,使用PLSQLOracle客戶端SQL
- Linux下簡單的ACE socket客戶端和伺服器端Linux客戶端伺服器
- oracle11g客戶端靜默安裝Oracle客戶端
- CentOS7.1安裝Oracle 12.1客戶端以及cx_OracleCentOSOracle客戶端
- UE 客戶端和伺服器上的時間同步客戶端伺服器