ORACLE ARCHITECTURE

2024. 2. 4. 01:28DBMS/ORACLE Admin

반응형

오라클 아키텍처는 크게 파일 저장, 메모리, 프로세스 파트로 나뉜다. 
 

 

 
오라클의 구조는 파일을 직접 저장하는 파일 저장 부분, 업무를 담당하는 프로세스 부분, 중간에서 메모리 부분이 CACHE 역할을 하는 부분으로 구성된다.
오라클에서 DB와 접근 프로세스 사이에 있는 SGA 영역으로 성능을 관리한다.
 
- 파일 저장 부분
물리적 , 논리적 부분으로 나뉜다.물리적 구조는 FILES을 의미하고 논리적인 구조는 DB, TABLESPACE, SEGMENT, EXTENT, BLOCK 으로 구성된다.
 
 
1. 물리적 구조 : 오라클의 기본이 되는 DATA FILE, REDO LOG FILE, CONTROL FILE,ARCHIVED LOG FILE,
FLASHBACK LOG FILE 로 구성된다.
 
* DATAFILE
/ 특징
# 하나의 데이터 파일은 하나의 DB에만 연관된다.
# 생성되면 데이터 파일은 크기를 변경할 수 없다.
# 하나 이상의 데이터 파일이 TABLESPACE 라고 하는 논리적 단위의 데이터베이스 저장 장소를 형성한다.
 
/ 동작
데이터 파일의 정보가 읽히면 메모리 캐시 영역에 저장되고 성능 향상을 위해 변경된 내용만 리두 로그 파일에 쓰고데이터는 메모리 내에 남겨 두었다가 적절한 시간에 DBWR이라는 백그라운드 프로세스에 의해 데이터 파일에 적용된다.
 
 
*REDOLOGFILE
 
리두 로그 파일은 데이터를 복구할 수 있도록 변경 사항을 기록한 파일이다. 모든 오라클 데이터 베이스는 두개 이상의 redo log file 세트를 가지며 이 파일은 모든 데이터 베이스 변경 정보를 기록하는 일을 한다. DB 장애로부터 보호하기 위한 필수적인 파일이다. 리두 파일을 보호하기 위해 미러링 기능을 통한 두 개 이상의 리두 로그 복사본을 서로 다른 디스크에 둘 수 있다.
 
/동작
redo log file 안의 정보는 장애 시 복구를 위해서만 사용된다. 중단 된 시점에 최종 리두 로그 파파일로 데이터베이스의 데이터 파일을 자동으로 복구한다.
 
*Control File 
컨트롤 파일ㅇ느 데이터베이스 무결승을 관리하고 확인할 때 필요한 파일이다. DB 제어정보를 가지고 있는 파일로 물리적인 데이터베이스의 구조가 기록되며 DB이름, DATA FILE, REDO LOG FILE 이름과 위치, DB 생성 시간과 같은 정보를 가지고 있다.
 
/동작
컨트롤 파일은 오라클 데이터베이스가 열릴 때마다 데이터 파일 처리를 위해 반드시 필요한 파일이다. 데이터 파일과 리두 로그 파일을 지정하기 위해 사용된다. 물리적인 DB 구성이 변경된다면 컨트롤 파일은 자동으로 오라클DBMS에 의해 변경된 내용으로 수정된다. 컨트롤 파일을 장애로부터 보호하기 위해 두 개 이상의 컨트롤 파일 사용을 미러링 방식으로 허용한다.
 
 
2. 논리적 구조
 
오라클 DB의 논리적 구조에는 TABLESPACE, SEGMENT, EXTENT, DATABLOCK 가 있다.


 
 
 
 
 DATABLOCK 은 가장 작은 수준의 저장 구조로 데이터는 데이터 블록에 저장되고 물리적인 디스크 공간의 특정 바이트 열이다.


내부구조

 

row data details

 
 
 
 
EXTENT는 블록 다음 수준의 논리적 공간이다. 연속된 데이터 블록의 일정한 모임이고 특정 형태의 정보 저장을 위해 사용된다. 실제 논리적인 데이터 저장은 익스텐트에서 이루어진다. 최초 테이블 생성 시 초기 크기를 정의하고 이후에 공간이 부족하면 다시 저장 공간을 배정받아서 데이터를 저장한다.
 
