Oracle Server 12c에 낮은 버전의 인증 프로토콜을 사용하는 Oracle Client 11g에서 접속하려고 할 경우 발생합니다.
오류 발생 조건
Oracle Server 12c 컴퓨터에 있는 sqlnet.ora내용에 SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 가 없다면 Oracle Client 11g 컴퓨터에서 sqlplus접속에서 ORA-28040오류가 발생합니다.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
해결 방법
Oracle Server 12c의 sqlnet.ora수정하기
Oracle Server 12c 컴퓨터에 있는 sqlnet.ora 내용을 다음과 같이 수정합니다.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
Oracle Client 11g에서 접속 확인하기
Oracle Client 11g에서 다음과 같이 접속했을때 ORA-28040오류는 해결 했지만 새롭게 ORA-01017: 사용자명/비밀번호가 부적합 오류가 발생했음을 확인할 수 있습니다.
C:\U>sqlplus scott/tiger@192.168.220.145/orcl
SQL*Plus: Release 11.2.0.1.0 Production on 수 12월 8 00:42:17 2021
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-01017: 사용자명/비밀번호가 부적합, 로그온할 수 없습니다.
Oracle Server 12c PASSWORD_VERSIONS 수정하기
유저 scott에 대해서 다음과 같이 현재 PASSWORD_VERSIONS ‘11G 12C’ 의 내용을 ‘ 10G 11G 12C‘로 변경합니다. 방법은 다음과 같이 SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 가 설정된 상태에서 alter user ~을 실행해서 패스워드를 재설정하면 자동으로 변경됩니다.
현재 PASSWORD_VERSIONS 값을 확인
C:\>sqlplus / as sysdba
SQL>SELECT USERNAME,ACCOUNT_STATUS,PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='SCOTT';
USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS
-------- -------------- -----------------
SCOTT OPEN 11G 12C
패스워드 재설정
SQL> alter user scott identified by tiger account unlock;
사용자가 변경되었습니다.
변경된 PASSWORD_VERSIONS 값을 확인
SQL> SELECT USERNAME,ACCOUNT_STATUS,PASSWORD_VERSIONS FROM DBA_USERS WHERE USERNAME='SCOTT';
USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS
-------- -------------- -----------------
SCOTT OPEN 10G 11G 12C