Oracle Database 19c Administrator

1.1 Database and Instance

  • Oracle Database Server(Oracle Database) = Database + Database Instance
    • Database
      • 디스크에 위치한 파일 집합
    • Database Instance
      • SGA(system global area)+Background Process
      • 데이터베이스 파일을 관리하기 위한 메모리 구조의 집합으로 공유 메모리와 프로세스로 구성
    • Client Process가 인스턴스에 접속하여 Session이 설정되면 Server Process가 생성됩니다.
    • Server Process는 공유하지 않는 개별 세션 메모리인 PGA(Program global area)를 보유하고 있습니다.
    Pasted image 20250103154505.png

1.2 Database Storage Structures

1.2.1 물리적인 저장 구조
  • 데이터베이스 파일 저장 메커니즘
    • Automatic Storage Management (ASM)
      • 오라클 데이터베이스용으로 구축된 파일 시스템 및 볼륨 관리(디스크 관리)를 위한 SW
      • 고가의 RAID 장비(타사 OS 볼륨관리 및 파일 시스템 관리)를 ASM 으로 대체
      • 균일한 성능 제공을 위해 디스크에 균일하게 데이터 분산
      • 디스크 추가 등 구성이 변경되면 데이터를 자동으로 재 배치
      • EXA에서 사용
      • 데이터베이스는 데이터 파일, 컨트롤 파일, 온라인 리두 로그 파일 및 기타 유형의 파일을 ASM 파일로 저장 가능
    • Pasted image 20250106064227.png

데이터베이스 파일

  • 데이터 파일(Data files)
    • 데이터가 저장되는 파일
    • 데이터베이스의 데이터는 각 테이블스페이스의 데이터 파일의 집합에 저장
    • 테이블스페이스의 데이터 Dictionary 저장 (테이블 및 인덱스와 같은 데이터베이스 구조 포함)
    • v$datafile, v$tempfile
  • Pasted image 20250103231331.png
  • Control files
    • 데이터베이스의 물리적 구조를 저장한 파일
    • 데이터베이스 이름, 데이터베이스 ID, 데이터 파일, 리두로그 및 아카이브 파일 정보, 현재 로그 번호, 체크포인트 정보 포함
    • binary 파일로 CREATE CONTROLFILE 명령어로 생성 가능
    • ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘D:\trace_cf.txt’; 명령어로 text파일로 변환하여 확인 가능
    • v$controlfile

Redo log files

  • DB에서 발생한 모든 변경 작업을 기록한 파일
  • 데이터 복구에 사용
  • v$log, v$logfile
  • 장애 대비를 위한 리두로그 파일 다중 관리
    • 리두로그 그룹: 온라인 리두 로그 파일과 복사본으로 구성
    • 멤버 : 리두 로그 파일 및 복사본 파일
  • Pasted image 20250105131323.png
  • redo log switch 발생할 때 checkpoint 발생과 함께 dbw에 적음.
  • 보통 5개 파일 정도(요즘은 보통 1G)
  • 파일이 3개redo1,redo2,redo3 일 때 redo3도 다 차서 다시 redo1로 갈 때 redo1의 checkpoint 프로세스가 안 끝나고 있으면 db가 멈추기 때문에 순환이 되기 전에 checkpoint가 다 끝나도록 튜닝 필요.
  • rac의 경우
    • 인스턴스별로 log파일 존재
    • 데이터파일은 공유하지만 로그는 인스턴스 별로 존재
1.2.2 논리적인 저장 구조
  • 데이터 블록 (Data blocks)
    • 데이터베이스 I/O의 최소 단위
    • 데이터 블록은 OS 블록으로 구성
    • 데이터베이스가 생성될 때 데이터베이스의 데이터 블록 크기를 설정(DB_BLOCK_SIZE)
  • 익스텐드(Extents)
    • 논리적으로 연속된 데이터 블록 집합
    • 익스텐드는 항상 하나의 데이터 파일에 포함

세그먼트(Segments)

  • 테이블 스페이스 내의 논리적 저장 구조
  • 테이블/인덱스와 같은 Schema Object에 할당된 익스텐트 집합
  • 한 개 이상의 데이터 파일을 가질 수 있음
  • 한 개의 테이블스페이스에 속함
  • LOB 데이터는 별도 세그먼트에에 저장
  • Pasted image 20250105142902.png

