Oracle2009. 10. 13. 16:35

복사 http://blog.naver.com/kiyoun82/110071439206

   *  RAC  [ Real Application Cluster]

 

    -  Application  : 클라이언트, 리스너 같은 데이터 베이스로 부터 서비를 받는 모든 것들..

 

    - Cluster : 군집, 집합

 

    :    하나의 데이터 베이스에 여러개의 인스턴스를 띄어 놓아 만들어진 상태

 

   * 싱글 인스턴스

 

  

 

 

   * Instance 가 두 개 일 경우

 

    

     

          - 인스턴스는 각 머신에 있다.

          - 1번 인스턴스에서 작업을 하다 인스턴스가 죽었을 경우(Fail over)

            2번 인스턴스로 투명하게 넘어가서 쓰게 된다. (가용성)

 

 

  * RAC 를 쓰는 이유?

 

   1] 가용성

 

   2] 로드 발란스

 

   * RAC 구조

 

    

 

    - Interconnect   :   DATAFILE 로 내려 가지 않고 메모리 to  메모리로 전송이 가능하게 해준다.

                                (Cache Fusion) (OPS 보다 당연히 빠르다.)

 

                 :  Ethernet + UDP : 가장 보편적으로 사용

                                - 1Gbit Ethernet    :  현재 보편적으로 사용 (초당 125M 정도)

                                - 10Gbit Ethernet  :  향후..

 

                 :  Infiniband : 향후  ( 초당 2Gbit ~ 96Gbit 까지 적용) 

 

                 : 전송량이 많을 때 부하가 생긴다. 

 

          % ops : 메모리에서 다른 메모리로 읽어질 때 중간에 디스크로 내려썼다가 올라온다.

 

    - 한쪽 클라이언트에서 다른 쪽 클라이언트 까지 같이 설치해 주어야 한다.

 

    - Shared Storage  :  Raw Device  :  가장 보편적 으로 사용 / 쓰기 속도가 좋다  / 관리가 불편

 

                                     :  Clustered File System : 비싸다. 잘 깨진다는 문제가 있다.

 

                                     :  ASM : 점점 기능이 좋아지고 있다.(아직까지는 문제가...

 

 

 

 

    * 클러스터

 

     - OS 클러스터

 

 

     - ORACLE 클러스터

  

 

    * 10g RAC 설치 순서

 

     1] 오라클 클러스터를 먼저 설치

 

     2] 오라클 소프트웨어 설치

 

     3] 오라클 ASM 설치 (10g)                 [OS 클러스터를 안쓸 경우 ASM 을 무조건 설치해 주어야 한다.]

 

     4] 오라클 DB 설치

 

    * RAW Device  = > OS 클러스터를 설치 해 주어야 한다.

 

            % 여기서 잠깐!!!!!

 

 $ CRS_STAT -t   :  [Target 컬럼] online 되어져 있어야 다른 쪽 노드로 넘어갈 수 있다.

                          : [State]   현재 상태

 

 $ CRS_STOP    -all :                    RAC 서비스가 멈추어있을 경우에는 stat 를 먼저 확인해 본후 OFF LIne 되었을 경우

 $ CRS_START  -all :                    서비스를 내렸다가(STOP)  다시 올려준다.(START)

 

 

 

  - GCS : Global Cache Sercive [LMS process]

             : 인스턴스간 DATA 전송을 담당

             : 노드 간의 DATA , 메세지 전송을 관리하는 서비스

           

          -> LMS Process : Global Cache 동기화, 최대 36개까지. (10g R2) 

                                        : 데이터 전송이 느릴 때 갯수를 늘려준다.

 

 - GES : Global Enqueue Service [LMD, LCK process]

             : Global 하게 Lock 을 관리

             : 노드간의 Lock 정보를 요청하고 응답하는 것을 관리 하는 서비스

 

         -> LMD Process : Global enqueue 동기화 (Lcok)

         -> LCK Process : Library Cache Lock / Pin , Row Cache Lock 동기화

 

 - CGS : Cluster Group Service [LMON  Process ]

            : 클러스터의 멤버쉽을 관리하는 서비스

 

          -> LMON  Process   : Global Lock Monitoring. Process Recovery 등의 작업 수행

                                                (PMON의 Global Version 작업 수행)    

                                               

 

