ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CH 5-1: 인스턴스 & 인스턴스 관리 개요
    DB 스터디/2 Day DBA 2026. 2. 27. 16:43

    Ch 5. Managing the Oracle Instance (오라클 인스턴스 관리)

    인스턴스 개요

     

    오라클 DB: 데이터베이스인스턴스로 구성

    • 데이터베이스: 사용자 데이터와 메타데이터를 저장하는 디스크 파일 집합
    • 메타데이터: 데이터에 대한 데이터. DB의 구조적, 구성적, 제어 정보 포함
    • 인스턴스:  백그라운드 프로세스와 공유 메모리(SGA)의 집합
    • SID(시스템 ID): 인스턴스의 ID(식별자)
    • 로컬 연결: OS 환경 변수 ORACLE_SIDORACLE_HOME 설정하여 인스턴스 지정
    • 원격 연결: 네트워크 주소와 DB 서비스 이름을 지정하여 인스턴스 식별

    초기화 매개변수 (Initialization Parameters)

     

    초기화 매개변수(initialization parameters): 인스턴스의 환경과 동작을 제어하는 설정값

     

    서버 매개변수 파일(Server Parameter File, SPFILE)

    • SPFILE: 데이터베이스가 읽고 쓸 수 있는 바이너리 서버 파라미터 파일
    • 직접 파일 수정 불가, 명령어로 수정 가능
    • 변경 사항은 데이터베이스 종료 및 재시작 후에도 유지 (SCOPE에 따라 달라짐)

    텍스트 초기화 매개변수 파일(Text Initialization Parameter File, PFILE)

    • PFILE: 텍스트 파일로 직접 수정 가능한 서버 파라미터 파일
    • 텍스트 편집기 사용해 수정 가능
    • 변경 사항은 데이터베이스 인스턴스 재시작해야 적용

    백그라운드 프로세스 (Background Processes)

     

    백그라운드 프로세스: 인스턴스에서 메모리 관리 등을 자동으로 수행하는 지원 프로세스

     

    • DBWn(DB 라이터): 버퍼 캐시에 있는 Dirty Block을 디스크의 파일로 기록
    • LGWR(로그 라이터): 리두 엔트리를 디스크에 기록 
    • CKPT(체크포인트):  DBWn에 체크포인트 신호 전송, 데이터 파일과 제어 파일 갱신, 갱신 시각 기록
    • SMON: 인스턴스 리커버리 수행
    • PMON: 유저 프로세스에 failure 발생 시 복구 수행
    • ARCn(아카이버): 온라인 리두 로그 파일을 아카이브 리두 로그 파일로 복사
    • MMON(관리 모니터): 특정 지표가 임계값을 초과할 때 경고 발행, 추가 프로세스를 생성해 스냅샷 수행 등
    • CJQ0 및 Jnnn: 사용자 작업(job) 실행, 주로 배치 모드로 동작

    서버 프로세스 (Server Processes)

     

    서버 프로세스: 클라이언트 프로그램을 대신해 DB와의 연결을 처리하는 프로세스. SQL 문을 파싱하고 실행하며, 결과를 fetch하여 클라이언트 프로그램에 반환하는 역할.

     

    클라이언트 프로그램: 사용자를 대신해 동작하는 프로그램. 사용자의 요청을 서버 프로세스에 전달하고 결과를 받아 출력. (예시: SQL*Plus, SQL Developer)

     

    서버 프로세스 동작 방식

    • 전용 서버 모드 (Dedicated Server Mode): 각 클라이언트 프로세스가 자신만의 전용 서버 프로세스를 보유하는 방식. 1:1 대응 구조이므로 연결이 많아질수록 서버의 리소스 소비가 증가함
    • 공유 서버 모드 (Shared Server Mode): 여러 클라이언트 연결이 소수의 서버 프로세스를 공유하는 방식. 동시 접속자가 많은 환경에서 리소스 효율적으로 사용 가능.

    인스턴스 메모리 구조

    인스턴스 구조 (출처: 오라클 19c 공식 문서)

     

    SGA (System Global Area): 인스턴스 운영에 필요한 데이터와 제어 정보를 담고 있는 메모리 구조들의 집합. 모든 서버 프로세스와 백그라운드 프로세스가 함께 공유함.

    • 데이터베이스 버퍼 캐시: 데이터가 데이터베이스에 저장되기 전에 조회되거나 수정되려면 먼저 디스크에서 읽혀 버퍼 캐시에 저장되어야 함. 모든 유저 프로세스는 이 버퍼 캐시 접근을 공유. 
    • 리두 로그 버퍼: 디스크에 있는 온라인 리두 로그 파일에 기록되기 전까지 리두 데이터 캐시하는 영역
    • 공유 풀(Shared Pool): 재사용 가능한 SQL 파싱 결과, 데이터 딕셔너리 정보, 저장 프로시저 등을 캐시하는 영역
    • 대형 풀(Large Pool): (선택적) 백업/복구(RMAN), 병렬 쿼리, 공유 서버 모드의 UGA 등 대규모 메모리 요구 작업에 사용되는 영역
    • 인메모리 영역(In-Memory Area): (선택적) 인메모리 컬럼 저장소(IM Column Store) 포함. 테이블, 파티션, Mview를 컬럼 기반 형식으로 저장하여 대용량 데이터 스캔 및 분석 쿼리 성능 최적화.
    • 자바 풀: JVM 내에서 세션별 자바 코드와 데이터를 저장하는 메모리 영역
    • 스트림 풀: 오라클 복제 기능에서 사용하는 메모리 영역
    • 리절트 캐시: SQL 쿼리 및 PL/SQL 함수의 실행 결과를 캐시하는 영역. 동일한 쿼리가 재실행될 때 캐시된 결과를 바로 반환해 실제 쿼리 실행 비용 절감.

    인스턴스 PGA 구조 (출처: 오라클 19c 공식 문서)

     

    PGA (Program Global Area): 서버 프로세스를 위한 데이터와 제어 정보를 담고 있는 비공유 메모리 영역

    • 해당 서버 프로세스만 독점적으로 접근 가능
    • 각 서버 프로세스마다 하나의 PGA가 존재, 백그라운드 프로세스도 자체 PGA를 할당받음
    • 개별 PGA들의 집합은 인스턴스 PGA, PGA 메모리의 총합은 인스턴스 PGA 메모리
    • SQL 문을 처리하고 로그인 및 세션 정보를 저장하는 데 사용
    • SQL 작업 영역(SQL work areas): PGA에서 정렬이나 기타 SQL 연산을 위한 작업 메모리 공간

     

Designed by Tistory.