oracle 12C以上 版本資料庫訪問 ORA-28040 ORA-03134

Haoword_wang發表於2020-08-05

隨著Oracle 12C 18C 19C 20C 的推出,很多單位已經開始升級現有的低版本資料庫,同時新上線的系統也按照部署到Oracle 19C 上,以次跟進Oracle 的軟體更新迭代。但在資料庫升級後用我們會在新版本和舊版本的回訪上開始出現問題,我們這裡主要說一下透過JDBC或者Oracle客戶端訪問資料庫的時候會出現如下報錯,

ORA-28040: No matching authentication protocol error.

ORA-03134: Connections to this server version are no longer supported error.


報錯問題,此次涉及三個引數,在12C以前的引數ALLOWED_LOGON_VERSION 及12C 開始使用的新引數ALLOWED_LOGON_VERSION_SERVER,ALLOWED_LOGON_VERSION_CLIENT。本章我們節點說明一下其中的緣由,希望可以為大家解惑!


低版本的資料庫(11G及以下)的JDBC或者客戶端訪問高版本的資料庫(12C及以上)報錯資訊

ORA-28040: No matching authentication protocol error

ORA-03134: Connections to this server version are no longer supported


原因:

我們先引入引數:

SQLNET.ALLOWED_LOGON_VERSION=9

該引數是在Oracle 下的Oracle_HOME/network/admin/sqlnet.ora 檔案中調整。

該引數在這裡的意思是authentication protocol 版本9及以上將允許登入。上述引數允許9i、10g和11G版本訪問資料庫。資料庫版本如果是8i 就會報如下錯誤“ ORA-28040: No matching authentication”。

如果我們選擇了SQLNET.ALLOWED_LOGON_VERSION = 10,意思允許10g和11g版本訪問資料庫,9i和8i版訪問將失敗。



在Oracle資料庫12c中不在使用ALLOWED_LOGON_VERSION引數,改為兩個新的Oracle Net服務引數:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=n

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n

Oracle 官方文件對該引數的解釋分別是:

To set the minimum authentication protocol allowed when connecting to Oracle Database instances.

To set the minimum authentication protocol allowed for clients, and when a server is acting as a client, such as connecting over a database link, when connecting to Oracle Database instances.


在 12.1版本中,新引數的預設設定是11。任何試圖連線的客戶端都必須是11G 及以上,除非在伺服器端sqlnet中顯式設定了這些引數,否則應該使用version 11或更高版本。


在 12.2版本,SQLNET的預設值ALLOWED_LOGON_VERSION_SERVER設定在12.2中從11更改為12。如果您的客戶端不超過11.2.0.3或包含CPUOCT2012補丁,這就是我們把資料庫升級到12C,大家高頻率出現該問題的原因。

注意:建議該引數調整成8或者9等滿足當前環境的最低版本號

注意:SQLNET.ORA 檔案下,當資料庫充當客戶端時,伺服器上需要使用ALLOWED_LOGON_VERSION_CLIENT。比如在dblink的使用情況下。在此更改之後,我們不需要重新啟動偵聽器或資料庫。

具體說明如下連結:


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

相關文章