티스토리 뷰

ORACLE/ADMIN

Oracle Shared server, Dedicated server

공부하는알파카 2020. 7. 28. 15:13

CONNECTION 

Connection 이란 User 프로세스와 Server 프로세스가 연결된 것이다.

 

 



CONNECTION TYPE

Dedicated Server

  • 특정 User 프로세스가 시킨 일만 하는 서버이다.

  • 동시 User가 100개이면 서버가 100개 떠야한다(user : server = 1 : 1).

  • Server 프로세스 각각은 PGA가 할당된다.

  • 장점 : User가 일을 많이, 쉴틈 없이 계속 시키는 경우에 좋은 성능을 나타낸다.

  • 단점 : OLTP(짧은 트랜잭션/간단한 SQL이 반복되는 환경, 접속자는 많고 일은 적은 환경) 환경에서 자원이 낭비된다. User : Server = 1 : 1이라서 확장성이 안좋다.

 

 

Shared Server

  • 여러 User 프로세스에 대해 적은 수의 공유 server 프로세스가 처리하는 방식이다.

  • 적은 메모리로 많은 요청을 처리하기 위한 목적으로 사용한다(메모리, 프로세스 아낌).

      →  동시 User의 수가 갑자기 늘어났을 때 현재 자원만으로도 유저 커넥션 처리가 가능하도록 하기 위해서

 

  • 성능이 좋아지는 건 아니다.

  • Dispatcher : Client가 보낸 요청을 받아서 request queue에 전달하는 역할을 한다.

  • Dispatcher를 사용하는 이유: load balance를 위해서(자원을 아껴쓰기 위해서)

  • 처리 과정

① user 프로세스가 dispatcher 프로세스와 연결된다.

② dispatcher가 SGA의 Request(common) Queue에 user의 요청을 등록한다.

③ shared server 프로세스가 Request Queue에서 요청을 확인하고 처리한다.

④ 처리 결과를 Response Queue에 등록한다.

⑤ dispatcher가 Response Queue에서 결과를 가져와 user에게 전달한다.

(dispatcher 수만큼 response queue 존재, request queue는 한 개)

 

 

 

 

 

 

PGA

  • Stack space와 UGA로 구성된다.

  • UGA는 User 프로세스의 세션정보를 저장한다.

  • 하지만 Shared Server 환경에서, 각 Server마다 User 프로세스 정보를 갖고 있으면 비효율적이고, User 세션에 여러 Shared server 프로세스에서 처리한 요청이 존재하게 될 수 있다. 따라서 User 정보를 공유하는 것이 좋다. 그런데 PGA는 공유가 안되기 때문에 UGA가 SGA(Large Pool)에 있으면 해결된다. 결국 PGA에는 stack space만 남게된다.



 

 

 

 

Shared/Dedicated Server 실습

OS 환경 : Oracle Linux 6.3
DB 환경 : Oracle Database 12.1.0.2

 

먼저, 세션과 관련된 정보들을 확인한다.

 

 

 

1. NEWDB에 400개 session을 동시에 열 수 있고, 그 중 5개는 dedicated session이 열리도록 설정

alter system set sessions=400 scope=spfile;
alter system set shared_server_sessions=395;

 

 

 

2. Dispatcher 개수는 초기 1, 최대 3개로 설정

alter system set dispatchers='(protocol=tcp)(dispatchers=1)';
alter system set max_dispatchers=3;

 

 

 

3. Shared server process 개수는 초기 2, 최대 10개로 설정

alter system set shared_servers=2;
alter system set max_shared_servers=10;

 

 

 

 

앞의 설정들이 적용될 수 있도록 DB를 내렸다가 올린다.

startup force

 

 

 

 

현재 작동중인 dispatcher와 shared server process를 조회한다.

!ps -ef | grep ora_[ds]0

 

 

 

 

앞에서 dispatcher의 초기 개수를 1개로 설정했기 때문에 1개만 떠있다.

select name, status from v$dispatcher;

 

 

 

앞에서 shared server process의 초기 개수를 2개로 설정했기 때문에 2개만 떠있다.

select name, status from v$shared_server;

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함