오라클 19c로 업그레이드한 후에 발생하는 ORA-12638에러 메시지에 대한 원인과 조치방법입니다.
1. ORA-12638 오류 개요
ORA-12638 (Credential Retrieval Failed) 오류는 Oracle 클라이언트가 서버와 통신할 때 인증 정보(Credential)를 가져오지 못했을 때 발생합니다.
주로 Windows 환경에서 Oracle을 사용할 때 발생하며, SQL*Net 설정에서 인증 관련 옵션 불일치가 주요 원인입니다.
2. 발생 원인
Oracle 19.10.0 이후 버전에서는 보안 강화를 위해 NTLM (NT LAN Manager) 인증 방식이 기본적으로 비활성화되었습니다.
즉, Windows 인증을 사용하는 Oracle 클라이언트가 NTLM 인증을 시도하면, 인증 실패(credential retrieval failed)로 인해 ORA-12638 오류가 발생할 수 있습니다.
주요 원인:
- NTLM 인증 비활성화
- Oracle 19.10.0부터 SQLNET.NO_NTLM=TRUE가 기본값으로 설정되었음
- 이 설정으로 인해 NTLM 인증을 지원하지 않음 → 인증 정보 가져오기 실패 → ORA-12638 오류 발생
- Windows 클라이언트에서 OS 인증을 사용할 때
- Windows 사용자 인증(NTLM)을 통해 Oracle DB에 접속하는 경우에도 동일한 문제 발생 가능
- sqlnet.ora 파일에서 인증 설정 불일치
- 클라이언트와 서버 간의 sqlnet.ora 설정이 다를 경우 발생할 수 있음
3. 해결 방법
방법 1: SQLNET.NO_NTLM=FALSE 설정
Oracle에서 NTLM 인증을 다시 활성화하면 문제를 해결할 수 있습니다.
설정 방법:
- sqlnet.ora 파일 수정
- sqlnet.ora 파일의 위치는 보통 다음과 같습니다.또는
- $ORACLE_HOME/network/admin/sqlnet.ora (Linux 환경)
- C:\Oracle\product\19.0.0\client_1\network\admin\sqlnet.ora
- 텍스트 편집기로 sqlnet.ora 파일을 열고 다음 내용을 추가하거나 수정합니다.
- SQLNET.NO_NTLM=FALSE
- Oracle 클라이언트 및 리스너 재시작
- sqlnet.ora 파일을 저장한 후, Oracle 클라이언트 및 리스너(listener) 서비스를 재시작합니다.
- Windows 환경에서 실행 중이라면 Oracle 서비스를 다시 시작합니다.
방법 2: SQLNET.AUTHENTICATION_SERVICES 설정 변경
SQLNET.AUTHENTICATION_SERVICES 값을 NONE으로 변경하면 OS 인증을 사용하지 않고 기본 Oracle 인증을 사용하도록 설정할 수 있습니다.
- sqlnet.ora 파일 수정또는
- SQLNET.AUTHENTICATION_SERVICES = (ALL)
- SQLNET.AUTHENTICATION_SERVICES = (NONE)
- Oracle 클라이언트 및 리스너 재시작
- 위 설정을 변경한 후 Oracle 서비스를 다시 시작합니다.
방법 3: Windows 인증을 사용하지 않는 계정으로 접속
Windows 계정이 아닌 Oracle 사용자 계정 (예: SYSTEM, SCOTT 등)을 사용하여 로그인하면 해당 오류를 우회할 수도 있습니다.
sqlplus scott/tiger@orcl
또는
sqlplus system/password@orcl
4. 추가 참고 사항
- SQLNET.NO_NTLM 설정은 Oracle 보안 정책과 관련이 있으므로, 회사 정책이나 보안 요구사항을 고려하여 변경해야 합니다.
- Oracle 19.10.0 이후 버전에서 기본값이 TRUE로 설정된 이유는 보안 강화 때문이며, FALSE로 변경하면 보안성이 일부 낮아질 수 있습니다.
- 만약 SQLNET.NO_NTLM=FALSE 설정을 해도 문제가 해결되지 않는다면 sqlnet.ora 파일의 다른 설정도 확인해야 합니다.
5. 결론
Oracle 19.10.0에서 ORA-12638 오류는 NTLM 인증 비활성화로 인해 발생하며, 이를 해결하기 위해 sqlnet.ora 파일에서
SQLNET.NO_NTLM=FALSE 로 변경하는 것이 가장 효과적인 방법입니다.
추가적으로 SQLNET.AUTHENTICATION_SERVICES 설정을 변경하거나 Windows 인증 대신 Oracle 계정을 직접 사용하는 방법도 고려할 수 있습니다.