Part3 13.Oracle Database Instance

devkwon·2024년 7월 30일
0

Oracle Database Concepts

목록 보기
6/7

Data Instance

data instance는 db파일을 관리하는 메모리 구조의 집합이다.

instance는 메모리에 존재하고 db는 디스크에 존재한다.
instance는 db없이 존재 가능하지만, 역으로는 성립되지 않는다.

SGA

SGA는 다양한 기능을 제공하는데 다음과 같다.

  • 동시에 많은 프로세스들과 스레드들이 접근하는 internal data 구조를 관리한다.
  • disk에서 읽어 온 data 블록들을 Caching 한다.
  • oneline redo log file에 redo data를 쓰기 전에 buffering한다.
  • SQL execution plan을 저장한다.

SGA는 운영체제에 따라 다양한 방식으로 공유된다.

Instance Configuration

오라클 db는 싱글 인스턴스 또는 Oracle Real Application Cluster(Oracle RAC) configuration으로 실행된다. 이러한 configuration은 mutually exclusive 하다.

싱글 인스턴스는 db와 인스턴스가 1대1 연관이고, RAC는 1대다 연관이다.

싱글 인스턴스이건, RAC이건 상관없이 인스턴스는 한번에 하나의 db랑만 연관될 수 있다.
인스턴스를 시작하고 mount를 하면 된다.

다중 인스턴스도 동시에 같은 컴퓨터에서 각각의 db를 접근하며 돌아갈 수 있다.

Read/Write and Read-Only Instance

모든 인스턴스는 read/write이거나 read-only이다.

default값은 read/write이며 DML과 클라이언트 어플리케이션과 직접 연결을 지원한다.
read-only 인스턴스의 경우 쿼리문을 실행할 수 있지만 DML이 불가능하고, 클라이언트와 직접 연결이 불가능하다.

12c 버전 이전에는 read/write만 있었지만 이후에 read-only 인스턴스가 추가되면서 read/write와 read-only 각각 인스턴스에 parallel하게 SQL문을 사용할 수 있게 되었다.

Oracle System Identifier(SID)

system identifier(SID)는 특정 호스트에서 오라클 인스턴스의 unique한 이름이다.

유닉스나 리눅스 환경에서 SID와 Oracle home을 통해 shared memory를 위한 key를 만든다.
또한 SID를 통해 initialization 파라미터 파일의 기본경로를 설정한다.

Database Instance Startup and Shutdown

  • NOMOUNT: 인스턴스가 시작되어 있지만, 아직 db와 연결되지 않은 상태.
  • MOUNT: 인스턴스가 시작되었고, control file을 통해 db와 연결되었지만 아직 유저에겐 closed된 상태.
  • OPEN: 모두 연결되었고, 권한이 있는 유저가 data file에 접근이 가능한 상태.

Administrator Privileges

db를 켜고 끄는 것은 매우 강력한 관리 옵션이다. 따라서 특별한 권한이 필요하다.

다음과 같은 권한들이 db가 닫히더라도 인스턴스에 접근할 수 있다.

  • SYSDBA
  • SYSOPER
  • SYSBACKUP
  • SYSDG
  • SYSKM

만약, SYSDBA로 접속하게 되면 SYS가 소유한 스키마로 간다.
SYSOPER로 접속하면 public 스키마로 간다. SYSOPER는 SYSDBA의 subset이다.

인스턴스 실행 과정 (NOMOUNT)

  1. default 경로(HOME) 또는 파라미터 경로에서 server parameter file을 찾는다.
  2. initialization parameter의 값을 결정하기 위해 parameter file을 읽는다.
  3. initialization parameter 값을 기반으로 SGA를 할당한다.
  4. Oracle background process들을 실행한다.
  5. alert log와 trace file들을 열고 모든 명시적 파라미터 세팅들을 alert log에 작성한다.

alert log: db의 메시지나 오류를 시간순(chronological) 로그로 보여주는 파일. ADR(Automatic Diagnostic Repository) 안에 있다.

마운트 과정 (MOUNT MODE)

db를 마운트하기 위해선 컨트롤 파일이 필요하다. db를 열 때 컨트롤 파일을 읽어서 데이터 파일들과 online redo log file의 이름을 찾는다.

오라클에서는 여러개의 인스턴스들이 똑같은 db를 동시에 마운트할 수 있도록 하는데 이때 CLUSTER_DATABASE initialization parameter가 필요하다.

티베로에서도 마찬가지로 tip파일에 CLUSTER_DATABASE를 통해 클러스터를 킬 수 있다.

Open 과정 (NORMAL MODE)

마운트된 db를 open을 한다는 것은 일반(normal) db 시스템을 사용하게 한다는 것이다.

normal mode가 되면 다음과 같은 기능을 수행할 수 있게 된다.

  • undo 테이블스페이스를 제외한 테이블스페이스에 있는 온라인 데이터 파일을 열 수 있다.
  • undo 테이블스페이스를 획득한다.
  • online redo log file을 열 수 있다.

