RDB/Oracle

[오라클]오라클 아키텍쳐(2)

창문닦이 2019. 1. 22. 17:00

[오라클 아키텍쳐]

 

 

[ 데이터베이스의 물리적 구조 (Physical Structure) ] 

- CONTROL01.CTL , CONTROL02.CTL 는 사실상 동일한 파일. 백업 중요해서 Recovery_area에 별도 저장.

 


 

[Memory Structure]

1. PGA영역(PROGRAM GLOBAL AREA) : 서버가 시작할 때 할당되는 메모리 영역

오라클 데이터베이스에 연결된 사용자마다 할당되는 메모리. 프로세스가 시작될 때 할당되고 중단될 때 없어짐.

2. SGA영역(SYSTEM GLOBAL AREA) : 오라클 메모리. 모든 사용자가 공유 가능하여 사용.

동적. 그때마다 사이즈가 달라질 수 있음.

 

3. SGA의 구성메모리

 

3-1. SHARED POOL 공유영역

- SHARED SQL AREA : 여러 사용자가 작성한 SQL문장을 컴파일한 것을 저장해둔 뒤 동일한 쿼리를 작성할때 기계어로 번역하는 작업을 다시 거치는 것이 아니라 기존에 저장된 내용을 호출. 이때, 정확히 똑같은 쿼리문이여야만 가능.

- DATA DICTIONARY CACHE: USER_CONSTRAINT와 같은 딕셔너리들을 저장해두는 공간

 

 

3-2. DATABASE BUFFER CACHE 데이터베이스 버퍼 캐시

- Datafile 들로부터 읽은 Data Block의 복사본 저장

- RECYCLE: 휴지통만 관리하는 메모리공간

- 2K , 4K, 8K, NK : (0,1)로 된 기계어 1byte. 사용하는 데이터양이 작을경우, 기본적으로 블록이 8kbyte이므로 메모리가 낭비됨.  그래서 용량이 작은경우에 메모리 낭비를 줄이기 위해 존재.

- 가장 기본적인 책상 개념

- LIBRARY CACHE : PL/SQL이 저장되는 공간

※ 참조 - BLOCK : SQL에서 데이터를 저장하고 처리하는데 사용되는 가장 기본적인 입출력 단위. 컴퓨터에서 가장 작은 데이터단위는 bit. 총크기 각 블록당 8KB (8192byte의 저장공간. 1024byte * 8)

 

3-3. REDO LOG BUFFER 로그버퍼

- 데이터 버퍼 캐시에서 일어나는 모든일은 로그버퍼에 기록이 됨.

- 메모리 영역이라 컴퓨터가 갑자기 꺼지는 경우 데이터가 날아갈 수 있음

- 그래서 로그기록을 LGWR(Log writer)를 통해서 로그 파일로 한번더 작성하여 저장함.

 

3-4. LRU LIST : 가장 오래전에 메모리상에 올라와서 가장 오랫동안 사용되지 않은 데이터를 저장하는 공간

 

3-5. Large Pool, Java Pool : 요새 많이 안씀


[Process Type]

- User process, Server process, Background process 

 

1. USER PROCESS

오라클 서버와 인터랙션을 요청하는 프로그램. 연결이 제일 먼저 이루어져야 함. 오라클 서버와 다이렉트로 상호작용 하지 않음 

 

2. SERVER PROCESS

오라클 서버와 직접 인터랙션하는 프로그램. 호출하고 결과를 반환함.

- SERVER = DEDICATED : 전체 메모리공간을 나누어서 서버-클라이언트 매칭이 1:1로 되도록 만드는 개념

- Dedicated or Shared Server 둘 중 하나로 설정 가능

 

3. 서버 연결

오라클 클라이언트에서 서버에 접속하기 위해서는 서버에 리스너가 실행되어 있어야 함

 

3-1. 리스너와 TNSNAME의 위치

 

3-2. 리스너의 역할

 

- 커맨드창에 SQLPLUS LEE/BOB을 작성했을때, 리스너를 호출

- 리스너에서 USER명이 USER파일에 있는지 패스워드는 패스워드파일에 있는 내용에 일치하는지 여부를 확인해서 로그인여부를 결정해줌.

- 네트워크를 이용해서 클라이언트와 서버를 연결하기 위한 네트워크 관리자.

 

 

▼ 리스너

 

▼ TNSNAMES. : DB를 찾아가는 경로 설정

클라이언트에서 오라클 서버로 접속할때 필요한 프로토콜, 포트번호, 서버주소, 인스턴스를 설정해주는 파일.

 

 

4. BACKGROUND PROCESS

- SMON, PMON, DBWN, CKPT, LGWR, OTHERS

- 오라클 인스턴스가 시작될 때 자동으로 시작됨.

- BACKGROUND PROCESS와 SGA영역을 합쳐서 INSTANCE라고 함.

 

4-1. PMON (PROCESS MONITOR)

- 클라이언트가 처리중에 시스템의 문제로 중단되었을경우 ROLLBACK이 진행되도록 함.

- LOCK이 걸린 RESOURCE는 모두 UNLOCK처리함. (타 사용자들이 접근할 수 있도록).

- 해당 클라이언트가 정상적으로 종료된 것처럼 진행하는 것이라고 생각.

- 이게 문제생길경우 서버를 한번 SHUT DOWN 시키고 다시 살려야함.

 

4-2. SMON (SYSTEM MONITOR)

-서버가 운영체제 오류로 정지 또는 재가동시 실행됨. 시스템 오류의 경우 오라클 인스턴스를 복구한다.

- DBC(디비버퍼캐시) 의 데이터를 일치시켜주는 역할. LOG파일을 읽어서 데이터를 읽어온 뒤 UNDO TABLESPACE상의 데이터와 비교하여 일치하지 않을 경우 ROLLBACK 진행.

-  UNDO TABLESPACE: 사용자가 DML을 수행 시, 원본데이터를 저장해두는 Tablespace

 

4-3. DBWN (DATABASE WRITER)

-클라이언트마다 db writer가 각각 생기므로 n이 붙는 것.

-데이터베이스 파일을 작성

 

4-4. CKPT (CHECKPOINT)

-DBWN 호출

-컨트롤파일의 체크포인트 정보를 업데이트함

 

4-5. LGWR (LOG WRITER)

-로그 버퍼에 있는 내용을 로그파일로 작성. 선기록 후조치(DBWn이 작성하기 전에 로그먼저 작성)

-동작시점 : commit 명령시(CKPT 호출) , checkpoint 명령어 실행시, Redo buffer가 ⅓ full 일 경우, 매 3초마다 내려씀

 


 

[ LOGICAL STRUCTURE : 논리적 구조 ]

블럭이 모이면 EXTENT가 됨. 오라클에서는 EXTENT의 크기를 지정할 수 있음.

EXTENT들이 모여서 SEGMENT가 됨. 이 SEGMENT들이 모여서 DATAFILE이 되는 것.

 

- DB 인스턴스의 상태 확인.

데이터베이스가 정상적인 상태일 때 아래와 같이 조회됨. V$ : 서버의 정보를 보여줌.

 

※ 참고

로그파일 - 데이터베이스파일 - 컨트롤파일 각각에 있는 시리얼넘버가 일치해야만 오라클이 실행됨.

사내에 있는 데이터베이스 파일을 복사해서 집에서 실행하려해도 읽어볼 수 없음. 시리얼넘버의 KEY값이 다르기 때문.

이 값을 일치시키기 위해서는 DB를 SHUT DOWN 시켜야 함(고로읽을 수 없음!).