天天看點

shell 擷取ora報錯資訊_關于Oracle12c連接配接認證協定問題--ORA-28040概述思路:解決辦法:

概述

當資料庫更新到12c後,有些功能的改變可能影響到原應用的可用性,如資料庫更新12c後原來的10G或更老的用戶端或10g或更老的JDBC 驅動連接配接資料庫時失敗,因為安全認證協定不符合,導緻ORA-28040錯誤的發生,提示下面的錯誤資訊:

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

報錯截圖:

shell 擷取ora報錯資訊_關于Oracle12c連接配接認證協定問題--ORA-28040概述思路:解決辦法:

思路:

ORACLE 12C R2中預設的認證協定是12, 即便是sqlnet.ora檔案不存在預設值同樣生效,12是一種區分大小寫密碼的認證,是一種新的認證協定,解決辦法是建立或在現有的sqlnet.ora檔案中增加參數sqlnet.allowed_logon_version_server,在12c以前的版本中解決方法同樣也是在sqlnet.ora檔案增加參數SQLNET.ALLOWED_LOGON_VERSION, 該參數在12c中以被sqlnet.allowed_logon_version_server 和sqlnet.allowed_logon_version_client替代, 如果在12c中配置了SQLNET.ALLOWED_LOGON_VERSION,會在DB ALERT 中出現“Using deprecated SQLNET.ALLOWED_LOGON_VERSION parameter”提示。

資料庫的認證協定并不是資料庫軟體的版本, 對應的是dba_users.password_versions的值

使用下面的sql确認:

SELECT USERNAME, PASSWORD_VERSIONS FROM DBA_USERS ORDER BY 1;
           
shell 擷取ora報錯資訊_關于Oracle12c連接配接認證協定問題--ORA-28040概述思路:解決辦法:

在11g中的密碼版本10g和11g組合, 12c中密碼版本是11g, 12c的組合,如果想使用10g的密碼版本登入12.2資料庫需要修改sqlnet.allowed_logon_version_server 到11或更低的值。sqlnet.allowed_logon_version_server 和sqlnet.allowed_logon_version_client配置的值是最小認證版本的值,如資料庫是12c, sqlnet.allowed_logon_version_server=10, 那10g,11g,12c的client都可以通路,包含10g對應的JDBC驅動包。 sqlnet.allowed_logon_version_server是配置在資料庫伺服器(被通路端)的DB $ORACLE_HOME的sqlnet.ora(不是GI HOME),在12.2版本有效值應該是8,9,10,11,12,12A,當ALLOWED_LOGON_VERSION_SERVER的值設為12時,隻有已經應用了關鍵更新檔更新CPUOct2012或更高版本的用戶端,或者具有等同更新的11.2.0.3用戶端版本才能連接配接到伺服器。

解決辦法:

前置條件:已安裝Oracle11g用戶端,配置好環境變量,用PL/SQL Developer登入資料庫

1、在oracle 12C伺服器端$oracle_home/network/admin目錄下 建立檔案sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11
           
shell 擷取ora報錯資訊_關于Oracle12c連接配接認證協定問題--ORA-28040概述思路:解決辦法:

2、在伺服器端,管理者身份登入,修改密碼

 sqlplus / as sysdba alter session set container=服務名; alter user 服務名 identified by 密碼;
           

注意:配置完伺服器端的sqlnet.ora檔案後,務必要重新修改密碼,否則仍登入失敗

shell 擷取ora報錯資訊_關于Oracle12c連接配接認證協定問題--ORA-28040概述思路:解決辦法:

覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注下~

shell 擷取ora報錯資訊_關于Oracle12c連接配接認證協定問題--ORA-28040概述思路:解決辦法: