
오라클 데이터베이스를 처음 접하거나, 개발 또는 운영 중에 가장 흔하게 마주치는 오류 중 하나는 ORA-01017: invalid username/password; logon denied입니다. 이 오류는 말 그대로 로그인 인증이 실패했다는 의미지만, 실제 원인은 단순한 오타부터 복잡한 보안 정책 위반까지 다양합니다. 본 글에서는 ORA-01017 오류의 핵심 개념과 발생 원인, 실전 환경에서 마주칠 수 있는 사례, 그리고 궁극적인 해결 및 예방 전략까지 깊이 있게 다루어 누구나 실무에서 이 오류를 능숙하게 대처할 수 있도록 안내합니다.
1. ORA-01017 오류란?
ORA-01017 오류는 오라클 데이터베이스에 접속을 시도할 때, 제공된 사용자 계정 또는 비밀번호가 유효하지 않을 경우 발생하는 인증 실패 오류입니다. 이 오류는 사용자 계정 정보가 틀렸거나, 접속 방식 자체가 잘못되었을 때도 발생할 수 있습니다.
오류 메시지: ORA-01017: invalid username/password; logon denied
이 오류는 단순히 ID/PW가 틀렸다는 의미를 넘어서, 접속 환경, 인증 모드, 대소문자 구분, 클라이언트 설정 등 다양한 요소와 관련이 있습니다.
2. 오류 주요 원인 정리
| 원인 유형 | 설명 | 예시 |
|---|---|---|
| 비밀번호 또는 사용자명 오타 | 가장 일반적인 입력 실수 | scott/tiger → scot/tiger |
| 대소문자 불일치 | Oracle 12c부터 비밀번호는 대소문자 구분 | Password vs password |
| 접속 권한 문제 | 사용자에게 해당 호스트에서 접속 권한이 없음 | 리모트 접속 차단 설정 |
| 외부 인증 미설정 | OS 인증 또는 LDAP 인증 사용 시 설정 누락 | CONNECT / AS SYSDBA 오류 |
| SQL*Net 설정 문제 | tnsnames.ora 또는 listener 설정 오류 | 접속 대상 SID 또는 SERVICE_NAME 불일치 |
3. 실무에서 자주 발생하는 오류 사례
3-1. SQL*Plus에서 접속 시
sqlplus scott/tiger@ORCL
비밀번호에 오타가 있는 경우 ORA-01017 오류가 발생합니다.
3-2. Oracle 12c 이후 대소문자 주의
Oracle 12c부터는 비밀번호에 대소문자 구분이 적용되어 아래와 같은 입력도 오류를 유발할 수 있습니다.
-- 계정 생성 시
CREATE USER myuser IDENTIFIED BY "Password123";
-- 접속 시
sqlplus myuser/password123@ORCL
-- 오류 발생 (대소문자 불일치)
3-3. 외부 인증 방식이 필요한 계정
sqlplus / AS SYSDBA
이 방식은 OS 인증 또는 sqlnet.ora에서 설정된 인증 정책이 적용되어 있어야 하며, 그렇지 않으면 ORA-01017 오류가 발생합니다.
4. 해결 방법 가이드
4-1. 사용자 이름과 비밀번호 확인
- 입력한 계정 이름이 정확한지 재확인
- 비밀번호는 대소문자 포함 여부 체크
- Caps Lock 키 상태 점검
4-2. SQL Developer 등에서 계정 잠금 확인
SELECT username, account_status FROM dba_users WHERE username = 'SCOTT';
계정이 LOCKED 상태이면 DBA 권한으로 해제해야 합니다.
ALTER USER scott ACCOUNT UNLOCK;
4-3. 비밀번호 초기화
비밀번호가 기억나지 않는다면 DBA 계정으로 비밀번호를 초기화합니다.
ALTER USER scott IDENTIFIED BY tiger;
4-4. 외부 인증 문제 해결
sqlnet.ora 파일에 OS 인증을 허용하도록 설정되어 있는지 확인합니다.
SQLNET.AUTHENTICATION_SERVICES = (NONE)
OS 인증을 사용할 경우 (NTS) 또는 (ALL)로 설정합니다.
4-5. JDBC 또는 애플리케이션에서의 설정
- JDBC URL 확인: SID 또는 SERVICE_NAME이 정확한지
- 인코딩 설정 (예: UTF-8 또는 EUC-KR 등)에 따른 비밀번호 오작동 여부
- Properties 객체로 전달되는 계정 정보에 오타가 없는지
5. 오류 유형과 해결 방법 요약
| 오류 유형 | 원인 | 해결 방법 |
|---|---|---|
| 입력 실수 | 사용자명 또는 비밀번호 오타 | 정확한 ID/PW 재확인 |
| 대소문자 문제 | Oracle 12c 이상에서 비밀번호 대소문자 구분 | 입력 값의 대소문자 일치 확인 |
| 계정 잠금 | 로그인 실패 반복으로 계정 LOCK | DBA 권한으로 계정 해제 |
| 외부 인증 실패 | OS 인증 또는 LDAP 미설정 | sqlnet.ora 설정 점검 |
| JDBC 설정 오류 | URL 또는 사용자 정보 불일치 | JDBC 연결 문자열 및 인코딩 확인 |
6. 예방을 위한 체크리스트
- 계정 생성 시 비밀번호 정책을 명확히 관리
- 비밀번호 저장 시 보안적 절차 따르되, 재확인 가능성 확보
- 로그인 실패 횟수 제한 정책(FAILED_LOGIN_ATTEMPTS) 확인
- sqlnet.ora와 listener.ora 파일의 인증 설정 주기적 점검
- 접속 로그 또는 감사 기능(AUDIT)을 활용한 접근 이력 관리
7. 마무리
ORA-01017 오류는 가장 흔하면서도, 다양한 원인으로 인해 해결까지 시간이 지연될 수 있는 오류입니다. 특히 실무에서는 운영 서버 접속, 애플리케이션 초기화, 배포 자동화 등 민감한 타이밍에 이 오류가 발생하면 전체 서비스에 영향을 줄 수 있습니다.
따라서 이 오류를 신속히 해결하기 위해서는 단순한 사용자 입력 실수를 넘어서, 계정 정책과 인증 설정, 접속 방식 전반에 대한 이해가 필수입니다. 본 가이드가 이러한 상황에서 빠른 판단과 정확한 조치를 위한 실질적인 참고가 되기를 바랍니다.
출처
- Oracle Database Security Guide - 공식 문서
- Oracle Dev Forum - ORA-01017 사례 모음 Oracle Community
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ORA-01722 : invalid number 오류 완전 정복 (0) | 2025.07.27 |
|---|---|
| [ORACLE] ORA-01403 오류 : 데이터 없음(No Data Found) 발생 원인과 실전 해결 방법 (0) | 2025.07.27 |
| [ORACLE] ORA-01000 : 최대 커서 수 초과 오류 해결 및 예방 가이드 (0) | 2025.07.27 |
| [ORACLE] ORA-00933 오류 해결 : SQL 명령어가 정확하지 않을 때 발생하는 핵심 원인과 대처 방법 (0) | 2025.07.27 |
| [ORACLE] ORA-00936 : 오류의 정확한 원인과 실무 적용 해결 전략 (0) | 2025.07.27 |