[ PMON 의 역활? http://blog.naver.com/kiyoun82/110068928804 ]

 

 - GRD : Global Resource Directory

            : Global Resource 의 위치 및 상태를 관리하는 분산 DATABASE

            : 모든 BLOCK 의 정보는 BLOCK이 속한 MASTER NODE 의 GRD 에서 관리 

            : BLOCK 에 최신 정보가 있다.

 

          -> GRD 가 관리하는 정보

            : DBA [DATA BLOCK ADDRESS] + Holder 위치 [ holding 하고 있는 위치, emp가 1번에 있니?2번에 있니?없니??]

             + LOCK MODE [Null , Shared , Exclusive]  + Role [ Local , Global ] + SCN  + PI (Past Image) 

 

         % Global  -  여러개의 인스턴스를 하나로 쓴다고 하여 Global 이라 표현

 

 

  * show parameter service

 

    --> 1번 세션확인 : OLTP  , YU ,  BATCH                     2번 세션확인 :  DB2

 

   -->  1번 세션을  shutdown abort (엔터 강하게!!!!)

 

   -->  1번 세션은 DB down 상태 ---------------->  2번 세션 : OLTP ,  YU,  BATCH

 

        1번 세션에서 넘겨야 한다는 정보는 OCR File 에 들어있다.

 

 

    % RAC 는 Data file, Control File, Redo log File 이외에, Voting DiskOCR File 까지 필요하다.

 

      -  OCR File : 클러스터 구성에 필요한 메타 정보를 가지고 있다.

                       (  -> 작업 중이던 Service가  인스턴스가 죽으면 다른 인스턴스에 넘겨야 한다는 정보가 들어있다)

 

      -  Voting Disk  : Split Brain 현상을 방지하기 위한 파일

                      ( Split Brain 은 의학용어로 좌뇌와 우뇌의 SYNC 가 맞지 않은 경우, 동기화가 이루어져 있지 않은 경우를 말함)

 

                : 일관된 이미지를 보기 위한 것

                : 양 쪽의 인스턴스가 동기화, SYNC 를 맞춰주는 것

 

  * [논리적 / 물리적] 백업을 해주어야 한다.

 

  * OCR FIle 은 오라클이 자동으로 해준다.

 

  * Cahce Fusion

         - interconnect 를 통한 효율적인 글로벌 버퍼 동기화 메커니즘.

         - Memory to Memory  동기화!!!!!

 

     : Request Node, Master Node, Holder Node 가 Interconnect 를 통해 Block/Message 를 교환 하는 Mechanism

 


 

 

 

     - Request Node : 필요한 특정 블록을 Master Node 의 LMSn 에 요청 

                               : [Request 와 Master 는 메세지만 전송되어진다]

 

     - Master Node : 요청받은 블록(버퍼)의 홀더 노드를 파악한 후 LMSn 에게 요청 노드로의 버퍼 전송을 요청

                              만일 없을 시에는 Block Grant Message 전달 (직접 ㄷ스크에서 읽어 들이는 권한을 부여]

 

     - Holder Node : 블럭(버퍼)전송이 가능한 경우, 요청 노드로 버퍼를 전송한다.

 

 

 

   %  노드가 두개 일 경우!!!

 

1 -   A user 가 EMP 를 읽으려면  1번 instance GRD 를 확인, 없으면 2번 GRD 확인, 없으면 디스크에서 올린다.

 

2 -  이 때 B user 가 EMP 를 읽으려고 2번 instance 에서 접근시 LMSn 이 interconnect 로 emp 를 넘겨준다.

 

3 - 이 경우 둘 다 Shared mode 의 Lock 을 갖는다.

 

4 - B user 가 scott 의 SAL 을 UPDATE 하고 COMMIT 하였을 경우,

                  ->  B user 가 갖고 있던 Shared mode Lock 은 Exclusive 하게 바뀐다.

 

5 - A user 가 가지고 있던 Shared Mode Lock 은 Null Mode 로 바뀐다.

 

6 - A user 가 다음 EMP 를 보고자 할 경우에는 UPDATE 된 것을 보아야 한다.(commit 했으니깐...)

     [Null Mode 는 다른 노드에서 받아와야 한다는 의미를 내포한다.]

 

Posted by Julyus