Oracle/Bug & Error

12c 이상 db 접근 할 때 발생되는 ORA-28040 / ORA-01017 에러 발생원인 및 해결

beom92 2023. 6. 9.

개요

11g 클라이언트에서 oracle 12c 서버로 접근할 때 해당 에러가 발생하며 접속이 불가능 합니다.

 

 

에러내용

ORA-28040 : No Matching Authentication Protocol
ORA-01017 : in invalid username/password

 

 

에러발생원인

oracle11g 에서는 SHA-1 기반의 패스워드 알고리즘 사용하며, oracle12c 이후 부터는 SHA-512 기반의 패스워드 알고리즘 이 사용됩니다.

패스워드 암호화 규칙이 12c를 기준으로 달라지므로 11g,12c 두개를 기준으로 봤을때 동일한 패스워드를 입력하여도,

*단방향 암호화로 변환시 다른 패스워드로 인식되어 접속이 불가능하여 에러가 발생됩니다.

 

* 단방향 암호화 : 일방적으로 암호화만 가능 <> 양방향 암호화 : 암호화와 복호화 둘다 가능

 

해결

$ORACLE_HOME/network/admin/sqlnet.ora 파일에 아래 내용을 추가하여 암호 인증 방식을 추가해 주시면 됩니다.

(sqlnet.ora 파일이 없으면 해당 이름으로 파일을 만들어 내용 추가해주시면 됩니다.)

SQLNET.ALLOWED_LOGON_VERSION_SERVER=n  # 유저 패스워드 방식을 서버단에서 변경을 준비
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=n    # 클라이언트 버전이 낮아도 접속을 허용

뒤의 n 값에는 아래 내용을 참조하여 입력하시면 됩니다.

 

12a : oracle12c 이후의 버전 통신규칙
12  : 2012년10월 이후 CPU 패치를 진행한 oracle11g 통신규칙(권장사항)
11  : oracle11g 통신규칙(기본)
10  : oracle10g 통신규칙
8    : oracle8i 통신규칙

 

추가 이후 db서버의 리스너를 재기동 해주시면됩니다.

$ lsnrctl reload
보통 oracle10g client를 사용하는 경우에 문제가 발생하여,  위 문제가 발생시 10으로 지정해주면 됩니다.

 

 

추가사항

위 방식으로도 사용이 가능하지만 오라클에서 권장되는 방식은 클라이언트 버전 올려서 사용하면 문제가 발생하지 않습니다.

 

 

참조

ORA-28040: No Matching Authentication Protocol and ORA-01017: invalid username/password (문서 ID 2436794.1)
The new Exclusive Mode default for password-based authentication in Oracle 12.2 conflicts with case-insensitive password configurations. All user login fails with ORA-1017 after upgrade to 12.2 (문서 ID 2075401.1)

 

 

댓글