ORA-12541: tns 리스너가 없습니다 (ORA-12541: tns no listener)

'ORA-12541: tns 리스너가 없습니다' 오류를 수정해 보도록 합시다. 참고로, 해당 오류는 영어로 'ORA-12541 tns no listener' 와 같이 발생하는 경우도 있답니다. 이제 해당 오류를 해결하는 방법에 대해 알아봅시다.😘

TNSPING

ORA-12541: tns 리스너가 없습니다 해결하기

TNS 리스너가 없다고 나오는 것과 관련한 사항으로 점검이 필요할 만한 요소를 정리해 보겠습니다. 우선 TNS Ping 유틸리티를 이용하여 tnsping 명령어로 접속에 문제가 있는지 시도해 보겠습니다.

tnsping xe

=>

사용된 매개변수 파일:
C:\app\BEOMSANG\product\21c\homes\OraDB21Home1\network\admin\sqlnet.ora

별칭 분석을 위해 TNSNAMES 어댑터 사용
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 000.000.000.000)(PORT = 0000)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))에 접속하려고 시도하는 중
TNS-12541: TNS:리스너가 없습니다.

리스너 컨트롤 명령어

리스너 컨트롤로 상태를 확인해 봅시다. 리스너 컨트롤의 명령어는 다음과 같으며 status로 리스너 상태를 확인할 수 있습니다.

LSNRCTL
다음 작업이 가능합니다
별표(*)는 수정자나 확장 명령을 의미합니다:

start           stop            status          services
servacls        version         reload          save_config
trace           quit            exit            set*
show*

LSNRCTL status

리스너 상태가 비정상인 경우의 예시는 다음과 같습니다. 

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=0)))에 연결되었습니다
TNS-12541: TNS:리스너가 없습니다.
 TNS-12560: TNS:프로토콜 어댑터 오류
  TNS-00511: 리스너가 없습니다.
   64-bit Windows Error: 61: Unknown error
(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))에 연결되었습니다
TNS-12541: TNS:리스너가 없습니다.
 TNS-12560: TNS:프로토콜 어댑터 오류
  TNS-00511: 리스너가 없습니다.
   64-bit Windows Error: 2: No such file or directory

리스너 상태가 정상인 경우 예시는 다음과 같습니다.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=0.0.0.0)(PORT=0)))에 연결되었습니다
리스너의 상태
------------------------
별칭                     LISTENER
버전                     TNSLSNR for 64-bit Windows: Version 21.0.0.0.0 - Production
시작 날짜                 0-0월-0 0:0:0
업타임                   0 일 0 시간. 0 분. 0 초
트레이스 수준            off
보안                     ON: Local OS Authentication
SNMP                     OFF기본 서비스           XE
리스너 매개변수 파일   C:\app\BEOMSANG\product\21c\homes\OraDB21Home1\network\admin\listener.ora
리스너 로그 파일         C:\app\BEOMSANG\product\21c\diag\tnslsnr\~\listener\alert\log.xml
끝점 요약 청취 중...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=0)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=0.0.0.0)(PORT=0))(Security=(my_wallet_directory=C:\APP\BEOMSANG\PRODUCT\21C\admin\XE\xdb_wallet))(Presentation=HTTP)(Session=RAW))
서비스 요약...
"0" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 2 처리기를 가집니다.
"CLRExtProc" 서비스는 1개의 인스턴스를 가집니다.
  "CLRExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"XE" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 2 처리기를 가집니다.
"XEXDB" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"xepdb1" 서비스는 1개의 인스턴스를 가집니다.
  "xe" 인스턴스(READY 상태)는 이 서비스에 대해 2 처리기를 가집니다.
명령이 성공적으로 수행되었습니다

해당 현상을 해결하기 위해 다음과 같이 진행하였습니다.

  1. 우선 서비스(services.msc) 작동 여부를 확인합니다.
  2. 리스너 파일 양식을 재확인 합니다.
  3. 리스너 파일의 양식은 문제가 없었기에, HOST나 PORT가 문제없는지 확인합니다.
  4. lsnrctl start 명령어로 컨트롤을 시작해 봅니다.

리스너의 기본 양식은 다음과 같으며 호스트 부분이 혹시 잘못되었는지 확인하였습니다.

LISTENER =
 (ADDRESS_LIST=
  (ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=0))
  (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))

간혹 로그 파일 용량이 초과하여 ORA-12541: tns no listener 오류가 발생하는 경우가 있다고 합니다.
로그 파일은 보통 오라클 베이스/diag/tnslsnr/~/listener/ 경로상에 위치합니다. 경로에서 alert/log.xml 파일이 있고, trace/listener.log 파일도 확인할 수 있습니다.

리스너 로그 파일         C:\app\BEOMSANG\product\21c\diag\tnslsnr\~\listener\alert\log.xml
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