Oracle Network Connection
· Oracle은 Client와 TCP/IP의 소켓으로 통신한다.
· Server Process 생성은 무거운 작업이므로
애플리케이션 구축 시 매번 연결하지 않고 미리 연결을 맺고 사용하는 connection pool을 사용한다.
※ 소켓
- 네트워크 통신을 위한 프로그램들은 소켓을 생성하고 소켓을 통해 서로 데이터를 교환
- 소켓은 주소 & 포트 번호로 대상을 식별함
□ Oracle ↔ Client 네트워크 연결 과정

· Listener는 수신을 기다리는 프로세스
· Server Process는 사용자의 요구사항(SQL문)을 처리하는 프로세스
· PSA (Process Global Area)는 서버 프로세스만을 위한 독립적인 메모리 공간
① User process는 tnsnames.ora에서 리스너의 주소, 포트 번호, 서비스 이름을 확인하여 접속 패킷 전달 (=연결 요청)
② Server process 생성하고 소켓은 Server process에게 전달 → 무거운 작업
- OS에서 메모리(PSA) 획득 및 초기화
- SGA에 접근할 수 있도록 각종 설정 수행
- 오라클을 정상적으로 사용하기 위한 설정 값을 읽어오거나 초기화를 위한 SQL 수행
- 단, 일부OS에서는 소켓을 공유하는 경우도 있음
③ User process에게 접속 되었다고 전달
④ 연결 완료
□ tnsnames.ora
BONGDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = 100.0.0.0) (PORT = 1521)))
(ADDRESS = (PROTOCOL = TCP) (HOST = 100.0.0.1) (PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = BONGDB)))
· BONGDB
- 오라클 서버의 리스너에 정의된 서비스 이름
· ADDRESS
- DB서버 주소이며 프로토콜, 서버 이름, 사용 포트로 구성된다
· SERVICE_NAME
- Listener 프로세스가 사용하는 서비스 이름 (DB관리자가 임의로 작성하여 넣은 이름)
· SERVER = DEDICATED
- 오라클은 기본적으로 Dedicated Server(전용 서버) 또는 Shared Server로 운용한다.
- Dedicated 방식은 하나의 서버 프로세스에 하나의 클라이언트만을 연결하고, Shared 방식은 하나의 프로세스에 여러 클라이언트가 사용한다.