database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 29426 게시물 읽기
No. 29426
Oracle 9i 포트 문제
작성자
잔뇌
작성일
2007-01-17 11:08
조회수
3,848

OS : Windows XP Pro SP2

DB : Oracle 9i


현재 오라클 9i를 사용하고 있습니다.

서버쪽은 방화벽으로 막혀 있고 1521 포트를 오픈하여 사용중입니다.

(C/S프로그램입니다.)

문제는 1521로 접속하면 DB와 연결이 되었다가 바로 연결이 끊어집니다.

그래서 방화벽쪽에서 확인해보니 

클라이언트 프로그램에서 Oracle의 1521 포트로 접속이 되고 난 후 

포트번호가 다른 걸로 바뀌어 버리더군요.(3000번대, 5000번대 무작위)

그래서 임시적으로 3000번대, 5000번대의 포트를 방화벽에서 열어 놓고 사용중인데

이도 내부적으로 사용되는 포트가 가변적이라서 난감합니다.

이 문제를 해결할 수 있는 방법이 있는지요.

1521 포트만을 사용할 수 있는 방법이 없나요?


원래 오라클이 내부적으로 이렇게 동작을 하는 것입니까?

아니면 셋팅상의 문제인지 궁금합니다.


(FTP에서 Passive Mode가 아닐 경우 21번 포트에서 요청을 받고 다른 포트로 연결을 넘겨주는 상황과 비슷한거 같습니다.)

이 글에 대한 댓글이 총 5건 있습니다.

MTS 방식으로 쓰시나요.?
시가있는풍경님이 2007-01-17 13:14에 작성한 댓글입니다. Edit

기본적으로 리스너는 1521 포트에서 리슨을 계속 하는거구요

클라이언트 요청이 1521로 오면 연결을 맺어서

서버의 다른 포트에서 계속 서비스 하고

서버는 다시 1521포트에서 리슨을 하고 있는 거죠.

익명님이 2007-01-17 13:27에 작성한 댓글입니다. Edit

어떻게 해결을 해야 좋을까요?
포트를 몽땅 다 열어달라고 요청할 수도 없고 참으로 난감합니다. ㅡ,.ㅡ;

잔뇌님이 2007-01-17 13:36에 작성한 댓글입니다. Edit

방화벽에서는 보통 inbound 와 outbound로 정책을 사용할 수 있는데...
inbound의 경우엔 다른 포트를 닫고, DB단으로 들어오는 경우 1521port를 열어주면 되는 것이고,

나갈때는 보통 다 허용을 해줘서... 클라이언트로 연결이 되면 랜덤포트에 연결이 되게 됩니다.(netstat -na)

아마 귀사에서 outbound도 막아놓고 있는게 아닌가 생각되는데... 방화벽 담당자에게 다시한번 문의해보시기 바랍니다. 그리고, 도스창하나 띄워놓고,, sqlplus로 접속한 다음 다른 창을 하나 열어서

netstat -na로 확인해보시면 db server의 1521이 establish 되어 있는 것이 보일 것이고, 클라이언트쪽은
다른 포트(랜덤포트)로 연결이 되어 있을 것입니다.  3 hand shake로 통신합니다. 만약 outbound가 막혀 있다면 서비스가 안될 겁니다.

inbound에서 오라클이 방화벽이 1521이 아닌 다른 포트를 열어야 서비스된다고 하는 것은 이치상 잘 납득이 안갑니다. 오라클하고 전혀 관련이 없습니다. 만약 있다면 그건 버그일 겁니다.

이창기(lck007)님이 2007-01-17 16:44에 작성한 댓글입니다.
이 댓글은 2007-01-17 16:46에 마지막으로 수정되었습니다.

방화벽과 NT사이의 port redirection문제는 아래와 같이 해결하면 됩니다.
참고로 테크니컬문서 No. 12248 방화벽(FIREWALL)과 오라클 접속도 읽어보세요.


 

No. 11434

WINDOWS NT 와 FIREWALL 관련
===========================


(일반적으로 SQL*NET listener 가 1521 Port 를 사용한다고 가정)

Windows NT 에서 Firewall 이 설치된 경우 1521 Port 를 열어주었다고
하더라도 클라이언트에서 접속시 ORA-12203 error 가 발생하게 된다.
이유는 아래의 그림과 같다.

1. 클라이언트가 접속 시도를 한다.
2. Listener 가 Redirect connect 를 하도록 한다.
   이때 주어지는 포트는 사용하지 않는 Random Port 이다.
3. 클라이언트에서 재접속을 한다. (이때 사용하는 port 가 문제가 된다)

  그림을 잘 맞춰주세요.

+------+ <-------2-----2----  +---------+
|client|                      |listener |(port=1521)
+------+ --------1-----1----> +---------+
       |
       ----------3-----3------> +---------+
                                | oracle  |(port=xxxx)
                                +---------+

해결방법은 두가지가 있다.

1. SQLNet proxy 가 포함된(Build into) Firewall 을 사용하는 것이다.

   먼저 SQLNet proxy 가 Listener 와 다른 포트를 이용해서 기동되어야 한다.
   (보통 1610 을 사용)
   아래 그림과 같이 접속이 가능하게 된다.

                    firewall
                       ||
+------+ <----2--------||-----2------ +---------+
|client|               ||             |listener |(port=1521)
+------+ ----1------> proxy --1------>+---------+
  A   \              /||\
  |     -----3-------/ || \---3------>+---------+
  |                    ||             | oracle  |(port=xxxx)
  +----------4---------||-----4-------+---------+

2. 8.0.X 버전에서 지원되는 기능을 사용한다.

   레지스트리에 있는 USE_SHARED_SOCKET 이란 parameter 를 사용한다.

   Firewall 의 종류에 전혀 구애받지 않는다.

   Listener Port 만 열어주면 된다.

   Parameterm 의 Syntax 는

    USE_SHARED_SOCKET=TRUE

   이다.

   레지스트리에 각 DB version에 따라 아래와 같이 존재한다.

   \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE (Relases 8.0)

   \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME<#> (Release 8i )


   이 파라미터의 기능은 1521 Port 만을 사용하는 것이다.
  
   현재 session들이 살아있는 상태에서 listener가 stop 될 수는 있지만
   다시 start되기 위해서는 현 session들을 모두 닫아야 한다.

    
    

태정민(xowjdals)님이 2007-01-19 13:27에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29429간단한 쿼리문 수정 좀 부탁 드려요
뱀무
2007-01-17
1394
29428오라클 설치시 createOUIProcess [1]
홍길동
2007-01-17
2496
2942710g 리스너 - 서비스 몇분 뒤에 올라옴 [1]
아라
2007-01-17
2479
29426Oracle 9i 포트 문제 [5]
잔뇌
2007-01-17
3848
29425SGA영역 증가 문의입니다. [2]
쇼다운
2007-01-17
2611
29421윈도2003 서버에서 Oracle9i 설치 후 문제 질문
Nietzsche
2007-01-16
1156
29419현재 실행되고 있는 SQL 문을 조회하는 방법 좀 알려주세요~ [2]
이보영
2007-01-16
2142
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2025 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v17.5로 자료를 관리합니다