ora-01017: invalid username/password; logon denied
2025. 6. 24. 18:24ㆍ오류
환경
항목 | 설명 |
운영체제 | macOS Sequoia 15.5 |
DB 버전 | Oracle Database 21c XE (도커 이미지 gvenzl/oracle-xe:21-full) |
네트워크 | Docker Desktop |
클라이언트 | SQL Developer 24.3 / SQLcl 25.1 (JDBC Thin) |
원인으로 의심했던 리스트
- 계정·비밀번호 오타
- 대소문자 구분
- PASSWORD_VERSIONS 누락(10G 해시 없음)
- SQL Developer 설정(ROLE = SYSDBA, Thick Driver ON 등)
- ✅ 1521 포트 중복 점유 - 원인
해결 방법
1. 자신이 사용하고 있는 포트 확인 (ex 1521 )
lsof -i :1521
2. ssh 죽이기 (PID 삽입)
kill 77344
3. 잘 죽었는지 조회 후 테스트
이유
SQL Developer가 Oracle 컨테이너(리스너)로 붙으려면 호스트 포트 1521의 TCP 세션이 반드시 docker 소켓으로 전달돼야 합니다. 그런데 같은 1521 포트를 SSH도 LISTEN하고 있으면, macOS 커널은 새 SYN 패킷을 “두 소켓 가운데 아무 쪽”에 라운드-로빈으로 맡깁니다. 패킷이 docker 소켓으로 가면 TNS 핸드셰이크가 정상 진행돼 로그온이 되지만, SSH 소켓으로 빗맞으면 SSH는 오라클 프로토콜을 알아듣지 못해 즉시 FIN/RESET을 날리고 세션을 끊어 버립니다. SQL Developer 입장에선 “TCP는 열렸지만 리스너가 응답을 안 준다”→“ID/비번이 틀렸다(ORA-01017)”로 오인하게 되는 것입니다. SSH 프로세스를 kill 하여 1521 LISTEN 소켓을 하나만(docker 측)으로 만들자, 커널이 더 이상 잘못된 소켓에 연결을 배정할 가능성이 사라져 SQL Developer가 항상 Oracle 컨테이너의 리스너와 직접 TNS 핸드셰이크를 수행하게 되었고, 결국 정상적으로 접속이 가능해진 것입니다.