by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

공유 서버 대 전용 서버 연결에 대한 이해

Version 1 by 이지웅
on 4월 30, 2009 20:44.


 
compared with
Current by study.gurubee
on 8월 03, 2019 22:07.


 
Key
These lines were removed. This word was removed.
These lines were added. This word was added.

View page history


There are 31 changes. View first change.

 h1.목차
 [#I. 전용 서버]
  
[#II. 공유 서버]
  
[#III. 사용자 서버 vs 전용 서버 vs 공유 서버 ]
 * [#1. 사용자 서버]
 * [#2. 전용 서버]
 * [#3. 공유 서버]
  h2. I. 전용 서버
  
[#IV. 공유 서버에서 알아야 할 사항]
 * [#1. 다중 스레드 서버 구조 개요]
 * [#2. 공유서버 프로세스]
 * [#3. 디스패처 요구 및 응답 대기열]
 * [#4. Artificial 교착상태]
 * [#5. 다중스레드 서버의 제한된 작동]
  
 h1.I. 전용 서버
  
 * 전용서버 모드는 이름에서 알 수 있듯이, 데이터베이스에 연결하는 각각의 사용자 프로세스에 전용 서버
  프로세스를 할당하는 방식이다. 이 방식은 오라클 데이터베이스를 설치할 때 기본으로 선택되는 방식이며,
  대부분의 데이터베이스 운영자들이 이용하는 방식이다.
  * 전용서버 모드는 이름에서 알 수 있듯이, 데이터베이스에 연결하는 각각의 사용자 프로세스에 전용 서버 프로세스를 할당하는 방식이다.
 * 이 방식은 오라클 데이터베이스를 설치할 때 기본으로 선택되는 방식이며, 대부분의 데이터베이스 운영자들이 이용하는 방식이다.
 * 전용 서버는 사용자 프로세와 서버 프로세스 간의 일대일 매핑을 이용하지만, 공유 서버는 다대일 관계를 이용한다.
  
 !http://pds12.egloos.com/pmf/200808/29/85/e0016585_48b7784641944.jpg!
  
h1.II. 공유 서버
  \\
  
* 공유 서버 모드에서는 발송자(dispatcher)라 불리는 부가적인 컴포넌트가 사용자 프로세스를 서버 프로세스로
  안내하는 역할을 맡는다.
 * 사용자 프로세스가 공유 서버로의 접속을 요청하면, 오라클 넷 서비스는 세션 요청을 서버 프로세스가 아닌
  발송자로 연결해준다. 이어 발송자는 이 요청을 요청 대기열(Request Queue)로 보내며, 첫번째 Idle(휴식)
  공유 서버가 대기열의 요청을 받아들인다. 생성된 결과는 다시 응답 대기열(response Queue)로 보내지며,
  발송자는 이를 모니터링하며 적절한 시점에 클라이언트로 리턴해준다.
  h2. II. 공유 서버
  
* 공유 서버 모드에서는 발송자(dispatcher)라 불리는 부가적인 컴포넌트가 사용자 프로세스를 서버 프로세스로 안내하는 역할을 맡는다.
 * 사용자 프로세스가 공유 서버로의 접속을 요청하면, 오라클 넷 서비스는 세션 요청을 서버 프로세스가 아닌 발송자로 연결해준다.
 * 이어 발송자는 이 요청을 요청 대기열(Request Queue)로 보내며, 첫번째 Idle(휴식) 공유 서버가 대기열의 요청을 받아들인다.
 * 생성된 결과는 다시 응답 대기열(response Queue)로 보내지며, 발송자는 이를 모니터링하며 적절한 시점에 클라이언트로 리턴해준다.
  
 !http://pds11.egloos.com/pmf/200808/29/85/e0016585_48b778455aa14.jpg!
  
h1.III. 사용자 서버 vs 전용 서버 vs 공유 서버
  \\
  
h2.1. 사용자 서버
  h2. III. 사용자 서버 vs 전용 서버 vs 공유 서버
  
h4. 1. 사용자 서버
  
 !http://pds11.egloos.com/pmf/200808/29/85/e0016585_48b77bc017a46.jpg!
  
* 데이타베이스 응용프로그램과 Oracle 서버코드가 하나의 사용자 프로세스로 실행된다. 사용자가 서버에 직접
  연결하는 방식
 * 데이타베이스 응용프로그램과 단일 프로세스상의 Oracle 코드를 분리하여 유지 관리할 수 있는운영체제(VAX, VMS)에만
  적합하다.
  * 데이타베이스 응용프로그램과 Oracle 서버코드가 하나의 사용자 프로세스로 실행된다. 사용자가 서버에 직접 연결하는 방식
 * 데이타베이스 응용프로그램과 단일 프로세스상의 Oracle 코드를 분리하여 유지 관리할 수 있는운영체제(VAX, VMS)에만 적합하다.
  
h2.2. 전용 서버
  \\
  
h4. 2. 전용 서버
  
 !http://pds11.egloos.com/pmf/200808/29/85/e0016585_48b77bc0779d0.jpg!
  
* 사용자 프로세스가 한 컴퓨터에서 데이타베이스 응용프로그램을 실행하면 서버 프로세스는 관련된 Oracle 서버를
  다른 컴퓨터에서 실행한다.
  * 사용자 프로세스가 한 컴퓨터에서 데이타베이스 응용프로그램을 실행하면 서버 프로세스는 관련된 Oracle 서버를 다른 컴퓨터에서 실행한다.
 * 이 구성은 사용자 프로세스와 서버 프로세스는 일대일 관계를 가진다.
 * 전용서버 구성에서 사용자와 서버 프로세스간의 통신 처리 방법.
** 사용자 프로세스와 전용서버 프로세스가 동일한 컴퓨터에서 실행되도록 시스템이 구성되어 있다면 프로그램
 인터페이스는 호스트 운영체제의 프로세스간 통신 처리 방법을 사용한다.
 ** 사용자 프로세스와 전용서버 프로세스가 다른 컴퓨터에서 실행되면 프로그램 인터페이스는 네트워크 소프트웨어와
  SQL*Net 같은 통신 처리 방법을 포함한다.
  ** 사용자 프로세스와 전용서버 프로세스가 동일한 컴퓨터에서 실행되도록 시스템이 구성되어 있다면 프로그램 인터페이스는 호스트 운영체제의 프로세스간 통신 처리 방법을 사용한다.
 ** 사용자 프로세스와 전용서버 프로세스가 다른 컴퓨터에서 실행되면 프로그램 인터페이스는 네트워크 소프트웨어와 SQL*Net 같은 통신 처리 방법을 포함한다.
  
h2.3. 공유 서버
  \\
  
h4. 3. 공유 서버
  
 !http://pds10.egloos.com/pmf/200808/29/85/e0016585_48b77bc152367.jpg!
  
 * 다중 스레드 서버 구성은 여러 사용자 프로세스가 매우 적은수의 서버 프로세스를 공유한다.
 * 여러 사용자 프로세스는 디스패처 프로세스에 접속된다.
 * 디스패처는 클라이언트 요구사항을 다음 사용 가능한 공유 서버 프로세스로 경로를 지정하다.
 * 다중스레드 서버 구성의 장점은 시스템 오버헤드가 감소하여 많은 사용자가 접근할 수 있다.
  
h1.IV. 공유 서버에서 알아야 할 사항
  \\
  
h2.1. 다중 스레드 서버 구조 개요
  h2. IV. 공유 서버에서 알아야 할 사항
  
 h4. 1. 다중 스레드 서버 구조 개요
 * 다중 스레드 서버 구조를 사용하는 시스템에서 필요한 프로세스.
 ** 사용자 프로세스를 디스패처나 전용 서버에 접속하는 네트워크 리스너 프로세스.
 ** 하나 이상의 디스패처 프로세스.
 ** 하나 이상의 공유 서버 프로세스.
* 네트워크 리스너 프로세스는 접속 요청을 기다리고 각 사용자 프로세스가 공유 서버 프로세스를 사용할 수 있는지의
  여부를 결정.
  * 네트워크 리스너 프로세스는 접속 요청을 기다리고 각 사용자 프로세스가 공유 서버 프로세스를 사용할 수 있는지의 여부를 결정.
 * 사용할수 있다면 리스너는 사용자 프로세스에 디스패처 프로세스 주소를 준다.
* 사용자 프로세스가 전용 서버 프로세스를 요구하면 리스너 프로세스는 전용 서버 프로세스를 생성하여 사용자 프로세스를
  해당전용 서버 프로세스에 접속한다.
  * 사용자 프로세스가 전용 서버 프로세스를 요구하면 리스너 프로세스는 전용 서버 프로세스를 생성하여 사용자 프로세스를 해당전용 서버 프로세스에 접속한다.
 ** *공유서버를 사용하려면 사용자 프로세스와 Oracle인스턴스가 동일한 시스템에서 실행되더라도 사용자 프로세스는 SQL*Net을 통해 접속되야한다.*
* 디스패처가 SGA에 있는 요구 대기열에 요구사항을 보관하는데 여기서 다음 사용가능한 공유 서버 프로세스가 요구 사항을
  선택한다.
  * 디스패처가 SGA에 있는 요구 대기열에 요구사항을 보관하는데 여기서 다음 사용가능한 공유 서버 프로세스가 요구 사항을 선택한다.
 * 공유 서버 프로세스는 각 사용자 프로세스의 요구사항을 수행.
 * 공유 서버가 요구 사항을 완료하면 서버는 SGA에 접속된 사용자인 디스패처의 응답 대기열에 결과를 돌려 준다.
 * 디스패처는 사용자 프로세스에 완료된 요구 사항을 돌려준다.
  
h2.2. 공유서버 프로세스
  \\
  
 h4. 2. 공유서버 프로세스
 * 특정 사용자 프로세스와 관련이 없고 전용 서버 프로세스와 동일한 기능을 제공한다.
* 공유 서버 프로세스의 PGA는 사용자 관련 데이타를 포함하지 않는다.
  (PGA는 스택 영역과 프로세스별 변수만을 포함한다)
  * 공유 서버 프로세스의 PGA는 사용자 관련 데이타를 포함하지 않는다.(PGA는 스택 영역과 프로세스별 변수만을 포함한다)
 * 모든 세션 관련 정보는 SGA에 포함되어 있다.
 * Oracle은 요구 대기열의 길이를 기준으로 공유 서버 프로세스 수를 동적으로 조정한다.
 * 생성되는 공유 서버 프로세스 수는 초기화 매개변수 MTS_SERVERS와 MTS_MAX_SERVERS사이의 범위를 가진다.
  
h2.3 디스패처 요구 및 응답 대기열
  \\
  
 h4. 3 디스패처 요구 및 응답 대기열
 * 요구 대기열은 SGA에 있으며 인스턴스의 모든 디스패처 프로세스에 공통적이다.
 * 공유서버 프로세스는 FIFO방식으로 새로운 요구 사항을 선택한다.
* 하나의 공유서버 프로세스는 대기열에서 하나의 요구 사항을 선택하여 이 요구사항을 완료하여 호출한 디스패처의 응답 대기열에
  보관한다.
  * 하나의 공유서버 프로세스는 대기열에서 하나의 요구 사항을 선택하여 이 요구사항을 완료하여 호출한 디스패처의 응답 대기열에 보관한다.
 * 각 디스패처는 SGA에 자신의 응답 대기열을 가지고 있으며, 완료된 요구사항을 적합한 사용자 프로세스에 전송한다.
  
h2.4. Artificial 교착상태
  \\
  
 h4. 4. Artificial 교착상태
 * 공유 서버 프로세스 수의 제한 때문에 "artificial"교착상태가 발생할 가능성이 있다.
 ** 한 사용자가 SELECT 명령문에 FOR UPDATE 절을 실행하거나 LOCK TABLE 명령문을 실행하여 자원에 대한 배타적인 잠금을 획득한다
 ** 명령문 처리가 완료되면 잠금 요구를 처리하는데 사용된 공유 서버프로세스가 해제된다.
** 다른 사용자가 잠긴 자원을 액세스하려고 한다. 각 공유 서버 프로세스는 필요한 잠긴 자원을 사용할 수 있을 때까지 자신이
  처리하는 사용자 프로세스에 묶인다. 결국 모든 공유 서버는 잠긴 자원을 기다리는 사용자에게 묶인다.
 ** 원래 사용자가 이전에 획득한 잠금을 해제하기 위해 새로운 요구사항(COMMIT이나 ROLLBACK명령문)을 보내려고 하지만 모든 공유 서버
  프로세스가 이미 사용 중이므로 새로운 요구 사항을 보낼수 없다.
  ** 다른 사용자가 잠긴 자원을 액세스하려고 한다. 각 공유 서버 프로세스는 필요한 잠긴 자원을 사용할 수 있을 때까지 자신이 처리하는 사용자 프로세스에 묶인다. 결국 모든 공유 서버는 잠긴 자원을 기다리는 사용자에게 묶인다.
 ** 원래 사용자가 이전에 획득한 잠금을 해제하기 위해 새로운 요구사항(COMMIT이나 ROLLBACK명령문)을 보내려고 하지만 모든 공유 서버 프로세스가 이미 사용 중이므로 새로운 요구 사항을 보낼수 없다.
 * 교착상태를 해결하기 위해 새로운 공유 서버 프로세스가 자동으로 생성된다
* 매개변수 MTS_MAX_SERVERS(최대로 생성되는 공유 서버 프로세스의 수)에 지정된 대로 공유 서버 프로세스가 실행되고 있다면 데이타베이스
  관리자가 사용자 접속을 해제하여 교착상태를 수동으로 해결
  * 매개변수 MTS_MAX_SERVERS(최대로 생성되는 공유 서버 프로세스의 수)에 지정된 대로 공유 서버 프로세스가 실행되고 있다면 데이타베이스 관리자가 사용자 접속을 해제하여 교착상태를 수동으로 해결
  
h2.5. 다중스레드 서버의 제한된 작동
  \\
  
 h4. 5. 다중스레드 서버의 제한된 작동
 * 인스턴스 종료, 시작, 매체 복구를 포함한 특정관리 작업은 디스패쳐 프로세스에 접속된 상태에서 수행될수 없다.
 * 이런 작업은 일반적으로 INTERNAL로 접속된 경우에 만 수행할 수 있다.
 * 다중 스레드 서버로 구성된 시스템에서 INTERNAL로 접속하려면 디스패처 프로세스 대신 전용 서버 프로세스를 사용하고자 한다는 내용을
  기술해야 한다.
  
 h2. 문서에 대하여
 * 최초작성자 : [강정식]
 * 이 문서는 [오라클클럽|http://www.gurubee.net] [대용량 데이터베이스 스터디|제6차 데이터베이스 스터디] 모임에서 작성하였습니다.
 * {color:red}*이 문서의 내용은 THOMAS KYTE 저, 박민호 역의 이펙티브오라클을 참고했습니다.*{color}
  * 다중 스레드 서버로 구성된 시스템에서 INTERNAL로 접속하려면 디스패처 프로세스 대신 전용 서버 프로세스를 사용하고자 한다는 내용을 기술해야 한다.