hyeonga_code

Database_76_ORACLE 구조_ORACLE DBMS, COMMIT 처리, CKPT 본문

Oracle Database

Database_76_ORACLE 구조_ORACLE DBMS, COMMIT 처리, CKPT

hyeonga 2023. 8. 27. 06:59
반응형

-- Oracle 구조
    -- Oracle DBMS_관계형 데이터베이스 관리 시스템
        -- 정보를 관리하는 데 있어 개방적이고 종합적이며 통합적인 접근 방식을 제공하는 데이터베이스 관리 시스템입니다.
    -- 서버 구조
        -- Instanace : Memory + Process
        -- 데이터베이스 : DB를 구성하는 파일의 집합입니다.(디스크)

        1) 서버 프로세스
            1-1) [     Instance     ]
                -- PGA_Program Global Area : 프로그램 글로벌 영역
                    -- 공유되지 않습니다.
                    -- 서버 프로세스에 의해 쓰기가 가능합니다.
                    -- 포함 : 정렬 영역, 세션 정보, Cursor State, Stack Space
                    -- 서버 프로세스들이 각각 가지고 있습니다.
                1-1-1) [     SGA_System Global Area     ] : 시스템 공유 영역
                    -- Oracle이 시스템으로부터 자원을 할당 받아 관리하는 시스템 영역입니다.
                    1-1-1-1) [     데이터베이스 버퍼 캐시     ]
                        -- 가장 최근에 사용된 블록을 저장합니다.
                        -- 버퍼 크기 : DB_BLOCK_SIZE를 기반으로 합니다.
                        -- 버퍼 수 : DB_BLOCK_BUFFERS에 의해 정의됩니다.
                    1-1-1-2) [     리두 로그 버퍼    ] : 올려둔 버퍼를 기록합니다. DML만 남기게 됩니다.
                        -- LOG_BUFFER에 의해 정의된 크기를 가집니다.
                        -- Instance를 통해 변경된 사항을 기록합니다.
                        -- 연속적으로 사용합니다.
                        -- 순환 버퍼입니다.
                    1-1-1-3) [     Shared Pool     ]
                        -- 라이브러리 캐시는 SQL 문 텍스트, 구문 분석된 코드 및 실행 계획을 포함합니다.
                        -- 데이터 딕셔너리 캐시는 테이블, 열, 기타 객체 정의 및 권한을 포함합니다.
                        -- Shared PooL은 SHARED_POOL_SIZE에 의해 크기가 조정됩니다.
                        -- 단편화가 심하게 일어날 수 있습니다.
                        1-1-1-1-1) [     라이브러리 캐시     ]
                        1-1-1-1-2) [     데이터 딕셔너리 캐시     ]
                1-1-2) [     백그라운드 프로세스     ]
                    1-1-2-1) [     필수 백그라운드 프로세스     ]
                        -- 문제가 발생하는 경우 DB가 중단됩니다.
                        1-1-2-1-1) [     DBWn_Database Writer     ] : 버퍼 캐시에 있는 수정된 버퍼의 내용을 데이터 파일에 기록합니다.
                        1-1-2-1-2) [     LGWR_Log Writer     ] : 데이터베이스 버퍼 캐시에서 발생한 모든 변화를 기록합니다.
                            -- SGA의 리두로그 버퍼에 생겨나며 트랜잭션이 완료되었을 때 LGWR가 리두로그 버퍼의 내용을 온라인 리두로그 파일에 기록합니다.
                        1-1-2-1-3) [     CKPT_Check Point     ]
                            -- 변경된 데이터베이스 버퍼를 디스크 내의 데이터 파일로 저장하는 것을 보장합니다.
                            -- 변화된 데이터 블록의 수, 일정 시간을 두고 DBWn 프로세스가 데이터베이스 버퍼를 데이터 파일로 저장하도록 명령합니다.
                            -- 체크 포인트가 발생하면 데이터 파일과 컨트롤 파일의 헤더를 갱신합니다.
                        1-1-2-1-4) [     SMON_System Monitor     ] : 오라클 인스턴스를 관리하는 프로세스입니다.
                            -- 오라클 인스턴스 fail시 인스턴스를 복구하는 역할입니다.
                            -- 인스턴스를 자동으로 복구할 수 있습니다.( 디스크 장애는 복구 불가 )
                            -- 데이터 파일의 빈 공간을 연결하여 하나의 큰 빈공간으로 만듭니다.
                            -- 더 이상 사용하지 않는 임시 블록 세그먼트들을 재사용할 수 있게 합니다.
                        1-1-2-1-5) [     PMON_Process Monitor     ] : 각 프로세스들을 감시하는 프로세스입니다.
                            -- 비정상 종료된 유저 프로세스 데이터베이스의 접속을 정리합니다.
                            -- 정상적으로 작동하지 않는 프로세스들을 감시하여 종료시킵니다.
                            -- 비정상적으로 종료된 프로세스들에게 할당된 SGA 리소스를 재사용할 수 있게 합니다.
                            -- 커밋되지 않은 트랜잭션을 롤백시킵니다.
                    1-1-2-2) [     기타 백그라운드 프로세스     ]
            1-2) [     데이터 베이스     ]
                1-2-1) [     데이터 파일     ] : 용량을 좌우합니다.
                1-2-2) [     콘트롤 파일     ]
                1-2-3) [     온라인 리두 로그 파일     ]
                -- [      백업 파일      ] : 데이터 파일, 콘트롤 파일, 온라인 리두 로그 파일을 백업합니다.
                -- [      파라미터 파일      ]
                -- [      네트워크 파일      ]
                -- [      아카이브된 로그 파일      ] 
            -- 리두 로그는 복구를 위함입니다.
            -- 램 : 주 기억 장치
            -- 하드디스크 : 보조 기억 장치
            
            -- COMMIT 처리
                -- 서버 프로세스에서 리두 로그 버퍼를 지나 LGWR > 리두 로그 파일로 들어가게 됩니다.
                    -- 데이터를 복구하는 경우 사용하는 곳에 저장합니다.
                        -- 복구 파일을 저장하면서 메모리에 커밋 직후의 데이터가 저장되어 있습니다.
                -- CKPT : 커밋한 데이터를 계속 호출하는 경우 데이터가 데이터베이스에 저장되기 어렵습니다.
                    -- 메모리의 데이터를 정기적으로 백업하는 작업입니다.
                    -- 데이터베이스를 재시동하는 것이 아닙니다.
     

반응형