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 를 입력하면 다시 커맨드 모드로 빠져나올 수 있다.
SQL툴을 사용하거나 자바에서 오라클 연결을 하려고 할 때 필요한 것이 포트번호와 SID(전역 데이터베이스 이름)이다. 이 두 가지는 설치 초기에 지정하게 되어있는데, 변경하지 않았다면 포트번호는 1521, SID는 orcl 이다.
그런데 만약 변경을 했는데 잊어버렸다던가 하는 문제가 발생할 수 있다. 이럴 경우에는 어떻게 알 수 있을까?
listener.org 파일 해 알내기
오라클을 설치하고 나면 listener.org이 생성되어 있다. 이 파일에는 각종 정보들이 들어있는데 여기에 포트와 SID가 입력되어 있다.
여기에서는 listener.org 파일이 있는 경로는 C:\app\admin\product\11.2.0\dbhome_1\NETWORK\ADMIN 이다. 보통 설치 경로가 다를 것이니 아래 경로를 보고 확인해 보면 된다.
- 경로 : 드라이버:\app\사용자 계정\product\11.2.0\dbhome_1\NETWORK\ADMIN
- 드라이버 : C, D, E 등..
- 사용자 계정 : 윈도우 사용자 계정명
listener.org을 열어보면 SID와 포트가 있다.
명령어를 통해 알아내기
먼저 cmd에서 오라클 관리자 계정으로 접속을 해야 한다.
- 관리자 계정 : sys 또는 system
- 비밀번호 : 본인이 설정한 비밀번호
- 명령어 : sqlplus system/비밀번호
접속을 하였다면 다음 명령어를 통해 포트번호와 SID를 확인할 수 있다.
- SID 확인 명령어 : select name from v$database;
- 포트 확인 명령어 : select dbms_xdb.gethttpport() from dual;
- 포트 변경 명령어 : exec dbms_xdb.sethttpport(변경할포트번호);