반응형
ORACLE - Shared Server와 Dedicated Server의 접속 방식
- 이전에 봤던 그림이랑 다르네요. ㅡ.,ㅡ 물론, 데이터베이스 버퍼 캐시 등도 있지만,
- 설명을 하기 편하게 하기 위해, 생략 하였습니다.
- 사용자 프로세스가 Dedicated Server를 통해 접속
- 반면 Shared Server를 통하면 여러개의 백그라운드 프로세스를 통하여 접속 및 처리가 가능하게 됩니다.
- DO0 , DO1...은 디스패쳐입니다.
- Conn hr/hr 이 L에 돌아갔다가 오는데, 이것은 리다이렉트 방식입니다.
- 이렇게 프로세스는 적지만 다량의 작업이 가능하기 때문에, 서버에 부하가 적습니다.
- 하지만, 반환하는 시간이 Dedicated Server 보다는 조금 더 오래 걸릴 수 있습니다.
- Shared Server를 사용한다고 해서, Dedicated Server를 사용하지 못하는 것은 아닙니다.
- Shared Server를 사용하면, 서버 프로세스들간의 Road Balance가 되어서 idle(논다)프로세스가 줄어들어서 작업에 효율을 높일 수 있습니다.
PPT 참고 설명
- Dedicated Server
-
클라이언트가 명령문을 요청해서 처리하는 동안에만 동작하는 프로세스 입니다.
-
-
Shared Server
- 미리 정의된 프로세스들이 사용자의 접속이 없어도 이렇게 실행되어 있습니다.
- 사용자는 Dispatcher 들을 통해서 간접적으로 접속하여 반환하게 됩니다.
# 기타 설명
- Dedicated Server에서는 공유할 필요가 없기 때문에, 각각의 명령문을 PGA에 저장되어 사용됩니다.
- 반면, Shared Server Processor 들도 PGA가 있긴 하지만, 각각의 명령문을 공유해야 하기 때문에 Stack정보를 제외하고 나머지는 SGA에 들어가면서 UGA로 명칭만 변경되어 공유가 됩니다.
- 이 UGA 는 기본적으로 Shared Pool에 들어가게 되고, 접속자가 늘어날 경우에는 이 UGA공간도 늘어납니다.
- Shared Server 구조에서는 Large Pool 사이즈를 지정하여, UGA가 들어갈 수 있도록 사용해줘야 합니다.(기본 0)
- Shared Server 구조는 다중 시스템(프로세스가 여러개)일 때 효율적입니다.
- Shared Server를 구성할 때에는 Spfile Shared_Servers = 를 몇개이다 라고 지정해야 하며,
- Dispatchers = 역시 속성등도 구성을 해줘야 합니다.
- 그 중에, Connection 개수를 지정해 주는데, 예로 Conn = 30 이면, 최대 90명이 접속가능 합니다.
- 또한 Pool = on 속성을 사용할 수 있으며, 이것을 사용하면 세션 기능도 사용가능하여 Connection을 더 증가시킬 수 있습니다.
- 예 : Dispatchers = (conn = 30)
(Pool = on)
(sess = 50) - 풀링기능을 활성화 시킴으로써 더 많은 사용자들을 수용할 수 있습니다.
- 예 : Dispatchers = (conn = 30)
- Connection Manager 라는 미들티어를 구성할 수 있는데, 이것은 별도의 기기에 구성하여 서버로 사용해야 합니다.
- 사용자는 이 미들티어를 통해서 접속하며, 미들티어는 사용자의 다중접속을 서버에게는 단일 접속으로 처리하도록 해줍니다.
- ▲오라클 Connection Manager
Oracle Shared Server의 이점
- Instance에 대한 Process 수를 줄인다.
- 허용되는 User수를 증가시킨다.
- 로드 밸런싱을 수행한다.
- 서버프로세스의 로드밸런스
- 휴지 Server Process의 수를 줄인다.
- 메모리 사용량과 시스템 오버헤드를 줄인다.
- 주로 메모리에 대한 오버헤드는 많이 줄어들지만, CPU에 대한 오버헤드는 증가합니다.
Oracle Shared Server와 함께 Dedicated Server 사용
- 사용자는 Request Queue를 통해 간접적으로 전하고, 반환을 받습니다.
- Response Queue는 Dispatcher당 하나씩 가지고 있습니다.
- Shared Pool 및 다른 메모리구조 : Larger Pool 입니다. Large Pool은 이러한 문제로 인해 반드시 설정해야 합니다.
Oracle Shared Server의 구성
- 필수 초기화 Parameter
- DISPATCHERS
- SHARED_SERVERS
- 똑똑합니다. 동적으로 MAX 값까지 필요하면 늘여줍니다. 하지만, 줄이는건 동적이지 못합니다.
- 똑똑합니다. 동적으로 MAX 값까지 필요하면 늘여줍니다. 하지만, 줄이는건 동적이지 못합니다.
- 선택적 초기화 Parameter
- MAX_DISPATCHERS
- MAX_SHARED_SERVERS
- 이 MAX 값은 Default값이 있기 때문에 선택적 값입니다.
- CIRCUITS
- Shared Server를 통한 경로. Response, Request를 통한....
- 이것은 값을 튜닝해서 서버의 성능을 높이거나 하진 않지만, 값을 높여 놓으면 나중에 오라클이 인지를 하게 되고, 나중에 오라클이 Queue 사이즈를 크게 조정하거나 합니다.
- 단, 큐를 키우게 되면 SGA의 다른 요소가 영향을 받습니다.
- SHARED_SERVER_SESSIONS
- Shared Server Sessions 을 모두 제한하는 파라미터 입니다.
- 만약, 6개의 세션이 등록되었다면, 6개의 세션이 실행하고 있다는 뜻이 됩니다.
- V$Session을 조회하면, 혼자 작업 중인데도 많은 세션이 동작중임을 볼 수 있습니다.
- 1명이 쓰는데도 많이 접속한 것을 볼 수 있지요.
- Shared_Server_Sessions의 값은 항상 낮게 설정해야 합니다. 그래야만, 나중에 Shared Server가 꽉 차더라도 공간을 보장해줘서 후에, Dedicated Server를 예약할 수 있도록 합니다.
- 지정된 프로토콜에 대해 처음에 시작된 Dispatcher 수를 지정합니다.
- \는 줄바꿈표시 ㅡ.,ㅡ
- DISPATCHERS 매개변수
데이터베이스 관리자는 DISPATCHERS 매개변수를 사용하여 각 디스패처에 대해 다양
한 속성을 설정합니다.
Oracle9i는 Oracle Net 서비스에서 사용되는 구문과 유사한 이름-값 구문을 지원하여 기
존 속성과 추가 속성의 사양을 위치 독립적이며 대소문자를 구분하지 않는 방식으로 설
정합니다.
예:
Oracle Database Configuration Assistant를 사용하여 이 매개변수를 구성할 수 있습니다.
Dispatchers의 파라미터
- PROTOCOL
- ADDRESS
- DESCRIPTION
- DISPATCHERS
- SESSIONS
- LISTENER
- CONNECTIONS
- 동시에 실행될 수 잇는 최대 디스패쳐 프로세스 수 지정합니다.
- 처음 시작 시보다 더 많은 디스패쳐를 지정이 가능합니다.
- 인스턴스가 시작될 때 생성할 서버 프로세스의 수를 지정합니다.
- 이것은 Alter 명령어를 이용하여 늘리거나 줄일 수 있습니다.
- 시작 가능한 최대 Shared Server수를 지정합니다.
- 직접 조정하지 않아도, 나중에 오라클서버가 자동으로 늘렺부니다.
- Request Queue의 길이에 따라 공유서버의 구성이 달라집니다.
- 수신 및 송신 네트워크 세션에 사용할 수 있는 가상 Circuit의 총 수를 지정합니다.
- 전체 SGA 크기에 영향을 줍니다.
- 허용되는 Oracle Shared ServerUser 세션의 총 수를 지정합니다.
- 이 파라미터를 설정하면 전용서버에 대한 사용자 세션을 예약할 수 있습니다.
- LARGE_POOL_SIZE : UGA를 사용하기 위해 라지풀을 조정한다.
▶ 설정 확인
- 위의 명령을 실행하여 인스턴스가 시작될 때 디스패쳐가 리스너에 등록되었는지 확인합니다.
- 단일 연결을 설정하여 공유 서버를 통해 연결한 다음 V$Circuit 뷰를 질의하여 Shared Server 연결 당 하나의 항목만 표시되는지 확인합니다.
▶ 동적 뷰
- V$CIRCUITS
- V$SHARED_SERVER
- V$DISPATCHER
- V$SHARED_SERVER_MONITOR
- V$QUEUE
- V$SESSION
반응형
'ORACLE > ADMIN' 카테고리의 다른 글
오라클 모니터링 쿼리 (0) | 2011.12.21 |
---|---|
oracle inactive session 정리 (0) | 2011.12.15 |
Shared Server (MTS) Diagnostics [ID 1005259.6] (0) | 2011.12.08 |
oracle MTS (0) | 2011.12.08 |
오라클 패치 후 다시 원복 하기 (0) | 2011.12.08 |