테이블스페이스(Tablespaces)

  • 하나 이상의 세그먼트로 구성
  • 데이터베이스는 테이블스페이스라는 논리적 저장 단위 구성
  • 테이블스페이스는 하나 이상의 데이터파일 또는 임시파일에 데이터를 저장
  • 각 데이터베이스 사용자는 기본 영구 테이블스페이스(Permanent Tablespace)데이터베이스 할당
    • SYSTEM
      • SYS 사용자가 소유
      • data dictionary
      • 데이터베이스에 대한 관리 정보가 포함된 테이블 및 뷰
      • 트리거, 프로시저, 패키지 등의 컴파일된 저장 객체
    • SYSAUX
      • SYSTEM 테이블스페이스의 보조 테이블스페이스(auxiliary tablespace)
    • UNDO
      • 시스템에서 관리하는 실행취소(undo) 데이터를 위해 지정된 테이블스페이스
      • 인스턴스당 한 개만 보유
  • Pasted image 20250105144832.png

1.3 Oracle Instance Architecture

1.3.1 데이터베이스 인스턴스
  • 데이터베이스 인스턴스 식별
    • Oracle Base Directory : 오라클 DB 설치 소유자의 홈 디렉토리로 SW와 구성 파일 저장 위치
    • Oracle Home Directory : 오라클 DB SW 홈 디렉토리로 Oracle Base 하위 디렉토리
    • Oracle System Identifier(SID) : Host의 오라클 데이터베이스 인스턴스에 대한 고유이름
  • 인스턴스 및 데이터베이스 시작 순서
  • Pasted image 20250105163013.png
  • Initializaion Parameter Files
    • 오라클 메모리 구조와 데이터베이스 인스턴스 설정 파일
    • 데이터베이스 시작 맨 처음에 읽는 파일
    • spfile(binary), pfile(text)
    • 노드가 많으면 (RAC 처럼) SP파일 사용
    • 데이터베이스 버전별 Parameter 변경 확인 (Database Reference 참고)
    • v$parameter
    • CREATE pfile=’initorcl.ora’ FROM spfile=’spfileorcl.ora’;
    • ALTER SYSTEM SET undo_retention=10800 scope=memory;
    • SCOPE
      • MEMORY : 현재 오라클 인스턴스에 바로 반영
      • SPFILE : spfile에 반영
      • BOTH : default 값으로 둘 다 반영
    • static parameter는 값 변경 후 DB 재시작 후 반영
    • dynamic parameter는 값 변경 후 DB 재시작 후 반영
  • Alter Log
    • 맨 처음 로그 확인..
    • $ORACLEBASE/diag/rdbms/db_name/sid/trace/altersid.log
  • Trace Files
    • 서버 프로세스와 백그라운드 프로세스에 관련된 Trace file
    • Automatic Diagnostic Repository(ADR)은 SR 처리를 원할하게 하기 위해 생김.
1.3.2 메모리 아키텍처
  • 오라클 데이터베이스 기본 메모리 구조
  • Pasted image 20250105164756.png
  • UGA ( User Global Area )
    • 사용자 세션 정보 저장
    • 세션이 PL/SQL 패키지를 메모리에 로드하면 UGA는 패키지 변수에 변수 보관
    • Session variables
      • 세션 변수(로그인 정보와 데이터베이스 세션에 필요한 기타 정보)에 할당된 메모리(세션 상태 포함)
    • OLAP Pool
      • 데이터 블록과 동일한 OLAP 데이터 페이지를 관리
      • 사용자가 dimensional object(ex:큐브)를 쿼리할 때 OLAP 세션이 자동 오픈
    • Shared server의 경우 세션 정보 공유를 위해 UGA가 SGA에 존재
    • Dedicated server의 경우 UGA가 PGA에 존재
      Pasted image 20250106003230.png

