카테고리 없음

Oracle DB 오류 ORA-12541: TNS:no listener 해결 방법

트티 2025. 4. 24. 08:00

Oracle DB 오류 ORA-12541: TNS:no listener 해결 방법

개발 중 Oracle 데이터베이스에 접속하려다 아래와 같은 오류 메시지를 마주친 적 있나요?

ORA-12541: TNS:no listener

처음 보는 이 오류 메시지에 당황하셨을 수도 있고, 리스너가 뭘 의미하는지도 모르고 검색만 수십 번 했던 기억이 떠오를지도 몰라요. 이 오류는 꽤 흔하게 발생하지만, 원인과 해결 방법을 제대로 알면 금방 해결할 수 있는 문제입니다. 오늘은 이 오류의 정확한 원인과 실제 경험을 바탕으로 한 해결 팁을 자세히 소개해드릴게요.

목차

📌 리스너란 무엇인가요?

Oracle DB에서 리스너(listener)는 외부 클라이언트가 데이터베이스에 접속할 수 있도록 중간 다리 역할을 하는 서버 프로세스입니다. 클라이언트가 접속 요청을 보낼 때, 리스너가 해당 요청을 받아서 적절한 DB 인스턴스로 연결해주는 거죠.

즉, 리스너가 없으면 클라이언트는 오라클 DB에 접속할 수 없게 되며, 이때 나타나는 대표적인 오류가 바로 ORA-12541: TNS:no listener입니다.

📌 ORA-12541 오류가 발생하는 이유

이 오류는 리스너 프로세스가 작동하지 않거나, 클라이언트가 잘못된 호스트 또는 포트 정보를 가지고 접속을 시도할 때 발생합니다. 주요 원인은 다음과 같습니다:

  • 리스너가 실행되고 있지 않음: 리스너 서비스가 중지된 상태에서 접속을 시도할 경우
  • 포트 번호 또는 호스트명이 잘못됨: tnsnames.ora 또는 접속 URI의 포트 정보가 틀린 경우
  • 방화벽 또는 네트워크 설정 이슈: 외부 접속이 방화벽에 의해 차단되는 경우
  • 서버가 다중 인스턴스를 사용하는데, 리스너가 그 인스턴스를 인식하지 못할 경우

📌 오류 해결을 위한 실전 가이드

아래는 실제 현장에서 자주 사용하는 해결 방법입니다. 단계별로 따라 해보세요.

1. 리스너 상태 확인

가장 먼저 해야 할 일은 리스너가 실행되고 있는지 확인하는 것입니다. 터미널에서 아래 명령어를 입력해보세요.

lsnrctl status

리스너가 작동 중이면 서비스 상태가 표시됩니다. 만약 리스너가 꺼져 있다면 다음 명령어로 시작할 수 있습니다.

lsnrctl start

2. tnsnames.ora 설정 확인

접속하려는 클라이언트의 tnsnames.ora 파일을 열어 HOSTPORT 정보가 정확한지 확인하세요. 예시:

ORCL = (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl))
)

주의: 호스트명이 잘못되었거나 포트 번호가 다를 경우에도 오류가 발생합니다.

3. 방화벽 설정 점검

서버 환경에서는 1521 포트가 열려 있는지 확인하세요. 클라이언트가 서버에 접속할 수 없도록 방화벽이 막고 있다면, 아무리 설정이 잘 되어 있어도 접속에 실패하게 됩니다.

4. 리스너 설정 파일 확인 (listener.ora)

$ORACLE_HOME/network/admin/listener.ora 경로에 있는 파일을 열어, DB 인스턴스와 연결 정보가 잘 기입되어 있는지 점검합니다.

5. 시스템 재시작

모든 설정을 확인하고도 문제가 해결되지 않는다면, DB 인스턴스와 리스너를 순차적으로 재시작하는 것이 도움이 될 수 있습니다.

📌 실제 경험 기반 팁 & 자주 놓치는 실수

제가 직접 겪었던 사례 하나를 소개할게요. 새로 구축한 로컬 Oracle 19c DB에서 SQL Developer로 접속을 시도했는데, 계속 ORA-12541 오류가 났습니다. 문제는 단순했습니다. 리스너가 아예 시작되지 않았던 거죠.

터미널에서 lsnrctl start 한 번으로 해결됐지만, 하루 종일 설정 파일만 붙잡고 있었던 기억이 납니다. 그리고 한 번은 listener.ora 파일에 오타가 있었던 것도 비슷한 오류를 유발했어요. HOSTHOSTT로 잘못 쓴 사소한 실수가 큰 시간 낭비로 이어졌죠.

실제 사례에서 배우는 가장 중요한 교훈은 이겁니다:

오류 메시지가 어렵더라도, 기본적인 확인부터 차근차근 하자. 리스너부터 점검하는 것이 가장 빠른 해결책!

📌 더 많은 경험과 실용적인 팁

