티스토리 뷰

 

Oracle 19c를 설치하고 나서 의기양양하게

SQL Developer를 열었는데,

" 접속이 안되는..."

" 설치만 했는데... 갑자기?? " 😥

 

"ORA-12541: TNS:no listener" 같은 메시지

가 뜨면 순간 머릿속이 백짓장이 됩니다,

분명 설치는 정상적으로 끝났는데,

도대체 왜 이러는 걸까요?

DBA 경력자도 가끔 당하는 이 listener Issue,

오늘 Oracle 공식 문서 기반으로 하나하나

짚어보겠습니다.

 

 


리스너(listener)란, 무엇일까요?

 

쉽게 말해 listener는 Oracle 데이터베이스의

방범문 역할을 하는 Network Process입니다.

클라이언트가 DB 서버에 접속 요청을 보내면,

listener가 이 요청을 받아서 데이터베이스

인스턴스로 연결해줍니다.

Oracle Net Services 아키텍처에서 리스너는

listener.ora 파일에 정의된 프로토콜 주소로

들어오는 연결 요청을 수신합니다.

이 문이 닫혀 있거나 주소가 잘못되어 있으면,

아무리 내부가 완벽해도 외부에서 들어올 수

없는 것입니다.


 

리스너(listener)접속 실패 원인은?

 

Oracle 19c 설치 후 리스너 접속이 실패하는

주요 원인과 증상을 정리하면 다음과 같습니다.

증상 및 오류 코드
주요 원인
ORA-12541 :
TNS:no listener
Listener Process가 기동되지 않음
ORA-12514 :
TNS:listener does not currently know of service
Listener에 Service가 등록되지 않음
ORA-12528 :
TNS : listener : all appropriate instances are blocking new connections
Instance가 Mount 상태이거나 제한 모드
TNS-12560 :
TNS : protocol adapter error
listener.ora 또는 tnsnames.ora 설정 오류

자주 묻는 질문 형태로 원인을 좀 더 살펴

보겠습니다.

 

Q) Listener가 아예 실행되지 않는 이유는   
     무엇인가요?

A) 설치 과정에서 리스너 구성 단계를 건너

    뛰었거나, 환경 변수 ORACLE_HOME이

    올바르게 설정되지 않은 경우입니다.

    Oracle 19c는 설치 시 netca를 통해 기본

    리스너를 자동 생성하지만, silent 모드 설치

    시에는 별도 구성이 필요합니다.

 

 

Q) Listener는 떠 있는데 서비스를 인식하지

     못하는 이유는 무엇인가요?

A) Oracle Database는 PMON Process가

    listener에 Service를 동적으로 등록합니다.

    이 동적 등록은 기본적으로

    LOCAL_LISTENER 파라미터 값을 참조

    하며, listener가 기본 포트인 1521이 아닌

    다른 포트를 사용할 때 해당 파라미터가

    누락되면 등록에 실패합니다.


해결 방법은?

 

이제 실제 해결 순서를 단계별로 설명합니다.

 

1. listener 상태 확인

  • 명령어 : lsnrctl status
  • LISTENER가 running 상태인지, 등록된
    서비스 목록에 본인의 DB 서비스명이 있는지
    확인합니다.

 

2. listener가 중지된 경우 시작

  • 명령어 : lsnrctl start
  • listener.ora 파일이
    ORACLE_HOME/network/admin 경로에
    존재하는지 반드시 확인합니다.

 

3. listener.ora 설정 점검

 
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 서버호스트명)(PORT = 1521)) ) )
  • HOST 값이 실제 서버의 hostname 또는 IP와
    일치해야 합니다. localhost로 설정하면 원격
    접속이 차단될 수 있습니다.

 

4. 동적 서비스 등록 확인

  • ALTER SYSTEM
    SET LOCAL_LISTENER=
            '(ADDRESS=(PROTOCOL=TCP)
            (HOST=서버호스트명)(PORT=1521))'
    SCOPE=BOTH;
  • 이후 ALTER SYSTEM REGISTER;
    명령으로 메뉴얼하게 등록합니다.

 

5. 방화벽 및 포트 개방 확인

  • Linux 환경이라면 firewall-cmd --list-ports
    명령으로 1521 포트가 열려 있는지 점검
    합니다.
  • OS 레벨 방화벽이 리스너 문제의 가장 흔한
    주요 점검 항목입니다.

 

6. tnsnames.ora 클라이언트 측 설정 점검

  • SERVICE_NAME과 SID를 혼동하는 경우가
    빈번합니다.
    Oracle 19c에서는 SERVICE_NAME 사용을
    권장
    합니다.

 

알아두면 쓸모있는 유용한 팁

 

추가로 알아두면 유용한 팁을 몇 가지 더 공유

합니다.

 

  • lsnrctl services 명령은 status보다 상세한
    서비스 핸들러 정보를 보여주므로, 등록 상태
    를 정밀하게 파악할 때 유용합니다.

 

  • Oracle 19c부터는 Automatic Diagnostic
    Repository에 리스너 로그가 기록됩니다.
    ORACLE_BASE/diag/tnslsnr/호스트명
    /listener/trace 경로 아래의 log 파일입니다.

 

  • 리스너를 여러 개 운용할 때는 각 리스너별로
    이름을 다르게 지정하고, lsnrctl start 리스너
    이름 형태로 개별 제어해야 합니다.

Listener 문제는 대부분 설정 파일의 오타 하나,

포트 번호 불일치 하나에서 시작됩니다.

복잡해 보여도 위 순서대로 차분히 점검하면

십중팔구 원인을 금방 찾을 수 있습니다. 

처음 Oracle을 다루는 분이든 오랜 경력의

DBA든, 네트워크 설정 앞에서는 누구나 한 번

쯤 좌절합니다. 

 

이 글이 여러분의 시행착오 시간을 조금이라도

줄여드렸으면 좋겠습니다. 혹시 다른 오류 코드

나 특수한 환경에서의 문제가 있다면, 댓글로

남겨주세요.

함께 해결 방법을 찾아보면 문제가 쉽게 해결될

수도 있어요~ 😉

 

 

 

#Oracle19c리스너 #오라클리스너오류 #ORA12541해결 #TNS리스너설정 #Oracle19c설치 #listenerora설정 #오라클접속불가 #오라클TNS오류 #DBA트러블슈팅 #오라클네트워크설정