SEGMENT 는 저장 공간을 익스텐트 단위로 배정받는다. 익스텐트는 세그먼트 내에서 반드시 연속적으로 존재하지 않는다.  데이터 세그먼트, 인덱스 세그먼트, 롤백 세그먼트 ,임시 세그먼트가 있다.
 
TABLESPACE 는 데이터를 직접적으로 구성하는 스키마 객체 세그먼트의 모임이다.
 
 
 
 
 
 
 
 
-메모리 부분 
 
오라클의 동작은 메모리 구조와 프로세스에 의해 수행된다. 오라클의 메모리 구조에는 시스템 공유 영역과 프로그램 공유 영역이 있다.
 
1. 시스템 공유 영역
 
시스템 공유영역 (SGA)는 오라클에 의해 할당된 메모리 버퍼들의 집합이다. 하나의 SGA와 백그라운드 프로세스들이 오라클 데이터베이스 인스턴스를 구성한다. 인스턴스가 시작되면 메모리에서 인스턴스에서 사용될 SGA를 부여받고 종료될 때 반납한다. DB에 연결된 사용자들은 SGA을 공유한다. 
SGA에 보관된 정보  : DATABASE BUFFER CACHE, REDO LOG BUFFER , SHARED POOL , LARGE POOL, JAVA POOL
 
-데이터베이스 버퍼
수행되는 질문들이 필요한 실제 데이터를 보관하고 작업을 수행하는 공간.
가장 최근에 사용된 데이터 블록을 저장함.
LEAST RECENTLY USED 알고리즘에 의해 오래전 사용된 것은 디스크에 저장되고 최근에 사용된 데이터가 캐시되어 있으므로 디스크 입출력을 줄여 성능을 향상시킨다. 매개변수 DB_BLOCK_SIZE , DB_BLOCK_BUFFERS 에 의해 크기가 결정된다.
 
DB 버퍼의 크기는 DB_CACHE_SIZE(기본 버퍼 캐시 크기), DB_KEEP_CACHE_SIZE(많이 쓰이는 테이블 저장 크기), DB_RECYCLE_CACHE_SIZE(한 번만 사용된 쿼리 제거에 사용되는 버퍼)로 구분되며 V$DB_CACHE_ADVICE 로 통계 내용을 볼 수 있다.
 
ALTER SYSTEM SET DB_CACHE_SIZE = ? ;
 
-리두 로그 버퍼
DB에 변경되는 모든 DDL,DML명령에 의해 변경된 블록 번호,변경 위치, 변경 전후 값)을 저장함.
하지만 UNLOGGING 키워드를 사용한 CREATE TABLE, CREATE INDEX 문과 LOADER로 대량의 데이터를 로드할 때는 시스템 부하를 줄이고자 REDO LOG BUFFER 를 사용하지 않는다. LOG_BUFFER에 의해 크기가 결정되고 인스턴스가 시작할 때 생성되어 인스턴스가 남아있는 동안 존재한다.
 
-공유풀
SHARED POOL은 LIBRARY CACHE, DATA DICTIONARY CACHE, RESULT CACHE 와 다른 여러 메모리 구조로 구성된다.LIBRARY CACHE는 최근 사용한 SQL 문장과 PL/SQL문에 대한 정보, 실행 계획 등의 정보가 저장되는 SHARED SQL AREA를 포함한다. DATA DICTIONARY CACHE는 최근에 사용된 DB FILES, TABLE ,INDEX ,권한 ,사용자 기타  객체들의 정보를 저장한다. RESULT CACHE는 최근 조회 결과값을 저장한다.
 
 
2. 프로그램 공유 영역
 
PGA는 서버 프로세스나 백그라운드 프로세스에 대한 데이터나 제어정보를 퐇마하는 메모리 버퍼인다. 세션 변수를 포함하는 STACK SPACE와 UGA로 이루어져 있다. UGA는 사용자 권한 정보를 포함하는 USER SESSION DATA , 현재 세션에 의해 사용되고 있는 CURSOR 의 처리 단계를 포함하는 CURSOR STATUS ,정렬이 필요한 경우 사용되는 SORT AREA 로 구성된다.
 

 

 

 

 

 

 

 

 