만약 어떠한 데이터 파일이나 redo log 파일이 제공되지 않을 경우 에러를 반환하는데 이때, Media recovery가 필요해진다.

인스턴스 종료

종료모드

  • SHUTDOWN ABORT: 가장 최후의 수단. 현재 열려있는 data file에 checkpoint도 하지 않기 때문에 다시 실행할 때 recovery가 필요함.
  • SHUTDOWN IMMEDIATE: 실행중인 모든 SQL문을 종료하고, active transaction 도 롤백한다.
  • SHUTDOWN TRANSACTIONAL: 현재 실행중인 모든 트랜잭션이 끝나면 종료.
  • SHUTDOWN NORMAL: 모든 유저들이 disconnect하면 종료

종료 과정

정상적으로 종료됐을 경우, SGA에 있는 데이터들을 데이터 파일과 online redo log file에 기록하고 이 둘도 close한다. SGA 메모리를 해제하고 background 프로세스들도 종료한다.

비정상적으로 종료됐을 경우, SGA에 있는 데이터들을 저장하지 못하고 종료된다. 이때 recovery를 자동으로 수행한다. 이때 background 프로세스나 기존 메모리가 남아 있을 수 있는데, 이럴 경우 다시 인스턴스를 실행하는데 실패할 수 있다.

Checkpoint

체크포인트는 복구나 db가 종료되었을 때 일관성을 유지할 수 있게 해주는 중요한 기능이다.

  • checkpoint position 이라는 데이터 구조가 있다.
    checkpoint position은 가장 오래된 dirty buffer로 선정된다. 그 후 체크포인트 포지션은 redo stream에서 포인터처럼 사용된다.

  • 수정된 db buffer들을 db buffer cache에서 디스크로 쓴다.

목적

  • instance나 media failure로 인한 recovery 시간을 단축하기 위해
  • db가 dirty buffer에 있는 것을 disk로 쓰는 것을 보장하기 위해
  • db가 consistent 종료 과정에서 커밋된 모든 데이터를 disk에 쓰는 것을 보장하기 위해

checkpoint process(CKPT)가 데이터 파일 헤더와 컨트롤 파일에 체크포인트를 작성한다.

체크포인트는 다음과 같은 여러 타입이 있다.

  • Thread 체크포인트
  • Tablespace, data file 체크포인트
  • incremaental 체크포인트

Instance Recovery

Instance recovery는 가장 최신 체크포인트 이후 변경들을 복구 하기 위해 online redo log에 있는 기록들을 실행하는 것이다.

Instance recovery는 이전 종료가 inconsistent한 상황에서 관리자가 db를 열려고 할 때 자동으로 발생된다.

db에서는 redo 스레드가 열려있는데, 대응되는 스레드가 존재하지 않는다면 instance recovery가 필요하다고 판단한다.

instance recovery는 체크포인트를 통해서 어떠한 변경을 데이터 파일에 적용할지 결정한다.
체크포인트 포지션은 체크포인트보다 커밋된 모든 변경들의 SCN이 더 낮다는 것을 보장한다.

instance recovery를 하는 동안, db는 체크포인트 포지션과 redo thread 사이에 있는 변경들을 적용한다.

instance recovery는 먼저 roll forward를 진행해서 online redo log에 있는 내용들을 적용시키고, 체크포인트 포지션을 기준으로 roll back을 해서 uncommit된 변경들을 없앤다.

Parameter Files

인스턴스를 실행시키기 위해선 반드시 server parameter file이나 text initialization parameter file을 읽어야 한다.

Initialization Parameters

Initialization parameters는 인스턴스의 기본 동작에 대한 configuration으로 인스턴스 실행 시에 읽는다.

capacity를 다루는 파라미터를 Variable parameter라고 부른다. 이를 잘 사용하면 db의 성능을 향상시킬 수 있다.

Server Parameter Files

server parameter file은 initialization parameters의 레포지토리이다.

server parameter file은 다음과 같은 특성을 가지고 있다.

  • Oracle DB만 server parameter file을 읽고 쓸 수 있다.
  • 하나의 server parameter file만 db host에 존재한다.
  • server parameter file는 바이너리라 파일이다.
  • server parameter file에 있는 initialization parameter에 변경이 생길 경우. 영구적으로 보존된다.

Text Initialization Parameter Files

Key=value 쌍으로 이루어져 있는 text 파일이며, 변경이 이루어져도 현재 인스턴스 내에서만 적용된다.(종료되면 다시 원래대로 돌아온다.)

Diagnostic Files

오라클 db는 버그나 파일 오류들에 대한 fault diagnosability infrastructure를 가지고 있다.

만약 오류가 발생하면 problem key를 기반으로 ADR이 오류를 인식한다. 그 후 incident alert를 통해 진단 및 해결을 한다.

0개의 댓글