Connection Type

  • Dedicated Server동시 사용자 프로세스가 10개이면 서버 프로세스가 10가 생성되어 처리하는 방식( user : server = 1:1 )
  • Shared Server
    • 여러 사용자 프로세스는 서버 프로세스가 아닌 디스패처 프로세스에 네트워크를 통해 처리하는 방식
    • Dispatcher :
      • 사용자 프로세스와 공유 서버 프로세스(Shared Server Process) 사이에서 파이프처럼 작동
      • 사용자 요청을 SGA 요청 큐(request queue)에 전달
      • SGA 응답 큐(response queue)에 공유 서버 프로세스가 처리한 결과가 들어오면 사용자에게 전달
  • PGA ( Program Global Area )
    • 시스템의 다른 프로세스가 공유하지 않는 메모리
    • 전용 또는 공유 서버 프로세스에 필요한 세션 종속 변수를 포함
    • 서버 프로세스는 PGA에서 필요한 메모리 구조를 할당
    • Private SQL Area : 구문 분석된 SQL 문과 처리를 위한 기타 세션별 정보 보관
    • SQL Work Area
      • 메모리 집약적 작업(Sort, Hash join, 비트맵 인덱스에서 검색된 데이터 병합)에 사용되는 PGA 메모리의 전용 메모리
      • Sort 작업 중에 메모리가 부족하면 Temp(?) 사용
    Pasted image 20250106010810.png
  • SGA ( System Global Area )
    • 오라클 데이터베이스 인스턴스에서 읽기/쓰기 메모리 영역
    • DB 인스턴스 시작 시에 SGA에 대한 메모리가 자동 할당되고 인스턴스 종료시 메모리를 회수
    • 서버 프로세스와 백그라운드 프로세스는 SGA가 아닌 별도의 메모리 공간에 존재
    • Buffer Cache
      • 데이터 파일에서 읽은 데이터 블록의 사본을 저장하는 메모리 영역
      • 데이터베이스는 캐시에서 데이터 블록을 업데이트하고 redo 로그 버퍼의 변경사항에 대한 메타데이터를 저장
      • commit 후에도 데이터 블록을 데이터 파일에 즉시 쓰지 않고 Database Writer(DBW)는 백그라운드에서 분산하여 씁니다.
      • Least recently used(LRU) 기반으로 자주 액세스되는 블록을 버퍼 캐시에 보관하고 그렇지 않은 블록을 디스크에 씁니다.
      • 데이터베이스에는 표준 블록 크기가 있고 표준 크기와 다른 크기로 테이블스페이스를 만들 수 있어 기본이 아닌 각 블록 크기별 자체 풀 생성 가능.(Multi block 사용 가능하지만 보통 사용하진 않음 -2k,4k,8k(Default), 16k)
      • keep pool : 자주 액세스되지만 기본 풀에서 오래된 블록을 보관
      • recycle pool:드물게 사용되는 블록으로 가장 먼저 메모리에서 일려남.
    • Redo log Buffer
      • SGA 내의 순환 버퍼로 데이터베이스 변경사항인 리두 엔트리를 저장
      • 데이터베이스 프로세스는 사용자 메모리 공간(UGA)에서 SGA의 리두 로그 버퍼로 리두 엔트리를 복사
      • Log Writer(LGWR) 프로세스는 리두 로그 버퍼를 디스크의 온라인 리두로그 파일에 순차적으로 씁니다.
    • Shared Pool
      • 다양한 유형의 프로그램 데이터를 캐시
      • 공유 풀은 구문 분석된 SQL, PL/SQL 코드, 시스템 매개변수 및 데이터 사전 정보를 저장
      • Library Cache
        • 실행 가능한 SQL, PL/SQL 코드를 저장하는 공유 풀 메모리
        • SQL 문이 실행되면 데이터베이스는 이전에 실행된 코드를 재사용하려고 시도하는 데 구문 분석된 SQL이 라이브러리 캐시에 존재하면 Soft Parse라고 하여 재사용 가능하지만 그렇지 않으면 SQL 구문을 빌드하는 데 이를 Hard Parse라고 함.
      • Data Dictionary Cache
        • 데이터베이스, 데이터베이스 구조, 사용자에 대한 참조 정보(권한)를 포함하는 데이터베이스 테이블과 뷰의 모음.
        • SQL 구문 분석을 위해 사용됨
      • Server Result Cache
        • 공유 풀 내의 메모리 풀
        • 버퍼 풀과 달리 데이터 블록이 아닌 결과 세트를 보관
        • 클라이언트 결과 캐시는 데이터베이스 메모리가 아닌 클라이언트 메모리에 위치
    • Large Pool
      • 공유 풀보다 더 큰 메모리 할당을 위한 메모리 영역
      • 공유 서버(shard server) 및 XA 인터페이스용 UGA(세션을 풀로 공유하여 사용하기 위한 용도 – 미들웨어처럼 )
      • 병렬 실행에서 사용되는 메시지 버퍼
      • Recovery Manager(RMAN) I/O 슬레이브용 버퍼
    • Java Pool
      • Java Virtual Machine(JVM)내의 모든 세션별 Java 코드와 데이터를 저장하는 메모리 영역
