ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle DB 구조 파헤치기
    DB 공부 2024. 4. 5. 18:35

    Oracle DB의 구조를 크게 뜯어보면 우선 Instance와 Database로 나뉜다.

     

    그리고 Instance 안에서도 SGA와 Background Process로 나뉘고, 각각의 역할을 하는 구성원들이 또 있다.

     

    Oracle DB를 구성하는 구성요소를 하나씩 뜯어보자.

     

    1. Instance

      1-1. SGA (System Global Area, 공유 영역)

         : 여러 프로세스가 공유되기에 직렬화 장치 존재

        1) Shared Area

           - Libarary Cache: SQL, StoredProcedure, 실행계획 저장

           - Dictionary Cache: 테이블 구성요소, 스키마 구조 등 저장

        2) DB Buffer Cache

            : Data files에서 읽은 데이터 캐싱

              Direct Path Read 방식을 제외하고는 모든 블록의 읽기는 캐시를 통해 Read 됨

               버퍼 블록은 LRU알고리즘*으로 이루어짐

        3) Redo Log Buffer

        4) Java Pool

        5) Large Pool

     

      1-2. Background Process

        1) PMON: 좀비 프로세스 Clear, 제거된 서버 프로세스의 PGA 반환

        2) SMON: Instance Recovery*, 임시 세그먼트와 익스텐트 모니터링

        3) DB Writter: DB Buffer의 내용을 Datafiles에 작성

             > 파라미터: db_writer_processes

             > 기동조건: 주기적(3초)으로 CKPT 발생, Direct Path Read 직전, Tablespace의 ReadOnly설정 변경 시, Tablespace 온라인 백업 시, 테이블 Truncate 또는 Drop 시점

        4) Log Writter: 서버 프로세스가 변경한 내역을 Redo Log Buffer 기록, RedoLogBuffer의 내용을 RedoLogfiles 작성, Fast Commit*

             > 기동조건: 매 3초마다, RedoLogBuffer가 1/3 이상 찼을 때, Redo Log Buffer가 1MB 넘을 때, DBWR 기동 직전, Commit 발생 시

        5) CheckPoint: 메모리와 File간 동기화 시점 보장. CKPT 구동 시 DBWR에게 기동 신호 전달. CKPT 정보는 SCN(CKPT)*, RBA(Redo Byte Address, Redo Log 위치) 값 등 저장. Instance Recovery* 시 Roll Forward 시작 위치 지정. Control file header와 Data file header에 Check Point 정보 기록

     

    2. PGA (Process Global Area)

        : 데이터 정렬, Hash 관련 작업, 세션과 커서 관련 상태 정보 저장

     

    3. DataBase

      1) Data files

           : system 정보, checkpoint 정보

      2) Control files

           : datafiles, redo log files의 경로를 가지며 checkpoint 정보 가짐

      3) Redo Log files

           : DB 복구 시, DML을 재 실행하기 위해 필요한 로그 정보 저장

             Log Writter가 Append 방식으로 Write

             Write Ahead Logging > DB Buffer Cache에 쓰기 이전에 Redo Log 작성(DBWR 이전에 LGWR 먼저 작동)

             full 날 수 없으며, Sequencial하게 사용됨

      4) Parameter files

           : Instance 기동 시 제일 먼저 읽는 파일로 각종 설정 정보 저장

             Contorl files의 위치와 경로를 헤더에 가지고 있음

      5) Password files

      6) Archived Log files

           : Redo Log Files에서 로그 스위치를 할 때, Archive로 로그파일 떨어짐.

            Archive가 FULL나면 Redo Log에서 멈추는 현상 발생 > Archive Clear하면 해결됨

            DBA는 매일 Archive용량 확인 필요. 평상시 1-20% 사용하도록 관리

           주기적으로 백업받고 지워줘야 함. 보관주기는 DBA가 정하여 관리됨.

     

    * 상세 설명

    A. LRU 알고리즘 (Least Recently Used)

      - 데이터 버퍼 블록은 다음과 같은 상태로 나누어 진다

    상태 설명
    Free Buffer 인스턴스 기동 후 아직 데이터가 읽히지 않아 비어있거나(Clean Buffer),
    데이터가 담겨있지만 데이터 파일과 동기화되어 덮어써도 되는 상태.
    오라클이 새로운 데이터 블록을 로딩하려면 먼저 Free Buffer를 확보해야 함
    Dirty Buffer 캐시 내에서 변경되었으나 아직 디스크에 기록되지 않은 블록. 
    디스크에 기록되는 순간 Free 버퍼로 상태 변경됨
    Pinned Buffer 읽기 또는 쓰기 작업을 위해 현재 엑세스 되고 있는 버퍼 블록.

     - LRU 알고리즘은 이 데이터 블록이 사용빈도 순에 따라 위치를 옮기다가 Free 버퍼가 필요하게 되면 엑세스 빈도 낮은 데이터블록을 우선 하여 밀어내(AgingOut) 자주 액세스되는 블록이 캐시에 오래 남도록 관리하는 것.

     

    B. Instance Recovery

     - 절차: Roll Forward -> Roll Back -> Check Point

     - SMON이 실행

     - Roll Forward: 최종 CheckPoint 발생 이후부터 최근까지의 Redo Log의 데이터를 DB Buffer Cache에 적재

     - Roll Back: Commit을 만나지 않은 데이터를 Undo 이용하여 제거

     - Check Point: Cache와 데이터 파일 동기화시점 인지를 위해 사용

     

    C. SCN(System Checkpoint Number)

     - 체크포인트 증가 시 +1됨

     - 이외 SCN 약자를 가진 number가 있어 추가 설명

        (1) SCN (System Change Number)

             : SCN 중 제일 작으며, 데이터 변경 시마다 +1 증가

        (2) SCN (System Commit Number)

             : 커밋 시 +1 증가

         (+) WrapNo

              : 위의 SCN들이 다 가지고 있으며 SCN의 실행 시점을 채번하여 비교

    'DB 공부' 카테고리의 다른 글

    제51회 SQLP 합격 수기  (3) 2024.09.30
    오라클의 파라미터 파일(spfile, pfile)  (0) 2024.04.07
    Oracle DB의 구동(startup & shutdown)  (0) 2024.04.06
Designed by Tistory.