다음과 같이 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:리스너가 없습니다.
작업 환경
- DB서버 Windows컴퓨터
- OS : Widows Server 2012 R2
- IP Address(예) : 192.168.220.132
리스너 확인하기
~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:리스너가 현재 접속 기술자에 요청된 서비스를 알지 못함
사용자명 입력:
리스너에 데이터베이스 서비스 추가하기
- Windows 앱 일람에서 Net Manager를 실행합니다.
- Oracle Net Manager화면에서 [Oracle Net구성 > 리스너 > LISTENER]를 선택합니다.
- [데이터베이스 서비스]를 선택해서 [데이터베이스추가]버튼을 누릅니다.
- [SID]는 ORCL, [전역 데이터베이스 이름]은 ORCL를 입력합니다
- [파일>네크워크 구성저장]를 눌러 listener.ora파일에 변경 내용을 덮어 씁니다.
- 변경된 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
- ~TNSListener 서비스를 재 기동합니다.
리스너를 선택 리플레이 아이콘을 눌러 실행합니다.
- 리스너의 상태를 확인합니다.파란 문자가 추가된 부분입니다.
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 처리기를 가집니다.
명령이 성공적으로 수행되었습니다
- 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” 오류가 발생할 수 있습니다.