ORA-28040 : 일치하는 인증 프로토콜 예외 없음


92

내 grails 프로젝트를 windows (8) 시스템의 Oracle databse ( Oracle 12c )에 연결하려고 합니다. 그러나 내 응용 프로그램을 실행할 때마다 다음과 같은 예외가 발생합니다.

Caused by: org.apache.commons.dbcp.SQLNestedException: 
Cannot create PoolableConnectionFactory (ORA-28040: 
No matching authentication protocol)

Caused by: 
java.sql.SQLException: ORA-28040: 
No matching authentication protocol

인터넷 제안에 따르면 *.ora파일 편집도 시도했지만 작동하지 않습니다.

sqlnet.ora파일 에 다음 스 니펫을 추가했습니다 .

SQLNET.ALLOWED_LOGON_VERSION=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10

여기에서 (10,11,12) 할당을 시도했지만 둘 다 작동하지 않습니다.

누구든지 이것으로 나를 도울 수 있습니까?

답변:


152

나는 ojdbc14.jar 파일을 삭제하고 대신 ojdbc6.jar을 사용했고 그것은 나를 위해 일했습니다


3
pentaho kettle에서 Oracle 12c를 연결하는 동안 동일한 문제가 발생합니다. ojdbc14.jar를 제거하고 완벽하게 작동합니다!
lourdh

17
이것이 왜 작동 해야하는지에 대한 간단한 설명 은 매우 유용 할 것입니다.
Yuriy Kravets

8
나를 위해, 내가 지속적으로 설정했기 때문에 ojdbc6.jar 또는 ojdbc7.jar 로의 변경은 여전히 ​​실패했습니다 oracle.jdbc.thinLogonCapability"="o3". 다른 사람을 도울 수 있기를 바랍니다
James Tobin

3
ojdbc14.jar을 삭제하고 ojdbc6.jar를 사용한 후에 완벽하게 작동합니다
Sam

1
수 @YuriyKravets (14)ojdbc14.jar를 및 숫자 6 에서 ojdbc6.jar은 그들이 기록 된 JDK 버전을 의미합니다. ojdbc14.jar의 매니페스트 파일 을 열면 다음과 같이 표시됩니다. Specification-Title : "JDK1.4와 함께 사용하기위한 Oracle JDBC 드라이버 클래스" 마찬가지로 ojdbc6.jar는 JDK1.6 구현을 지원합니다.
Maverick

55

다음은 전문가 교환 에서 찾은 텍스트입니다 .

버그 14575666

12.1에서는 SQLNET.ALLOWED_LOGON_VERSION 매개 변수의 기본값이 11로 업데이트되었습니다. 이는 SQLNET.ALLOWED_LOGON_VERSION 매개 변수가 이전 기본값 인 8로 설정되지 않는 한 11g 이전 JDBC 씬 드라이버를 사용하는 데이터베이스 클라이언트가 12.1 데이터베이스 서버에 인증 할 수 없음을 의미합니다.

이로 인해 DBCA를 사용한 10.2.0.5 Oracle RAC 데이터베이스 생성이 실패하고 ORA-28040 : 12.1 Oracle ASM 및 Oracle Grid Infrastructure 환경에서 일치하는 인증 프로토콜 오류가 없습니다.

해결 방법 : oracle / network / admin / sqlnet.ora 파일에서 SQLNET.ALLOWED_LOGON_VERSION = 8을 설정합니다.


참고로 : 이것은 ojdbc14.jar 파일을 삭제하지 않고 ojdbc6.jar를 사용하여 나를 위해 일했습니다
rageit

4
예, 제 경우에는 문제가 해결되었지만 다른 사용자 이름 / 암호가 잘못되었습니다. btw 나는 oracle jdeveloper 10에서 oracle 데이터베이스 12c로 연결하려고했습니다. 그래서이 해답이 될했다 stackoverflow.com/questions/14476875/... (NONE) 3) ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 4) ALTER 사용자 XX에 SQLNET.AUTHENTICATION_SERVICES) 8 2 1) 변경 SQLNET.ALLOWED_LOGON_VERSION : 마지막에 한을 IDENTIFIED BY PW (대소 문자 구분을 변경 했으므로 이제 암호를 다시 저장)
hello_earth

