'ORA-12541: tns 리스너가 없습니다' 오류를 수정해 보도록 합시다. 참고로, 해당 오류는 영어로 'ORA-12541 tns no listener' 와 같이 발생하는 경우도 있답니다. 이제 해당 오류를 해결하는 방법에 대해 알아봅시다.😘
TNSPING
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 처리기를 가집니다.
명령이 성공적으로 수행되었습니다
해당 현상을 해결하기 위해 다음과 같이 진행하였습니다.
- 우선 서비스(services.msc) 작동 여부를 확인합니다.
- 리스너 파일 양식을 재확인 합니다.
- 리스너 파일의 양식은 문제가 없었기에, HOST나 PORT가 문제없는지 확인합니다.
- 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