1.3.3 프로세스 아키텍처
  • Mandantory Background Processes
    • Process Monitor Process(PMON) Group
      • 버퍼 캐시 정리와 종료된 클라이언트 프로세서가 잡고 있는 리소스 해제를 감독
      • Process Monitor Process(PMON) : 다른 백그라운드 프로세스의 종료를 감시
      • Cleanup Main Process(CLMN) : 종료된 프로세스, 세션, 트랜잭션, 네트워크 연결 등을 주기적으로 정리
      • Cleanup Helper Processes(CL nn) : 종료된 프로세스와 세션 정리를 지원
    • Process Manager(PMAN)
      • 공유 서버, 풀 서버, 작업 대기열 프로세스를 포함한 여러 백그라운드 프로세스를 모니터링 및 생성/중지
    • Listener Registration Process(LREG)
      • 데이터베이스 인스턴스와 디스패쳐 프로세스에 대한 정보를 Oracle Net Listener에 등록
      • 12c이전에는 PMON이 리스너 등록을 수행
    • System Monitor Process(SMON)
      • 시스템 수준 정리 업무를 담당
      • 인스턴스 시작 시 인스턴스 복구 수행
      • 파일 읽기 또는 테이블스페이스 오프라인 오류로 인해 종료된 트랜잭션을 복구
      • 사용되지 않는 임시 세그먼트 정리
      • Dictionary-managed 테이블스페이스 안에서 인접한 여유 익스텐트를 통합
    • Database Writer Process(DBW)
      • 데이터베이스 버퍼 캐시의 수정된 버퍼를 디스크에 기록
      • 비동기적으로 더티 버퍼를 디스크에 기록
      • 체크포인트 발생 시 디스크 기록
      • 오라클이 권고하는 DBWR 프로세스 개수는 CPU_COUNT/8
    • Log Writer Process(LGWR)
      • 리두 로그 버퍼의 일부를 온라인 리두 로그에 기록
      • 리두 로그 스위치 발생 시 기록
      • 사용자가 commit을 실행하면 트랜잭션에서 System Change Number(SCN)이 할당되어 LGWR은 커밋 레코드를 리두로그 버퍼에 넣고 커밋 SCN과 트랜잭션의 리두 엔티티를 즉시 디스크 씁니다.
      • LGWR은 트랜잭션이 커밋되기 전에 디스크에 REDO 로그 엔티티로 쓸 수 있습니다. 다만 리두 엔티티로 보호되는 변경사항은 트랜잭션이 나중에 커밋되는 경우에만 영구적이 됩니다.
    • Checkpoint Process(CKPT)
      • 체크포인트 정보로 컨트롤 파일과 데이터 파일 헤더를 업데이트하고 DBW에 블록을 디스크에 쓰도록 신호를 보냅니다.
      • 체크포인트 정보는 체크포인트 위치, SCN, 온라인 리두로그 위치가 포함
      • 리두로그 스위치시에 checkpoint 발생
      • 테이블스페이스 오프라인 및 백업 시작
      • 데이터베이스 정상 종료 시시
      • Pasted image 20250106084901.png
  • Optional Background Processes
    – Archiver Processes(ARCn)
    – 리두 로그 스위치가 발생한 후 온라인 리두 로그 파일을 오프라인 저장소로 복사
    – Job Queue Processes(CJQ0 and Jnnn)
    – 큐 프로세스는 배치 모드로 user job에서 실행
    – 예약된 사용자 정의 작업
    – Flashback Data Archive Process (FBDA)
    – tracked table에 dml이 포함된 트랜잭션이 커밋되면 이 프로세스는 변경된 행의 이전 이미지를 플래시백 데이터 아카이브로 저장1.3.4 Oracle Net Service Architecture
  • Oracle Net Listener
    • 클라이언트 연결 요청을 수신하고 데이터베이스로의 트래픽을 관리하는 서버 측 프로세스
  • Service Name
    • 클라이언트 연결에 사용되는 서비스의 논리적 표현
    • 리스너로 알려진 서비스는 하나 이상의 데이터베이스 인스턴스를 식별
  • Service Registration
    • LREG 프로세서가 리스터에 인스턴스 정보를 동적으로 기록
    • 서비스 등록은 동적이며 listener.ora 파일에 구성이 필요 없음.
  • Pasted image 20250106101710.png
  • tnsping은 TCP/IP의 핑(ping) 유틸리티와 동일한 Oracle Net 유틸리티로 네트워크 경로가 유효한지 신속하게 확인 가능
  • Security
    • 권한의 모음이 ROLE
  • Concurrency
    • ORALE은 데이터의 동시성 관리를 위해 ROW단위로 LOCK 제공
  • UNDO
    • 오라클 데이터베이스는 트랜잭션 rollback, 데이터베이스 복구의 일부로 읽기 일관성을 제공하고 oracle flashback query 기능을 활성화 하기 위해 undo 데이터를 사용
    • UNDO_RETENTION
      • 일관성 읽기를 위해 제공되는 Undo 데이타의 보유 기간
      • 900초(15분)가 기본 -> 10800초로 수정.