ORA-12541 오류를 여러 번 겪다 보니, 이제는 어떤 경우에 이 오류가 나올지 감이 생기곤 해요. 하지만 처음 겪는 사람에게는 당황스럽고, 어디서부터 봐야 할지 막막할 수 있죠. 그래서 아래에 제가 직접 겪거나 커뮤니티에서 자주 본 문제 상황과 그에 대한 해결 팁을 정리해봤어요.

1. 윈도우 환경에서 OracleListener 서비스 확인

Windows에서는 리스너가 서비스 형태로 동작합니다. 오류가 날 경우, '서비스' 앱을 열고 'OracleOraDB...TNSListener'로 시작하는 항목이 실행 중인지 확인하세요.

services.msc → OracleListener 찾아서 시작 또는 재시작

아무 설정을 바꾸지 않았는데도 오류가 난다면, 이 서비스가 자동으로 꺼진 경우가 많습니다. 저도 PC 재부팅 후 이게 자동으로 시작되지 않아, 매번 수동으로 켜준 적이 있어요.

2. 포트 충돌 확인

다른 프로그램(예: Tomcat, VMware 등)이 1521 포트를 이미 점유하고 있는 경우에도 이 오류가 발생할 수 있어요. 이럴 땐 명령어로 포트를 확인하고, 리스너 설정을 다른 포트로 변경해야 해요.

netstat -ano | findstr :1521

포트가 사용 중이라면, listener.ora에서 포트를 1522나 다른 여유 포트로 바꾸고 lsnrctl reload로 적용해 보세요.

3. 오라클 홈이 여러 개인 경우

한 시스템에 여러 버전의 오라클이 설치되어 있으면, 리스너가 다른 Oracle Home을 참조할 수 있어요. 이 경우 각 Oracle Home의 listener.ora 설정이 충돌하지 않도록 조심해야 합니다. 특히 환경변수 ORACLE_HOMEPATH 순서에 따라 리스너가 달라질 수 있어요.

이 문제로 저는 개발용 DB와 테스트용 DB가 따로 있는데, 리스너는 계속 테스트 DB만 바라보는 상황에 부딪친 적이 있었어요. 결국 리스너 이름을 구분하고, 포트도 다르게 설정해서 해결했답니다.

4. 접속 URL에서 오타 확인하기

생각보다 자주 실수하는 부분이 바로 접속 URL 오타</strong입니다. 예를 들어 SQL Developer에서 접속할 때, localhostlocahost로 쓰거나, orclorcl1로 잘못 입력한 경우죠.

이런 오타는 아주 자잘해서 눈에 잘 띄지 않지만, 리스너는 전혀 인식하지 못해 오류로 이어져요. 항상 복사/붙여넣기보다는 직접 눈으로 한 글자씩 확인하는 습관이 필요해요.

5. 리스너 로그 파일 확인하기

리스너 문제는 로그를 보면 단서가 확실하게 나옵니다. 리스너 로그는 일반적으로 다음 경로에 있어요:

$ORACLE_HOME/diag/tnslsnr/호스트명/listener/trace/listener.log

이 파일을 열어보면 리스너가 언제 시작됐는지, 어떤 에러가 있었는지 상세하게 기록돼 있으니 꼭 확인해보세요. 저도 포트 충돌 문제를 이 로그 덕분에 정확히 찾아낸 적 있어요.

📌 팁 정리:
- 리스너 시작 여부 확인은 가장 기본
- tnsnames.ora, listener.ora 설정 점검은 습관처럼
- Windows에서는 서비스 관리도 중요
- 오타, 포트 충돌, 환경 변수도 생각보다 빈번한 원인
- 로그 파일 확인은 문제 해결의 핵심

Oracle DB 오류는 처음에는 막막하지만, 하나하나 원인을 좁혀가다 보면 의외로 간단한 실수였던 경우가 많아요. 중요한 건 차근차근, 침착하게 하나씩 체크해 나가는 겁니다. 여러분도 오늘 이 글을 통해 ORA-12541 오류를 자신 있게 해결할 수 있길 바랍니다 :)

📌 결론

ORA-12541: TNS:no listener 오류는 Oracle DB를 사용할 때 꽤 자주 마주하게 되는 대표적인 문제 중 하나입니다. 하지만 리스너 개념을 정확히 이해하고, 단계별로 점검해보면 누구나 해결할 수 있는 오류이기도 합니다.

리스너가 정상적으로 작동하고 있는지 확인하고, tnsnames.ora와 listener.ora의 설정이 일치하는지 검토하세요. 특히 포트 번호, 호스트명, 서비스 이름 등은 한 글자 차이로도 접속이 안 될 수 있으니 꼼꼼한 확인이 필요합니다. 또 윈도우 환경에서는 OracleListener 서비스가 자동으로 실행되고 있는지 확인하는 것도 잊지 마세요.

중요한 점은 오류 메시지에 겁먹지 않고, 기본부터 차근차근 확인하는 습관을 들이는 것입니다. 그렇게 하면 어떤 환경에서도 자신 있게 문제를 해결할 수 있게 될 거예요.