본문 바로가기

개발개발

Oracle Net 의 구성

Oracle Net 이름 지정방식은 네 가지종류가 있다.
  1. 호스트 이름 방식
  2. 로컬 이름 방식
  3. 디렉토리 이름 지정 방식
  4. Oracle Names 방식

다른건 모르겠고 실제 사용중인 DB 구성파일로 Oracle net 로컬 이름 방식의 접속 절차를 간략하게 알아보겠다. 우선 서버와 클라이언트의 설정 파일은 다음과 같다.
  • 서버의 listener.ora
    LISTENER_NAME =
      (SID_LIST =
       (SID_DESC =
         (SID_NAME = PLSExtProc)
         (ORACLE_HOME = /oracle/product/10.2.0)
         (PROGRAM = extproc)
       )
      )

    LISTENER_NAME =
      (DESCRIPTION_LIST =
       (DESCRIPTION =
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
         )
         (ADDRESS_LIST =
           (ADDRESS = (PROTOCOL = TCP)(HOST = 111.111.111.111 )(PORT = 1521))
         )
       )
      )
    INBOUND_CONNECT_TIMEOUT_LISTENER = 0

  • 클라이언트의 tnsnames.ora
    SERVICE_NAME =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(Host = 111.111.111.111)(Port = 1521))
        )
        (CONNECT_DATA =
          (SID = SID_NAME)
        )
      )

위와 같은 서버와 클라이언트의 설정이라고 가정하고 아래의 예제를 실행하면 실제 클라이언트에서 데이터베이스 서버로 접속이 가능해진다.
>sqlplus useid/pass@service_name
  1. 사용자에 의해서 데이터베이스로 접속 요청이 발생하면 클라이언트에서는 tnsnames.ora 파일로부터 접속하고자 하는 데이터베이스에 대한 접속 정보를 획득하게된다. 예제의 경우 접속하려는 데이터베이스의 IP주소는 111.111.111.111 이고 port는 1521이다.
  2. tnsnames.ora  파일에서 획득한 정보로 데이터베이스서버에 접속하게되면 서버에서 요청을 기다리고 있는 리스너 프로세스가 클라이언트의 요청을 수신하게된다.
  3. 리스너 프로세스는 사용자의 요청에 맞는 정보를 클라이언트에게 알려준다. 예제에서는 요청한 SID_NAME을 가지는 테이블의 정보를 클라이언트에게 보낼 것이다.
  4. 수신받은 테이블에 대한 정보를 가지고 클라이언트는 데이터베이스에 접속할 수 있게된다.
많이 생략되었지만 핵심은 위와 같다.


'개발개발' 카테고리의 다른 글

@SuppressWarnings("unchecked") does not ignore raw types warnings anymore  (0) 2011.09.22
Dynamic Web Module?  (1) 2011.09.15
Oracle 날자 관련 함수  (0) 2010.04.09
Oracle 10g XE  (0) 2010.04.05
SQL Developer 64bit  (0) 2010.03.24