2. High Availability

  • RAC
  • RAC에서 data buffer cache를 각 인스턴스 끼리 데이터 전달을 해야하므로 interconnect 속도가 중요(전용 스위치를 구성필요)
    Pasted image 20250106110507.png
  • oracle clusterware
    Pasted image 20250106111038.png
    Pasted image 20250106111528.png
  • Session Failover – TAF / CTF
    Pasted image 20250106112929.png
  • Connect –Time Failover(CTF)
    Pasted image 20250106112952.png
  • RAC 고객은 TNSNAMES.ora 파일에서 node1이 문제가 생겼을 때 PUBLIC IP의 경우 클러스터웨어가 문제를 확인하는데 오래 걸리는데 VIRTUAL IP를 사용하면 클러스터가 바로 확인하여 node2로 이동
    Pasted image 20250106113551.png
  • Transparent Application Failover (TAF)
    • 문제가 발생한 노드의 select만 정상적인 노드로 이동하여 작업 시킴
    • select 이외의 작업은 모두 끓김.
    • Pasted image 20250106112537.png
  • split brain
    • 네트워크 문제 (인터커넥터) 문제로 인해 인스턴스간 캐시 공유가 어려우면 클러스터웨어가 문제가 생기면 split brain기능으로 데이터 정합성을 위해 두 서버 중 한 서버를 reboot시킴.
    • Pasted image 20250106112443.png
  • Exa의 경우 2(normal) or 3(high) 중화하여 데이터 스토리지를 복제하고 이외 스토리지의 경우 스토리지 자체에 이중화가 되어 있어 os에서 이중화를 할 필요없음.
  • Pasted image 20250106112141.png
  • Data Guard
    • data guard는 서버 및 디스크 이중화 ( 재난 대비 )
    • data guard는 redo 로그 파일 자체를 전송 ( ogg는 trail 파일에 sql을 전송)
    • data guard broker
      • DG 생성, 관리, 모니터링 업무를 중앙 관리 가능(Enterprise Manager)
      • switch over : 개발이나 테스트 등의 이유로 역할 변환
      • fail over : 주 센터가 문제가 발생했을 때 연결을 끊고 스텐바이 센터를 주센터로 바꿈…주센터는 더 이상 사용 불가하여 이제 초기화해서 재 작업 필요

3. Backup and Recovery

  • Checkpoint Process
    Pasted image 20250106114039.png
  • SMON 수행
  • Pasted image 20250106114918.png
  • alter database open resetlogs;
    Pasted image 20250106114443.png
  • flashback(+ achive mode 필수)
    • COMMIT 수행 후 특정 시점으로 되돌릴 수 있는 기능
  1. flashback database : flashback logs 확인
  2. flashback table : undo data로 확인
  3. flashback transaction : undo data로 확인
    Pasted image 20250106115129.png

Leave a Comment