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

Oracle DB

다음과 같이 Oracle Database에 접속하려고 할 때 ORA-12541오류가 발생할 수가 있습니다. 이 글에서는 ORA-12541 오류의 원인과 해결 방법을 소개합니다.

D:\>sqlplus scott/tiger@192.168.220.132/orcl
SQL*Plus: Release 12.2.0.1.0 Production on 일 10월 17 00:21:14 2021
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
ERROR:
ORA-12541: TNS:리스너가 없습니다.

작업 환경

리스너 확인하기

~TNSListener 서비스가 정지 상태

~TNSListener의 이름을 가진 서비스가 “실행 중” 상태에 있는지를 확인합니다. 다음 화면은 서비스가 정지된 상태를 보여주고 있습니다.

또는 다음 명령으로 리스너의 상태를 확인합니다.

D:>lsnrctl status
LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 17-10월-2021 00:20:37
Copyright (c) 1991, 2016, Oracle. All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.220.132)(PORT=1521)))에 연결되었습니다
TNS-12541: TNS:리스너가 없습니다.
TNS-12560: TNS:프로토콜 어댑터 오류
TNS-00511: 리스너가 없습니다.
64-bit Windows Error: 61: Unknown error

위 상태에서 sqlplus scott/tiger@192.168.220.132/orcl 으로 접속한다면 의심할 여지 없이 ORA-12541오류가 발생합니다.

~TNSListener 서비스 기동 상태

정지중인 리스너를 선택 플레이 아이콘을 눌러 실행합니다. 다음 화면은 서비스가 “실행 중” 상태를 표시하고 있습니다.

~TNSListener 서비스 실행 중의 리스너 상태는 다음과 같습니다.

D:\>lsnrctl status
LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 17-10월-2021 00:27:18
Copyright (c) 1991, 2016, Oracle.  All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.220.132)(PORT=1521)))에 연결되었습니다
리스너의 상태
------------------------
별칭                     LISTENER
버전                     TNSLSNR for 64-bit Windows: Version 12.2.0.1.0 - Production
시작 날짜                 17-10월-2021 00:27:09
업타임                   0 일 0 시간. 0 분. 8 초
트레이스 수준            off
보안                     ON: Local OS Authentication
SNMP                     OFF리스너 매개변수 파일   C:\app\oracle\product\12.2.0\dbhome_1\network\admin\listener.ora
리스너 로그 파일         C:\app\oracle\product\12.2.0\dbhome_1\log\diag\tnslsnr\WIN-O8FTTDMFL42\listener\alert\log.xml
끝점 요약 청취 중...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.220.132)(PORT=1521)))
서비스 요약...
"CLRExtProc" 서비스는 1개의 인스턴스를 가집니다.
  "CLRExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
명령이 성공적으로 수행되었습니다

위 “실행 중”상태에서 sqlplus scott/tiger@192.168.220.132/orcl 으로 접속한다면 오류 없이 접속 될 것 같지만 예상 밖의 ORA-12514오류가 발생합니다.

D:\>sqlplus scott/tiger@192.168.220.132/orcl
SQL*Plus: Release 12.2.0.1.0 Production on 일 10월 17 01:12:06 2021
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
ERROR:
ORA-12514: TNS:리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함
사용자명 입력:

(해결방법) lsnrctl status 명령의 결과로 다음과 같은 메시지가 표시되도록 설정을 변경해야 합니다.

“ORCL” 서비스는 1개의 인스턴스를 가집니다. “ORCL” 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.

리스너에 데이터베이스 서비스 추가하기

  1. Windows 앱 일람에서 Net Manager를 실행합니다.
  1. Oracle Net Manager화면에서 [Oracle Net구성 > 리스너 > LISTENER]를 선택합니다.
  2. [데이터베이스 서비스]를 선택해서 [데이터베이스추가]버튼을 누릅니다.
  3. [SID]는 ORCL, [전역 데이터베이스 이름]은 ORCL를 입력합니다
  4. [파일>네크워크 구성저장]를 눌러 listener.ora파일에 변경 내용을 덮어 씁니다.
  1. 변경된 listener.ora내용을 확인합니다.파란 문자가 추가된 부분입니다.
# listener.ora Network Configuration File: C:\app\oracle\product\12.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\oracle\product\12.2.0\dbhome_1\bin\oraclr12.dll")
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\oracle\product\12.2.0\dbhome_1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.220.132)(PORT = 1521))
  )

ADR_BASE_LISTENER = C:\app\oracle\product\12.2.0\dbhome_1\log
  1. ~TNSListener 서비스를 재 기동합니다.

리스너를 선택 리플레이 아이콘을 눌러 실행합니다.

  1. 리스너의 상태를 확인합니다.파란 문자가 추가된 부분입니다.
D:\>lsnrctl status
LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 17-10월-2021 02:32:35
Copyright (c) 1991, 2016, Oracle.  All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.220.132)(PORT=1521)))에 연결되었습니다
리스너의 상태
------------------------
별칭                     LISTENER
버전                     TNSLSNR for 64-bit Windows: Version 12.2.0.1.0 - Production
시작 날짜                 17-10월-2021 02:32:32
업타임                   0 일 0 시간. 0 분. 3 초
트레이스 수준            off
보안                     ON: Local OS Authentication
SNMP                     OFF리스너 매개변수 파일   C:\app\oracle\product\12.2.0\dbhome_1\network\admin\listener.ora
리스너 로그 파일         C:\app\oracle\product\12.2.0\dbhome_1\log\diag\tnslsnr\WIN-O8FTTDMFL42\listener\alert\log.xml
끝점 요약 청취 중...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.220.132)(PORT=1521)))
서비스 요약...
"CLRExtProc" 서비스는 1개의 인스턴스를 가집니다.
  "CLRExtProc" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
"ORCL" 서비스는 1개의 인스턴스를 가집니다.
  "ORCL" 인스턴스(UNKNOWN 상태)는 이 서비스에 대해 1 처리기를 가집니다.
명령이 성공적으로 수행되었습니다
  1. sqlplus접속 확인합니다.

다음과 같이 오류 없이 접속할 수 있음을 확인할 수 있습니다.

D:\>sqlplus scott/tiger@192.168.220.132/orcl
SQL*Plus: Release 12.2.0.1.0 Production on 일 10월 17 02:37:52 2021
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
마지막 성공한 로그인 시간: 일 10월 17 2021 01:45:24 +09:00
다음에 접속됨:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

SQL>

그 외 주의사항

1. Host에는 localhost 또는 127.0.0.1를 지정하지 않습니다. 네트워크에서 접근 가능한 IP Address또는 그에 상응하는 컴퓨터명 , 호스트명을 지정합니다.

2. 외부 컴퓨터에서 sqlplus명령으로 원격 접속하려면 다음과 같이  [고급 보안이 포함된 Windows 방화벽] 에서 Oracle이름으로 특정 로컬 포트 tcp/1521 추가 해야 합니다. 추가 하지 않는다면 “ORA-12170: TNS:Connect timeout occurred”  오류가 발생할 수 있습니다.

제목과 URL을 복사했습니다