컴퓨터활용/오라클

오라클 리스너 떠 있는지 확인하는 방법

멜번초이 2008. 8. 28. 12:51
반응형

오라클 리스너 확인하기


1. 리스너 구동하기

lsnrctl start  : 리스너 구동하기
lsnrctl stop  : 리스너 중단하기

이 명령어는 오라클이 설치되어 있는 서버에서 실행해야 한다. 당연 oracle 유저로 실행해야 먹을 것이다. 윈도우 커맨드모드에서 실행하는 client 용 명령어는 아니다.

2. 리스너 환경 파일

$ORACLE_HOME/network/admin  아래에 있는 listener.ora

3. tnsping 사용하여 외부에서 리스너 동작 확인하기

사용법 : tnsping TNS명

C:\Documents and Settings\SHCHOI>  tnsping DBDCBS1

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 28-8월 -2008 12:25:17

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

사용된 매개변수 파일:
C:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora

별칭 분석을 위해 TNSNAMES 어댑터 사용
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 111.60.1.61)(PORT = 1543))) (CONNECT_DATA = (SERVICE_NAME = DBDCBS1)))
확인(10밀리초)

여기서 사용한 DBDCBS1 는 tns명으로서 client pc의 $ORACLE_HOME/network/admin   아래에 있는 tnsname.ora 파일 속에 정의되어 있다. oracle 10g 의 경우 보통 C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN  아래에 있다.

DBDCBS1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 111.60.1.61)(PORT = 1543))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DBDCBS1)
    )
  )

위와 같은 파일을 직접 울트라에디터 같은 것으로 열어서 편집을 할 수도 있으나 주의할 점이 있다. tnsname명 앞에 스페이스 같은 문자가 끼어들어가면 안된다. 즉  "DBDCBS1=" 이라고 써야 되는데 실수로  " DBCBS1=" 이라고 D자 앞에 스페이스나 탭문자가 들어가면 제대로 인식되지 못 한다는 말이다.

사용자 삽입 이미지
오렌지나 토드 같은 SQL 쿼리 툴이 있다면 위의 그림과 같이 쉽게 tnsname.ora 파일을 편집할 수 있다.
사용자 삽입 이미지
그러나 위의 그림과 같이 오라클에서 기본 제공하는 tnsname설정하는 용도의 Net Configuration Assistant 프로그램이 있지만 사용하기가 약간 어렵워 초보자에게 혼란만 주게 된다.

C:\Documents and Settings\SHCHOI> tnsping DBDCBS1

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 28-8월 -2008 12:34:39

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

사용된 매개변수 파일:
C:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora

별칭 분석을 위해 TNSNAMES 어댑터 사용
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 111.60.1.61)(PORT = 154))) (CONNECT_DATA = (SERVICE_NAME = DBDCBS1)))
TNS-12541: TNS:리스너가 없습니다.

해당 지정된 포트에 리스너가 떠 있지 않을 경우 위와 같은 메시지를 볼 수 있다.


3. telnet 사용하여 외부에서 리스너 동작 확인하기 

사용법 : telnet  IP 포트번호

이 때 방화벽은 뚫려 있으나 해당 포트에 리스너가 떠 있지 않을 경우에는 "연결하지 못했습니다."  라는 메시지가 바로 나오고 방화벽으로 막혀 있다면 20여초 가량 지체되다가 연결하지 못 했다는 메시지가 나오게 된다.

사용자 삽입 이미지

이것은 tcp/ip 프로토콜의 특성상 해당 destination 장비로 연결이 되지 못 했을 경우 연결(패킷 전송)을 여러번 재시도를 하기 때문이다.
만약 지정된 포트에 정상적으로 리스너가 떠 있고 방화벽이 뚫려있다면 다음과 같은 black 화면이 뜰 것이다. 이것은 해당 포트에 떠 있는 daemon 프로세서에 접속이 되어 다음 전문을 기다리고 있는 상태이다.
사용자 삽입 이미지

이렇게 연결된 상황을 탈출하고자 한다면 CTRL+] 문자를 입력한다. (Ctrl을 누른 상태에서 ] 를 친다) 그런 후에 quit 를 입력하면 다시 커맨드 모드로 빠져나올 수 있다.
사용자 삽입 이미지






반응형