Oracle12C的一些小問題ORA-28040和ORA-01017

事件背景

最近數據庫全有oracle11g升級到oracle12C後,遇到了不小的問題
升級後應用的報錯ORA-28040: No matching authentication protocol

ORA-28040: No matching authentication protocol

服務端是Oracle12C
客戶端低於服務端版本

官方給出的錯誤

ORA-28040: No matching authentication protocol

Cause: No acceptible authentication protocol for both client and server

Action: Administrator should set SQLNET_ALLOWED_LOGON_VERSION parameter on both client and servers to values that matches the minimum version supported in the system.

給出的解決辦法是:

操作:管理員應將客戶端和服務器上的SQLNET_ALLOWED_LOGON_VERSION參數設置爲與系統中支持的最低版本匹配的值

解決過程

1.在$TNS_ADMIN下新建sqlnet.ora(若已存在,直接寫入或更改)

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

2.重啓監聽

lsnrctl stop && lsnrctl start
lsnrctl status

Note "

需要注意的是低版本的JDK也不無法加載Oracle12C的JDBC,所以要升級一下
$TNS_ADMIN 即tnsnames.ora所在目錄

通常同時還會出現ORA-01017

ORA-01017: invalid username/password; logon denied

使用PL/SQL或者在JDBC連接報錯中遇到ORA-01017

字面就是錯誤的用戶名或密碼
這個就逐一排查用戶名和密碼就行了

第三個原因,是因爲password version

查看password version,可以看到只有12C的

SQL> select username,password_versions from dba_users where username='TESTUSER01';

USERNAME
--------------------------------------------------------------------------------
PASSWORD_VERSIONS
-----------------
TESTUSER01
12C

解決方法

重置一下密碼

alter user testuser01 identified by testuser01;
SQL> select username,password_versions from dba_users where username='TESTUSER01';
USERNAME
--------------------------------------------------------------------------------
PASSWORD_VERSIONS
-----------------
TESTUSER01
10g 11G 12C

重新使用PL/SQL連接沒有問題

21.5.2019/V1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章