본문 바로가기
Data & Programming/Oracle

[오라클-오류] ORA-12541: TNS:no listener, The Network Adapter could not establish the connection (TNS 리스너가 없거나 현재 연결을 수락하지 않습니다.)

by 눈부셔™ 2023. 8. 29.
728x90

[Oracle-오류] ORA-12541: TNS:no listener, The Network Adapter could not establish the connection (TNS 리스너가 없거나 현재 연결을 수락하지 않습니다.)

Oracle 데이터베이스에 접속하기 위해서는 TNS (Transparent Network Substrate) 리스너를 통해 클라이언트와 데이터베이스 간의 통신이 이루어집니다. 그러나 때로는 TNS 리스너가 없거나 현재 연결을 수락하지 않아 발생하는 오류인 ORA-12541이 발생할 수 있습니다. 이번 글에서는 ORA-12541 오류에 대한 상세한 내용과 해결 방법에 대해 다루겠습니다.

ORA-12541: TNS 리스너가 없습니다.


오류 내용

ORA-12541: TNS 리스너가 없거나 현재 연결을 수락하지 않습니다.

 


오류 설명

ORA-12541 오류는 클라이언트가 데이터베이스에 접속을 시도했지만, 해당 데이터베이스의 TNS 리스너가 실행 중이지 않거나 현재 연결을 수락하지 않아 발생하는 오류입니다. 이 오류는 데이터베이스 서버 또는 클라이언트의 구성 문제로 인해 발생할 수 있으며, 접속 시도 중에 발생합니다.

 


주요 원인

  • TNS 리스너 중지 또는 비활성화: TNS 리스너가 실행 중이 아니거나, 비활성화되어 있는 경우에 오류가 발생할 수 있습니다.
  • 네트워크 구성 오류: 클라이언트와 데이터베이스 간의 네트워크 구성이 올바르지 않거나, 서버의 호스트 이름이나 IP 주소가 변경되어 연결에 문제가 생긴 경우에 오류가 발생할 수 있습니다.
  • 방화벽 문제: 클라이언트와 데이터베이스 간의 통신을 방해하는 방화벽 설정으로 인해 연결이 제한되거나 차단되는 경우에 오류가 발생할 수 있습니다.

 

해결 방법

ORA-12541 오류를 해결하기 위해서는 다음과 같은 접근 방법을 고려해야 합니다.

1. TNS 리스너 실행 상태 확인
먼저 데이터베이스 서버의 TNS 리스너가 실행 중인지 확인합니다. 명령 프롬프트에서 lsnrctl status 명령을 실행하여 리스너의 상태를 확인할 수 있습니다. 

아래는 TNS 리스너 중지 상태이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
$ lsnrctl status
 
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 18-AUG-2023 09:00:00
 
Copyright (c) 19912014, Oracle.  All rights reserved.
 
상태 정보
Alias                     LISTENER
버전                       TNSLSNR for Linux: Version 12.1.0.2.0 - Production
시작 날짜                   18-AUG-2023 08:00:00
옵션                       TNSLSNR for Linux: Version 12.1.0.2.0 - Production
상태                       오프
...
cs


2. 네트워크 구성 확인
클라이언트와 데이터베이스 간의 네트워크 구성이 올바른지 확인합니다. 

호스트 이름, IP 주소, 포트 번호 등이 올바르게 설정되어 있는지 검토합니다.

1
2
3
4
5
6
7
8
9
10
11
12
# tnsnames.ora 파일 내용
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = incorrect_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
 
# 오류 메시지: ORA-12541: TNS 리스너가 없거나 현재 연결을 수락하지 않습니다.
cs

tnsnames.ora 파일과 listener.ora 파일의 IP 주소가 일치해야 합니다.

  • tnsnames.ora 파일 확인
    tnsnames.ora 파일은 데이터베이스 서버에 접속하기 위해 필요한 정보를 담고 있는 파일입니다. 이 파일 내의 서비스 이름에는 해당 데이터베이스의 IP 주소와 포트 번호가 지정되어 있습니다. tnsnames.ora 파일을 열어서 특히 IP 주소 부분을 확인하세요.
1
2
3
4
5
6
7
8
9
ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
cs
  • listener.ora 파일 확인
    listener.ora 파일은 TNS 리스너의 구성 정보를 담고 있는 파일입니다. 이 파일 내의 리스너의 IP 주소와 포트 번호가 지정되어 있으며, 클라이언트가 접속할 때 이 정보를 활용합니다. listener.ora 파일을 열어서 IP 주소 부분을 확인하세요.
1
2
3
4
5
6
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    )
  )
cs


3. 방화벽 설정 확인
클라이언트와 데이터베이스 간의 통신을 방해하는 방화벽 설정을 확인하고 필요한 포트를 오픈해야 합니다.

 


결론

ORA-12541 오류는 Oracle 데이터베이스에 접속 시 데이터베이스의 TNS 리스너가 없거나 현재 연결을 수락하지 않을 때 발생하는 오류입니다. 이 오류를 해결하기 위해서는 TNS 리스너의 실행 상태를 확인하고, 네트워크 구성 및 방화벽 설정을 검토하여 필요한 조치를 취해야 합니다. 올바른 설정을 통해 데이터베이스 접속 오류를 효과적으로 대응할 수 있습니다.

 


#Oracle  #오라클  #오라클 오류코드  #ORA-12541  #TNS리스너  #연결거부  #데이터베이스접속

728x90