파티에 늦었지만이 수정 사항도 확인했습니다. 나는 있었다 8 일보다 새로운 아무것도 - 나는 JDBC (11)를 실행에도 불구하고 내 버전 = 8을 설정합니다.
Keith

원격 데이터베이스 서버를 사용하고 있으며 컴퓨터에 액세스 할 수 없습니다. SQL Developer를 사용하여 데이터베이스에 연결할 수 있지만 (오류 없음) 내 응용 프로그램 (Tomcat에 배포 됨)에서이 오류가 발생합니다. 로컬 컴퓨터에서 설정을 변경했는데 작동하지 않습니다. 서버 컴퓨터의 설정을 수정해야합니까?
Gunwant

5

ojdbc8.jar을 사용하여이 문제를 해결했습니다. Oracle 12c는 ojdbc8.jar와 호환됩니다.


5

이것은 sqlnet.ora에 다음을 추가하는 것을 제외하고

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

"ORA-01017 : 유효하지 않은 사용자 이름 / 암호; 로그온 거부"오류가 발생하면 암호를 다시 만들어야합니다.


"ORA-01017 : 잘못된 사용자 이름 / 암호; 로그온 거부"오류가 발생하면 암호를 다시 생성해야합니다. 이것은 생명의 은인이었습니다 !! 감사합니다
Thomas VC


3

나는 이클립스를 사용하고 있었고 다른 모든 답변을 시도한 후에는 작동하지 않았습니다. 결국 나를 위해 일한 ojdb7.jar것은 빌드 경로에서 맨 위로 이동하는 것이 었습니다 . 이는 여러 jar에 동일한 클래스가 충돌 할 때 발생합니다.

  1. 프로젝트 선택 Project Explorer
  2. 오른쪽 클릭 Project -> Build Path -> Configure Build Path
  3. Order and Export탭으로 이동하여 선택ojdbc.jar
  4. 버튼 TOP을 클릭 하여 맨 위로 이동

1

첨가

SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

완벽한 솔루션 sql.ora 디렉토리 .. \ product \ 12.1.0 \ dbhome_1 \ NETWORK \ ADMIN


1

아주 오래된 질문이지만 다른 사람에게 도움이 될 수있는 추가 정보를 제공합니다. 또한 동일한 오류가 발생하여 12.1.0.2 Oracle Database와 함께 ojdbc14.jar을 사용하고있었습니다. Oracle 공식 웹 페이지에서이 정보는 어떤 버전이 어떤 데이터베이스 드라이버를 지원하는지 나열되어 있습니다. 여기에 링크 가 있으며 Oracle 12c 및 Java 7 또는 8에서 올바른 버전은 ojdbc7.jar 인 것으로 보입니다.

ojdbc6.jar에서 11.2.0.4입니다.


0

내 초기 오류 : ORA-28040 : 일치하는 인증 프로토콜 예외가 없습니다.

내 DB 버전은 12.2 (Solaris)이고 클라이언트 버전은 11.2 (windows)입니다. 아래에 서버 및 클라이언트 sqlnet.ora에 추가했습니다.

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8 SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

연결하는 동안 잘못된 사용자 이름과 암호가 있으므로 데이터베이스에서 암호 (동일한 암호)를 다시 생성하여 문제가 해결되었습니다.


0

대부분의 경우 ojdbc 드라이버 jar를 교체하는 것이 해결책이 될 것이지만 제 경우는 달랐습니다.

올바른 ojdbc 드라이버를 사용하고 있다고 확신하는 경우. 실제로 생각하고있는 데이터베이스에 실제로 연결하고 있는지 다시 확인하십시오. 제 경우에는 jdbc 구성 (Tomcat / conf)이 다른 Oracle 버전을 가진 다른 데이터베이스를 가리키고있었습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.