ORA-28040: No matching authentication protocol error.
위의 경우는 언제 발생이 되는지 ??
다음과 같은 경우 확실하게 에러가 납니다.
오라클 서버 버전이 최신 : 12cR1 이상
개발자 분들의 pc 클라이언트 버전 : 11gR2 이하 ( 참고로 11.2.0.4.0 버전인경우는 미해당 사항임 )
오라클 신규 버전을 설치 후 개발자 분이 오라클 접속시 ORA-28040 만나게 됩니다.
물론 java 프로그램을 이용한 솔루션에서도 에러를 만날수 있습니다.
해결안은 다음과 같이 수행이 필요 합니다.
SELECT USERNAME, PASSWORD_VERSIONS FROM DBA_USERS ;
결과값에서.. PASSWORD_VERSIONS 값을 확인 해본다.
11G 12C : 기본 값이다.
10G 11G 12C : 이런경우의 값은 언제 일까 ?
vi $ORACLE_HOME/network/admin/sqlnet.ora 파일
SQLNET.ALLOWED_LOGON_VERSION_SERVER =8 설정을 했다고 하고
반드시 리스너 재시작 한 후 --> 중요 함
유저 생성을 하게 되면 위의 처럼 PASSWORD_VERSIONS 값 : 10G 11G 12C 으로 변경 됩니다.
SQLNET.ALLOWED_LOGON_VERSION_CLIENT =8 설정은 ?
아마도 클라이언트를 위한 설정으로 보시면 됩니다.
즉 클라이언트 버전 호환을 위한 설정이겠지요.
그래서 결국 위의 설정은 쌍으로 이루어져야 클라이언트 유저간의 접속시 문제가 없을듯 합니다.
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 ## 유저 패스워드 방식을 서버단에서 변경을 준비 해 주는것이고.
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8 ## 클라이언트 버전이 낮아도 접속을 허용 해 주겠다..
전문용어로 인증 프로토콜 호환이라고 하네요.
나름 이렇게 해석을 하겠습니다. ( 틀리면 오류 수정 부탁 드립니다. )
아래건은 추가 내용 내용 입니다.
예전에 사용 했던
SQLNET.ALLOWED_LOGON_VERSION 파라미터는 12cR1 이상 부터는 사용 되지 않습니다.
SQLNET.ALLOWED_LOGON_VERSION_SERVER=n
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n
설정으로 반드시 변경 하셔야 합니다.
가장 중요한 내용인듯 하여 넣어 봅니다.
사유 : 설정시 값이 9인 경우와 8인 경우가 왜 다른지 설명이 필요 하기 때문 입니다.
O7L_MR: The ability to perform the Oracle Database 10g authentication protocol using the 12C password version.
O5L_NP: The ability to perform the Oracle Database 10g authentication protocol using the 11G password version, and generating a session key encrypted for critical patch update CPUOct2012.
O5L: The ability to perform the Oracle Database 10g authentication protocol using the 10G password version.
O4L: The ability to perform the Oracle9i database authentication protocol using the 10G password version.
O3L: The ability to perform the Oracle8i database authentication protocol using the 10G password version.
A higher ability is more recent and secure than a lower ability. Clients that are more recent have all the capabilities of the older clients.
The following table describes the allowed values, password versions, and descriptions: Value of the ALLOWED_LOGON_VERSION_SERVER Parameter Generated Password Version Ability Required of the Client Meaning for Clients 12aFoot 1 12C O7L_MR Only Oracle Database 12c release 12.1.0.2 or later clients can connect to the server. 12Foot 2 11G, 12C O5L_NP Only clients which have applied critical patch update CPUOct2012 or later, or release 11.2.0.3 clients with an equivalent update can connect to the server. 11 10G, 11G, 12C O5L Clients using Oracle Database 10g and later can connect to the server.
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. 10 10G, 11G, 12C O5L Clients using Oracle Database 10g and later can connect to the server.
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. 9 10G, 11G, 12C O4L Oracle9i Database or later clients can connect to the server. 8 10G, 11G, 12C O3L Oracle8i Database and later clients can connect to the server.
Footnote 1 This is considered "Exclusive Mode" because it excludes the use of both 10G and 11G password versions.
Footnote 2 This is considered "Exclusive Mode" because it excludes the use of the 10G password version.
Values
12a for Oracle Database 12c release 12.1.0.2 or later authentication protocols (strongest protection)
12 for the critical patch updates CPUOct2012 and later Oracle Database 11g authentication protocols (recommended)
11 for Oracle Database 11g authentication protocols (default)
10 for Oracle Database 10g authentication protocols
9 for Oracle9i Database authentication protocol
8 for Oracle8i Database authentication protocol
Default 11
Example
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
|
참고 문서
SQLNET.ALLOWED_LOGON_VERSION_CLIENT
https://docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF2010
SQLNET.ALLOWED_LOGON_VERSION_SERVER
https://docs.oracle.com/database/121/NETRF/sqlnet.htm#NETRF2016
- 12c Database Alert.log File Shows The Message: Using Deprecated SQLNET.ALLOWED_LOGON_VERSION Parameter (Doc ID 2111876.1)
- 서로 다른 오라클 버전의 클라이언트 / 서버 간의 상호 운용성 지원 매트릭스 (Doc ID 1556542.1)
- 12c and Later Releases: ORA-28040 After Upgrade: No Matching Authentication Protocol (Doc ID 1957995.1)
- Lockout of all database authenticated users getting error ORA-01017: invalid username/password; logon denied (문서 ID 2040705.1)
댓글 4
-
명품관
2020.01.30 09:26
-
Talros
2020.01.30 09:47
좋네요 과거 클라이언트를 사용 하는 사람이 생각 보다 많더라구요
-
우뽕
2024.04.19 15:14
PASSWORD_VERSIONS : VARCHAR2(12)
Shows the list of versions of the password hashes (also known as "verifiers") existing for the account.
The values for this column can include:
10G: If an old case-insensitive ORCL hash exists
11G: If a SHA-1 hash exists
12C: If a de-optimized PBKDF2-based hash exists
HTTP: If an MD5 hash (for HTTP Digest authentication) exists
For more information about the 12C verifier, see Oracle Database Concepts.
Note that any combination of these verifiers can exist for any given account.
--> Oracle recommends that you use the 12C version of the password hash.
위 내용도 중요 하여 추가 하였습니다.
추천:1 댓글
-
명품관
2024.04.19 17:26
필요한 곳에서 정리된 내용을 살펴보게 되네요~~
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
3 | DB Link 패스워드 찾기 (Find password for database link) | 우뽕 | 2023.04.05 | 809 |
» | ORA-28040 에러 제거 [4] | 우뽕 | 2020.01.29 | 11848 |
1 | TNS 정지시 패스워드지정 종료 | 우뽕 | 2020.01.17 | 987 |
좋은 내용의 글이네요....