본문 바로가기

Web Develop Tech/Oracle9i Fundmantal II

ORACLE - Oracle Shared Server의 사용 및 구성




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)
      • 풀링기능을 활성화 시킴으로써 더 많은 사용자들을 수용할 수 있습니다.
    • Connection Manager 라는 미들티어를 구성할 수 있는데, 이것은 별도의 기기에 구성하여 서버로 사용해야 합니다.
    • 사용자는 이 미들티어를 통해서 접속하며, 미들티어는 사용자의 다중접속을 서버에게는 단일 접속으로 처리하도록 해줍니다.

    • ▲오라클 Connection Manager

Oracle Shared Server의 이점

  • Instance에 대한 Process 수를 줄인다.
  • 허용되는 User수를 증가시킨다.
  • 로드 밸런싱을 수행한다.
    • 서버프로세스의 로드밸런스
  • 휴지 Server Process의 수를 줄인다.
  • 메모리 사용량과 시스템 오버헤드를 줄인다.
    • 주로 메모리에 대한 오버헤드는 많이 줄어들지만, CPU에 대한 오버헤드는 증가합니다.

Oracle Shared Server와 함께 Dedicated Server 사용







  • 절차상의 차이점은 있지만, 둘다 리스너를 통해서 가야합니다.
  • 또한 항상 디스패쳐당 접속수가 동일하게 유지하도록 해야 합니다.
  • 이렇게 디스패쳐에 연결되기 위해서는 Remote와 Server의 접속방식이 동일해야 합니다.
  • SYSDBA가 접속할 때는 LOCAL 이던 무엇이던간에 무조건 전용서버가 할당됩니다.

    • 사용자는 Request Queue를 통해 간접적으로 전하고, 반환을 받습니다.
    • Response Queue는 Dispatcher당 하나씩 가지고 있습니다.



    • Shared Pool 및 다른 메모리구조 : Larger Pool 입니다. Large Pool은 이러한 문제로 인해 반드시 설정해야 합니다.

    Oracle Shared Server의 구성

    • 필수 초기화 Parameter
      • DISPATCHERS
      • SHARED_SERVERS
        • 똑똑합니다. 동적으로 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
  •