레퍼런스 Oracle 개념

황제낙엽 2007.07.25 07:54 조회 수 : 82 추천:111

sitelink1 http://love482.com.ne.kr 
sitelink2  
extra_vars5  
extra_vars6  

1. ORACLE의 메모리 구조

오라클의 메모리 구조는 서로 다른 유형의 두가지가 존재한다.
글로벌 영역(SGA)과 프로세스 영역(PGA)으로 나뉜다.

시스템 글로벌영역(SYSTEM GLOBAL AREA: SGA)

사용자간의 정보를 이전시키는데 사용. 데이터베이스에 관한 가장 빈번히
요청되는 구조적인 정보를 가지고 있다.

오라클6: DATA BLOCK BUFFER, REDO LOG BUFFER, DICTIONARY CACHE
오라클7: DATA BLOCK BUFFER, REDO LOG BUFFER, DICTIONARY CACHE, SHARED SQL POOL

데이터블럭버퍼(DATA BLOCK BUFFER)
데이터 블록을 보유하는 영역.
테이블, 인덱스, 클러스트 등의 데이터를 보유하고 있다.
오라클은 LRU알고리즘(Least Recently Used Algorithm)을 통해 사용가능한
공간을 적절하게 관리한다.

딕셔너리 캐쉬(Dictionary Cache)
데이터베이스 객체에 관한 정보를 저장하고 있다. 이 정보는 사용자
계정데이타, 데이터 파일명, 세그먼트명, 익스텐트 위치, 테이블 디스크립션,
그리고 권한이 포함되어 있다.
이 정보가 데이터베이스에 의해 필요해질 때 데이터베이스 딕셔너리 테이블은
읽혀지고 그 데이터는 SGA내에 있는 딕셔너리 캐쉬에 저장된다.
이 캐쉬 또한 LRU알고리즘에 의해 관리된다.

리두 로그 버퍼(Redo Log Buffer)
리두로그버퍼 내용은 온라인 리두 로그 파일에 기록되고 데이타베이스 복구가
진행되는 동안 롤-포워드 작업에 사용될 수 있다. 온라인 리두 로그 파일에
기록되 전에 그것들은 SGA 내의 리두 로그 버퍼에 먼저 저장된다. 그 다음에
데이타베이스는 정기적으로 리두 엔트리를 온라인 리두 로그파일에 기록한다.
리두 로그 버퍼의 크기는 INIT.ORA파일에 있는 LOG_BUFFER파라미터를
통해 지정된다.

공용 SQL 풀(Shared SQL Pool)
이 메모리는 데이타베이스에서 운영되는 명령문에 관한 정보를 포함한다.
따라서 데이타 블럭 버퍼와 딕셔너리 캐쉬가 데이타베이스 사용자 사이에
데이타 정보를 고용ㅇ할 수 있게 해 준다.
또한 공용 SQL풀은 일반적으로 사용되는 SQL 명령문의 공유를 가능케 한다.
또 데이타베이스 상에서 운영되는 SQL문에 대한 실행계획과 파스(PARSE)트리
를 포함한다.

프로그램 글로벌 영역(PGA)

메모리에 있는 것으로 단일 오라클 사용자 프로세스에 의해 사용된다.

 


2. ORACLE Background Process

 

 

1. SMON(System Monitor): 시스템감시기
시스템을 감시하는 기능을 한다.
인스턴스복구 기능(온라인 리두 로그 화일을 사용)
더이상 필요하지 않는 임시 세그먼트(TEMPORARY SEGMENT)를 제거.

2. PMON(Process Monitor): 프로세서 감시기
이전에 실패한 사용자 프로세스를 정리하는 기능.
사용자가 사용하고 있는 Resource를 풀어준다.
(Lock되어 있는 프로세스가 소멸될 때 그 자원에 걸린 Lock를 해제한다.)

3. DBWR(Database Writer): 데이타베이스 기록자
데이타 블럭 버퍼 캐쉬와 딕셔너리 캐쉬의 내용을 관리하는 프로세스이다.
SGA에서 변경된 블럭을 몇개의 단위로 데이타화일에 WRITE하는 작업.
DBWR숫자는 데이타베이스의 INIT.ORA화일에 있는 DB_WRITERS 파라메타를 통해
지정한다.

4. LGWR(Log Writer):로그 기록자
리두로그버퍼의 내용을 온라인 리두 로그화일에 기록한다.
일반적인 데이타베이스 작업 수행시 리두로그버퍼를 직접 읽어 온라인 리두 로그
화일에 기록하는 프로세스이다.

5. CKPT: 체크포인트(ORACLE7)
체크포인트는 마지막 체크포인트 이후에 변경된 모든 블럭을 데이타 화일에
쓰도록 유도하고 체크 포인트를 기록하기 위해 데이타 화일 헤더와 콘트롤 화일을
변경한다. 온라인 리두 로그 화일이 채워지면 이것이 자동적으로 실행한다

init.ora화일에 있는 log_checkpoint_interval파라미터는 체크포인트를 발생 주기로
조정하는데 사용된다.

6. ARCH(ARCIVER)아카이버
아카이브기능을 수행하는 프로세스이다.

7. RECO(Recoverly Process):복구
오라클7에서 분산 데이타베이스 내에서 발생한 오류를 해결하는데 사용되어진다.
이 프로세스는 IN-DOUBT 트랜잭션과 관련있는 데이타베이스에 접속을 시도하면
그 태랜잭션을 해결한다.
init.ora화일에 distributed_transactions파라미터가 0보다 큰 값으로 지정되어야만
생성된다.

8. LOCK:Locking Instance(LCKn)
다중 LCK프로세스는 LCK0부터 LCK9까지 명칭이 붙여진 것으로 오라클7 병렬서버가
사용될 때 내부 INSTANCE LOCK을 위해 사용된다.
init.ora화일에 gc_lck_procs파라미터를 통해 지정(오라클7)
init.ora화일에 mi_bg_procs파라미터를 통해 지정된다.(오라클6)

9. Dnnn:디스패쳐(Dispatcher)
SL*NET V2멀티스레드 서버(MTS)구조의 한부분이다. 다중 연결을 처리함으로써
필요한 자원을 최소화 하는데 도움을 준다.

10. Snnn:공용서버
멀티스레드 서버(MTS)구성에서 하나의 공유서버가 여러 개의 사용자 프로세스
요구를 처리한다. 그러므로 서버의 수는 최소화되고 사용가능한 시스템 자원의 효율은
극대화 된다.