SQLNET.ALLOWED_LOGON_VERSION = 10 引數引起的ORA-28040故障一則:

wuweilong發表於2013-11-12

SQLNET.ALLOWED_LOGON_VERSION = 10  引數引起的ORA-28040故障一則:

環境:
Database:Oracle 11gR2 (11.2.0.3)
Applicate:tomcate+apache
connect type:jdbc6-11.2.0.1.jar

現象:
    
用jdbc來連線我的Oracle 11gR2叢集,報如下錯誤,而透過sqlplus,pl/sql,isqlplus,odbc等工具訪問沒有任何問題:

  1. error:
  2. ORA-28040: No matching authentication protocol

連結字串寫法:

  1. xxx_driver=oracle.jdbc.driver.OracleDriver
  2. xxx_dburl=jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST =(LOAD_BALANCE =yes)(ADDRESS = (PROTOCOL = TCP)(HOST = db.prudentwoo.com)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = TAF)(failover_mode=(type=select)(method=basic))))
  3. xxx_dbuser=prudent
  4. xxx_dbpwd=woo


oerr給出的解決辦法:

  1. Error: ORA-28040 (ORA-28040)
  2. Text: No matching authentication protocol
  3. ---------------------------------------------------------------------------
  4. Cause: No acceptible authentication protocol for both client and server
  5. Action: Administrator should set SQLNET_ALLOWED_LOGON_VERSION parameter
  6. on both client and servers to values that matches the minimum
  7. version supported in the system.


Metalink給出的解決辦法:
1、這是JDBC的一個bug,應用JDBC Driver Patch (6779501)
2、或者嘗試將 SQLNET.ALLOWED_LOGON_VERSION值改為9或8

問題分析:
    該引數是用來設定資料庫採取的方式所設定的一個引數,從錯誤資訊來看"沒有匹配的身份認證協議",後來我採取更換其它協議值,結果還是發生同樣的問題,無法連線。

問題排錯:
    這個時候我採用的是排他法來測試,基本上每個認證的協議數字都用了一遍,還是不行,所幸把這行引數給刪了,JDBC就能連結上資料庫了。


文件參考:

http://space.itpub.net/20674423/viewspace-776433/
http://space.itpub.net/20674423/viewspace-776432/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20674423/viewspace-776437/,如需轉載,請註明出處,否則將追究法律責任。

相關文章