오류 : ORA-28040: No matching authentication protocol (일치하는 인증 프로토콜이 없습니다.)
오류 원인은 오라클 서버와 클라이언트 간의 인증 프로토콜 호환 문제 라고 합니다.
오라클 서버 버전이 19c이고, 접속하려는 Client 버전이 11g(11.2.0.1.0) 일 때, ORA-28040 오류가 발생했습니다.
주로 Oracle 서버 버전이 12c 이상일때, Clinet 버전이 낮으면 (11.2.0.3 미만 버전) 발생한다고 합니다.
#tns를 이용해서 sqlplus로 접속 할때 오류 발생
> sqlplus scott/tiger@ORCL19C
SQL*Plus: Release 11.2.0.1.0 Production on 수 7월 17 09:52:21 2024
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-28040: No matching authentication protocol
사용자명 입력:
#splpuls로 IP:Port/SERVICE_NAME(instance_name)으로 접속 하려는 경우도 동일 오류 발생
> sqlplus scott/tiger@192.168.10.10:1521/ORCL
ORA-28040 오류 해결 방법
1. 오라클 서버 (Oracle 19c) sqlnet.ora 설정 추가
$ vi $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 #오라클 서버에 연결 할때 허용되는 최소 인증 프로토콜 작성
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11 #클라이언트에 인증되는 최소 인증 프로토콜 작성
2. 오라클 서버 (Oracle 19c) 리스너 재기동
$ lsnrctl stop
$ lsnrctl start
3. 오라클 서버 (Oracle 19c) dba_users 테이블 PASSWORD_VERSIONS 확인 & 패스워드 재설정
오라클 서버(Oracle19c)에 sqlnet.ora 설정 추가 및 리스너를 재기동 이후 Client에서 접속하려는 계정의 패스워드를 오라클 서버(Oracle19 c)에서 변경해 주어야 한다.(동일 패스워드로 변경해도 된다.)
#sqlplus 다시 접속 시 인증 프로토콜 오류와는 다른 오류가 발생 했다.
> sqlplus scott/tiger@ORCL19C
SQL*Plus: Release 11.2.0.1.0 Production on 수 7월 17 10:25:15 2024
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
사용자명 입력:
오라클 서버(Oralce 19c) PASSWORD_VERSIONS 확인 & 패스워드 재설정
#패스워드 재설정 전 PASSWORD_VERSIONS
SQL> col username format a15
SQL> select username, PASSWORD_VERSIONS from dba_users where username in ('SYS','SCOTT') order by 1;
USERNAME PASSWORD_VERSIONS
--------------- -----------------
SCOTT 11G 12C
SYS 11G 12C
#패스워드 재설정
SQL> alter user scott identified by tiger;
User altered.
#패스워드 재설정 후 PASSWORD_VERSIONS '10G' 추가
SQL> select username, PASSWORD_VERSIONS from dba_users where username in ('SYS','SCOTT') order by 1;
USERNAME PASSWORD_VERSIONS
--------------- -----------------
SCOTT 10G 11G 12C
SYS 11G 12C
sqlplus 접속 확인 (정상)
> sqlplus scott/tiger@ORCL19C
SQL*Plus: Release 11.2.0.1.0 Production on 수 7월 17 13:26:11 2024
Copyright (c) 1982, 2010, Oracle. All rights reserved.
다음에 접속됨:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SQL> select instance_name, version, status from v$instance;
INSTANCE_NAME VERSION STATUS
--------------- --------------- ----------
ORCL 19.0.0.0.0 OPEN
PASSWORD_VERSIONS
아래 표를 참조 하면, 중요 업데이트 CPUOct2012 패치를 적용하지 않았거나 또는 Oracle Database 릴리스 11.2.0.3 이전 릴리스를 사용하는 경우 10G password version을 사용해야 한다고 설명되어 있다.
dba_users테이블에 PASSWORD_VERSIONS이 10G가 적용되면, Oracle server 보다 낮은 Client에서 (11.2.0.3 이전 버전) 정상 접속 가능하다.
Clients using releases earlier than Oracle Database release 11.2.0.3 that have not applied critical patch update CPUOct2012 or later patches must use the 10G password version.
https://docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF2010
참조 :
https://positivemh.tistory.com/789
http://www.koreaoug.org/security/7837
참고로, 개발 PC에서 오라클 클라이언트에서(SQLPlus) 접속 시 오류가 발생 되며, DB접속 툴 Dbeaver(23.0.0)에서는 Oralce JDBC Driver가 ojdbc8로 세팅되어 있는 경우는 오라클 19c 서버 접속 시 오류가 발생하지 않고 접속이 문제없다.
감사합니다.