본문 바로가기
자료수집/IT 기술분석

오라클_전용서버(Dedicated Server) VS 공유서버(Multi Thread Server)

by 3604 2023. 3. 28.
728x90

출처: http://ojc.asia/bbs/board.php?bo_table=LecOracle&wr_id=172

전용서버(Dedicated Server) VS 공유서버(Multi Thread Server)

2007.11.28 06:30
전용서버(Dedicated Server) VS 공유서버(Multi Thread Server)
전용서버 모드는 지금까지 모든 SQL 기반의 애플리케이션에 대해 Oracle DB에 연결하는 가장 일반적인 방법으로 설정이 쉬우며 간단한 연결 방법을 제공 합니다. 반면 MTS는 어렵지는 않지만 부가적인 설정 단계가 필요한 방법으로 두 모드의 중요한 차이는 설정 단계에 있는 것이 아니라 동작 단계에 있는 것입니다.

전용서버 모드는 클라이언트 세션과 서버 프로세스가 일대일 관계가 있지만 MTS에서는 다대일 관계로 보시면 됩니다. 공유 서버는 공유 자원이고 전용 서버는 그렇지 않습니다. 공유 자원을 이용 할 때는 오랫동안 자원을 독점 하지 않도록 주의해야 합니다.

[전용서버]
- 사용자가 Database에 연결하면 Listener가 대기하고 있다가 사용자의 요청을 받아들인 후 해당 세션에 대한 정보를 PMON에게 알려주고 PMON은 해당 세션을 위한 개별적인 작업 영역 PGA를 할당한다.
- 그러므로 Dedicate Server 방식은 PMON의 상태에 절대적으로 종속되며, 특정 세션에 의해 PMON에 부하가 많이 발생한다면 해당 세션에만 문제가 발생하는 것이 아니라 전체 세션에까지 막대한 영향을 줄수있다.

init.ora
###########################################
# MTS
###########################################
dispatchers="(PROTOCOL=TCP)(SERVICE=service_name)(dispatchers=10)"
max_dispatchers=20
shared_servers = 10
max_shared_servers = 20

확인방법

select * from v$shared_server;
select * from v$circuit;

[공유서버]
- Tuxedo, Tmax 등의 미들웨어와 비슷한 구조로 사용자의 접속, 요청 작업을 처리하기 위한 프로세스가 기동하여 동시의 여러 사용자의 작업에 대한 관리를 하는 Process 구조를 가진다.

- MTS를 구동하면 Request Que와 Response Que, Shared Server가 기동되고, Listener와 Request Que와 Response Que, Shared Server사이에서 데이터 요청, 요청 데이터의 사용자 전달 등을 하기 위한 Dispatcher Process가 존재한다.
 


- MTS는 사용자가 연결을 요청하면 Listener가 대기하고 있다가 연결을 허용, 세션에 대한 정보를 여러 Dispatcher 중 하나의 Dispatcher에 이관 받아 처리하는 역할을 하며 연결 허용 후 사용자가 데이터를 요청하는 경우 Dispatcher는 Request Que에 해당 요청 내용을 저장하고 Shared Server는 Request Que를 Look Up하고 있다가 미처리된 작업이나 신규로 발생하는 작업을 확인하여 처리하고, 처리 후에는 요구되는 데이터를 Response Que에 저장하고, Dispatcher는 해당 Response Que에 요구 데이터의 저장이 확인되는 순간 바로 사용자에게 데이터를 Return 한다.
 


- Oracle은 Dedicated Server와 MTS를 동시에 구성하여 작업할 수 있다.(특정 사용자는 업무 Role별로 Dedicated Server로 접속을 유도하고 그 밖의 사용자는 MTS Server로 접속하게 할 수 있다.)

MTS의 동작을 예를 들어 보면 서버에는 두개의 공유서버(Shared Server)가 존재하고 세개의 클라이언트가 30초 동안 수행하는 프로세스를 구동 한다고 했을 때 두개의 클라이언트는 30초만에 응답을 받을 수 있지만 한 클라이언트는 60초를 기다려야 한다는 것이다.

즉 MTS의 경우 가능한 짧게 수행되는 트랜잭션을 대상으로 해야 한다는 것이죠… 그래서 MTS는 짧지만 자부 발생하는 트랜잭션을 가지는 OLTP 시스템에 적합하다고 할 수 있습니다. MTS의 장점은 다음과 같습니다.

1.운영체제의 프로세스/스레드 수를 감소 시킵니다.

2.동시성의 정도를 의도적으로 줄일 수 있습니다.(동시 사용자가 늘어 어느 시점에 이르면 시스템이 처리할 수 있는 트랜잭션의 한계에 이르며 최대 동시 접속을 이 지점 이전으로 제한 한다면 시스템의 최대 처리량을 유지 하면서 대부분의 사용자들에게 응답시간이 늘어 나는 것을 제한 할 수 있다는 이야깁니다.)

3.시스템에서 필요한 메모리를 줄입니다.(MTS를 이용하면 UGA는 SGA안에 존재 합니다. 이는 MTS 연결 모드에서는 먼저 예상되는 UGA의 메모리 량을 적절히 추축하고 LARGE_POOL을 통해 SGA안에서 적절히 할당을 하라는 의미 입니다.)
   
또한 데이터베이스에서 EJB를 사용하기로 했다면 반드시 MTS를 사용해야 합니다.

시스템이 과부하가 없으며 MTS를 사용할 이유가 없다면 전용 서버가 최선의 선택입니다. 전용 서버의 경우 설정이 간단하며 튜닝이 쉬운 장점이 있습니다. 전용 서버에서만 수행되는 연산이 있으므로 일반적으로 모든 데이터베이스는 양쪽 모드를 동시에 사용 하거나 전용 서버 모드만을 가집니다.

만약 상당히 많은 사용자를 가진 DB Application을 개발 한다면 반드시 MTS에서 개발하고 테스트를 해야 합니다. MTS에서 TEST를 하지 않았다면 애플리케이션 및 시스템 오류를 증가 시키게 됩니다.

구성방법

Init.ora 파일에 (SERVER = DEDICATED) 추가

ps -ef |grep ora로 확인하면 oracle<SID> (LOCAL=NO) 형태로 서버가 떠 있있으며 Dedicated Server 방식으로 운영을 시에는 서버 당 4M정도의 메모리가 필요하므로 커넥션 갯수에 따라 메모리 용량 계산을 해주어야 합니다.
728x90

'자료수집 > IT 기술분석' 카테고리의 다른 글

쿠버네티스 이해  (1) 2023.04.14
Openshift, Openstack 이해  (0) 2023.04.14
RPC(정리 중)  (0) 2023.03.28
A.I.(LLM) 역사  (1) 2023.03.02
JAVA_자바 버전 정리  (0) 2022.12.07