티스토리 뷰
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;
'ORACLE > ADMIN' 카테고리의 다른 글
Oracle 데이터 이동 Datapump(expdp, impdp) 사용하기(1) (0) | 2020.07.30 |
---|---|
Oracle 접속(tnsnames.ora) 실습 (0) | 2020.07.29 |
Oracle 네트워크 설정 방식(client-side) (0) | 2020.07.28 |
Oracle Listener 구성(정적등록vs동적등록) (0) | 2020.07.28 |
Oracle undo 언두 관리 (0) | 2020.07.21 |