-프로세스 부분




/오라클 프로세스
DB서버가 작동되게 하는 프로그램
 
/사용자 프로세스
사용자가 프로그램을 실행할 때 생기는 프로세스
 
/서버 프로세스
사용자가 요청한 쿼리를 실행시키고 결과를 프로세스로 전달. 사용자가 SGA의 DB BUFFER 에 없는 데이터 조회를 요청하면 서버 프로세스는 데이터 파일로 부터 SGA로 해당 블록을 읽어들여 사용자가 데이터를 조회할 수 있도록 한다.

 

 

 

서버 프로세스는 사용자의 요청을 이해하는 LISTENER와 요청의 처리를 담당하는 DISPATCHER SERVER로 나누어진다. 오라클 인스턴스에 접속하여 사용자가 세션을 구성할 때 시작됨.

디스패처는 클라이언트를 SGA에 할당하고 클라이언트와 시스템의 상호작용을 관리한다.

 

/백그라운드 프로세스

DB내의 물리적 구조와 메모리구조(SGA) 사이를 관리함.

-주요 백그라운드 프로세스

SMON : 인스턴스 시작 시 또는 인스턴스 시스템에서 장애가 발생한 인스턴스 복구를 수행함. 인스턴스가 유효한 상태를 유지하도록 세그먼트를 정리하여 공간을 확보하고 오프라인 에러에 의해 생기는 인스턴스의 복구 시에 완료되지 못했던 트랜잭션들을 복구함

 

PMON : 다른 서버 프로세스를 모니터링하며 사용자 프로세스가 실패했을 시 복구를 수행하는 프로세스.

실패한 사용자 프로세스가 점유하고 있던 자원을 반납하고 캐시를 정리함.

 

DIAG/DIAn (DIAGNOSABILITY PROCESS) : 인스턴스 전체 상태를 모니터링하며 인스턴스 장애 처리에 필요한 정보를 캡쳐하고  중단 DEADLOCK이나 교착 HANG상태를 감지하여 문제를 해결함

 

VKTM VIRTUAL KEEPER OF TIME : 오라클 인스턴스의 지속 시간과 간격 시간을 보여줌

 

DBWn DATABASE WIRTER : DB 버퍼 캐시로 부터 수정된 데이터 블록을 저장하는 프로세스.

오라클은 성능을 위해 트랜잭션이 완료되어도 데이터 파일에 즉시 반영하지 않는다.

DB BUFFER의 빈 곳이 거의 없는 상태에서 SGA로 데이터를 읽어들일 필요가 있을 때 최근에 사용 되지 않은 데이터 블록부터 파일 쓰기가 행해진다.

 

 

LGWR (LOG WRITER) : 리두 로그 버퍼에서 항목들을 디스크에 저장하는 프로세스.

리두 로그 데이터는 트랜잭션이 완료되면 LGWR이 ONLINE REDO LOG FILE에 저장한다. 사용자가 COMMIT을 수행해 트랜잭션을 완료하였거나 리두 로그 버퍼를 재실행할 때 동자갛ㄴ다.

 

ARCn : 리두로그파일이 FULL일 때 로그 파일이 전환되면서 사용한 REDO LOG FILE을 저장소로 복사하는 프로세스이다.

ARCHIVELOG 상태일 때 수행

 

RECO RECOVERER : 네트워크, 시스템 장애로 미결정된 트랜잭션의 상태를 완료하기 위해 대기중인 트랜잭션 테이블의 정보를 사용하여 자동으로 DB에 연결하며 보류 중인 트랜잭션을 완료한다.

 

RVWR RECOVERY WRITER : 플래시백 기능 수행.

 

반응형

'DBMS > ORACLE Admin' 카테고리의 다른 글

DATABASE DDL 구문  (0) 2024.02.10
Static SQL, Dynamic SQL  (0) 2024.02.04
데이터 베이스 설계  (0) 2024.02.04
객체지향형 DB 구성 & 객체 관계형 DBMS(ORDBMS)  (0) 2024.02.03
tablespace checkpoint option  (0) 2024.02.02