오라클 커넥션

prana·2024년 9월 17일
0

ORACLE

목록 보기
1/96
post-thumbnail
  • 출처: 그림으로 공부하는 오라클 구조

1. 애플리케이션 서버에서 클라이언트가 데이터베이스에 접속 요청을 한다.

  • 이 요청은 TNS 파일을 참조하여 데이터베이스 서버의 주소, 포트, 서비스 이름 등 연결 정보가 포함되어 있다.

2. TNS 파일에서 정의된 정보에 따라, 클라이언트는 오라클 리스너(Listener) 가 설치된 데이터베이스 서버의 IP 주소와 포트 번호를 사용해 리스너에 접속을 시도한다.

tnsnames.ora 경로
$ORACLE_HOME/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = mydbserver)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )
  • ORCL이라는 이름의 서비스에 대해, 클라이언트가 mydbserver라는 호스트의 1521 포트로 연결할 수 있도록 설정된 정보를 나타낸다.
  • 클라이언트는 이 정보를 기반으로 데이터베이스 서버에 접속을 시도한다.

3. 데이터베이스 서버의 리스너는 클라이언트로부터 받은 접속 요청을 수신한다.

  • 리스너는 자신이 리스너 설정 파일에서 확인한 정보와 매칭되는 요청이 오면, 클라이언트와 데이터베이스 간의 연결을 시도한다.

  • listener.ora 파일을 ORACLE_HOME/network/admin 디렉터리에 위치

    $ORACLE_HOME/network/admin/listener.ora

  • 파일 예시

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = mydbserver)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = ORCL)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

4. 리스너는 연결이 성공하면, 데이터베이스 서버에서 필요한
서버 프로세스를 생성하고, 클라이언트와 데이터베이스 서버 간의 연결을 완료한다.



5. 이제 서브 프로세스는 클라이언트로부터 SQL 명령을 처리하거나, 데이터베이스 작업을 수행할 준비가 된 상태이다.


listener.ora 파일

👉LISTENER =
  (👉DESCRIPTION_LIST =
    (DESCRIPTION =
      (👉ADDRESS = (👉PROTOCOL = TCP)(👉HOST = mydbserver)(👉PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

👉SID_LIST_LISTENER =
  (👉SID_LIST =
    (👉SID_DESC =
      (👉GLOBAL_DBNAME = ORCL)
      (👉ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (👉SID_NAME = ORCL)
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
  • LISTENER
    • DESCRIPTION_LIST: 여러 개의 DESCRIPTION 블록을 포함할 수 있다.
    • 각 DESCRIPTION은 리스너가 대기하는 접속 정보( 프로토콜, 호스트, 포트)를 정의한다.
    • ADDRESS: 리스너가 클라이언트 접속을 수신할 주소를 정의
      • PROTOCOL: 통신에 사용할 프로토콜 정의
        • 주로 TCP(인터넷 프로토콜)/IPC(로컬 프로세스 간 통신) 사용
        • HOST: 데이터베이스 서버의 호스트 이름 또는 IP주소
        • PORT: 리스너가 대기할 포트 번호. 기본적으로 1521번 포트를 사용한다.
  • SID_LIST_LISTENER
    • SID_LIST: 리스너가 관리하는 SID(세션 식별자) 목록 정의
    • SID_DESC: 각 데이터베이스 인스턴스에 대한 정보
      • GLOBL_DBNAME: 클라이언트가 연결할 때 사용할 데이터베이스의 전역 이름
      • ORACLE_HOME: 해당 데이터베이스 인스턴스가 설치된 경로
      • SID_NAME: 데이터베이스 인스턴스의 SID(시스템 식별자)를 정의한다.
  • ADR_BASE_LISTENER
    • 오라클의 진단 리포지토리 경로를 지정하는 설정
    • ADR_BASE: 리스너 로그와 진단 파일이 저장될 기본 경로를 설정

요약

  • 클라이언트 측에서는 tnsnames.ora 파일을 참조하여 데이터베이스 서버의 주소와 서비스 정보를 확인하고, 접속 요청을 보낸다.

  • 서버 측에서는, listener.ora 파일을 참조하여 리스너가 클라이언트의 요청을 처리하는 방식을 결정한다.

  • 두 파일간에 설정이 일치하는지 확인하고,
    호환되지 않는 설정이 있으면 클라이언트가 데이터베이스에 연결할 수 없으므로, 특히 포트번호, 호스트명, 프로토콜이 동일한지 확인하는 것이 중요하다.

  • 네트워크 설정: 클라이언트와 서버 간의 방화벽 설정에 따라 포트가 차단되어 있지 않은지도 확인이 필요하다.

클라이언트가 데이터베이스 서버와 통신할 수 있도록 리스너가 중개 역할을 한다.

0개의 댓글