5-1 인스턴스
인스턴스는 Oracle데이터베이스의 상주(常駐)부분이다. SGA와 백그라운드 프로세스로 구성된다. Oracle 데이터베이스를 사용하려면, 인스턴스를 반드시 기동할 필요가 있다.
일반적으로 인스턴스와 데이터베이스 파일은 1:1관계를 갖는다. 그러나, 가용성을 향상하기 위한 RAC구성에는 하나의 데이터베이스 파일에 여러 개의 인스턴스가 대응할 수 있다.
주요 백그라운드 프로세스
프로세스 이름 | 설명 |
데이터베이스 라이터 (DBWn) | 데이터베이스 버퍼 캐시 안의 갱신완료 블록을 데이터베이스 파일에 작성 |
로그 라이터 (LGWR) | REDO 로그버퍼의 REDO 데이터(갱신이력정보)를 REDO 로그파일에 작성 |
체크포인트 (CKPT) | DBWn에 대해 데이터베이스 버퍼캐시 안의 갱신완료 블록을 데이터파일에 작성하라는 지시를 내보냄 |
시스템 모니터 (SMON) | 인스턴스가 이상종료할 경우, 다음 인스턴스 기동시에 데이터베이스 파일의 정합성을 복구처리 |
프로세스 모니터 (PMON) | 프로세스가 이상종료할 경우, 그 프로세스가 사용하고 있던 여러 데이터나 리소스를 후처리함 |
관리 모니터 (MMON) | 성능분석 등에 사용되는 각종 통계정보를 정기적으로 수집 |
아카이버 (ARCn) | 로그스위치 발생후, REDO 로그파일의 REDO 데이터를 아카이브 로브파일로서 복사함 |
SGA
컴포넨트 | 설명 |
데이터베이스 버퍼 캐시 | 데이터파일로부터 읽어들인 블록을 캐시하는 기능, 갱신완료 블록을 일시적으로 보관하는 기능 (버퍼기능) |
공유 풀 | 해석완료된 SQL이나 데이터 딕셔너리의 정보 등을 캐시하는 기능 |
REDO 로그버퍼 | REDO 로그파일에 쓰기 전에 REDO 데이터를 일시적으로 보관함 |
Java 풀 | Java 언어로 작성된 Stored Procedure의 실행을 위해 사용함 |
라지 풀 | 백업이나 병렬처리 등의 작업영역으로서 사용함 |
데이터베이스 버퍼캐시
- 캐시 기능: 데이터를 참조하지 위해서는 먼저 데이터파일로부터 블록을 읽어들일 필요가 있는데, 한 번 실행한 데이터를 잠시 버퍼캐시에 캐싱함으로써 이후 다른 프로세스가 해당 데이터를 참조하고자 할 때 데이터 파일에서 읽지 않고 버퍼캐시에 있는 데이터를 읽을 수 있음
- 버퍼 기능: 데이터 갱신 후 바로 데이터파일에 일일히 변경하지 않고, 이후 CKPT 신호로 DBWn이 한번에 버퍼캐시의 갱신 데이터를 데이터파일에 반영
REDO 로그버퍼
- 데이터를 갱신했을 때, 그 정보를 일단 SGA의 REDO 로그버퍼에 격납한다. 이후 LGWR을 통해서 REDO 로그파일에 저장된다. (단, 최소한 Commit할 시점에는 변경내용이 REDO 로그파일에 반영되어야 한다.)
공유 풀
-해석된 SQL 정보: 동일한 SQL을 실행할 경우, 공유 풀에 격납되어 있는 해석된 SQL의 정보를 사용함으로써, SQL을 실행할 때까지의 시간과 서버 부하를 줄일 수 있다.
-데이터 딕셔너리 정보: Oracle은 여러 처리로 데이터 딕셔너리에 반복하여 엑세스하기 때문에, 데이터 딕셔너리의 정보를 캐시함으로써 성능을 향상시킬 수 있다.
PGA (Program Global Area)
PGA는, 특정 Oracle 프로세스 전용의 메모리 영역이다. 각 PGA 영역은 소트처리 등의 프로세스 전용의 작업용 메모리 영역으로 사용된다.
5-2 인스턴스 기동/정지
인스턴스 기동 단계 | 설명 |
SHUTDOWN | 인스턴스가 정지되어, 데이터베이스가 가동되어 있지 않은 상태 |
NOMOUNT | 초기화 파라미터 파일을 읽어들여 인스턴스가 기동됨. 인스턴스만 기동되어 있는 상태 |
MOUNT | 초기화 파라미터 정보와 함께 제어파일(CONTROL_FILES)을 읽어들임. |
OPEN | 제어파일의 정보와 함께 REDO로그파일, 데이터파일을 이용가능하게 됨. 일반유저도 접속이 가능한 상태 |
SQL*Plus에 의한 인스턴스 기동
- SQL*Plus로부터 인스턴스를 기동하려면, startup 커맨드를 실행한다.
그러나, SYSDBA 권한이나 SYSOPER, SYSBACKUP 권한 등이 부여된 사용자만 이 작업을 수행할 수 있다.
커맨드 | 설명 |
startup nomount | NOMOUNT 상태까지로 인스턴스를 기동한다. 주로 다음의 작업을 할 때 사용한다. - 데이터베이스 수동작성 - 제어파일 재작성 |
startup mount | MOUNT 상태까지로 인스턴스를 기동한다. 주로 다음의 작업을 할 때 사용한다. - 데이터파일 이름 변경, 삭제 - 데이터베이스의 복구 |
startup 혹은 startup open | OPEN상태까지 인스턴스를 기동한다. 이때 통상 데이터베이스 사용자도 데이터베이스에 접속할 수 있게 된다. |
초기화 파라미터
주요 초기화 파라미터 | 설명 | 기동중 변경 가능여부 |
CONTROL_FILES | 제어파일의 파일명으로, 복수개의 지정이 가능하다. | X |
DISPATCHERS | 디스패치 프로세스를 구성 | O |
MEMORY_MAX_TARGET | MEMORY_TARGET 초기화 파라미터의 상한값 | X |
MEMORY_TARGET | 모든 SGA 컴포넨트와 모든 PGA의 합계 사이즈. 자동 메모리 관리사용시에 설정한다. | O |
PGA_AGGREGATE_TARGET | 모든 프로세스의 PGA 합계사이즈의 목표값. 자동 PGA 메모리 관리사용시에 설정한다. | O |
SHARED_POOL_SIZE | 공유 풀의 사이즈 | O |
SGA_MAX_SIZE | 모든 SGA 컴포넨트 합계 사이즈의 상한치 | X |
SGA_TARGET | 모든 SGA 컴포넨트의 합계사이즈. 자동공유 메모리 관리사용시에 설정한다. | O |
UNDO_RETENTION | UNDO 보존시간의 하한치 (단위: 초) | O |
동적초기화 파라미터와 정적초기화 파라미터
- 기동중에 변경이 가능한 초기화 파라미터를 동적초기화 파라미터, 변경이 불가능한 초기화 파라미터를 정적초기화 파라미터라고 부른다.
동적초기화 파라미터
정적초기화 파라미터
- 기동중에 변경이 불가능하기 때문에, 초기화 파라미터파일 설정만을 변경하는 옵션인 SCOPE=SPFILE을 지정하여 ALTER SYSTEM 커맨드를 실행한다. 이는 인스턴스 재기동시에 변경이 반영된다.
초기화 파라미터 파일
- 서버 파라미터 파일(SPFILE)과 텍스트 파라미터 파일 (PFILE) 두 종류가 존재한다. 주로 사용되는 것은 SPFILE이다.
종류 | 설명 |
서버 파라미터 파일 (SPFILE) | -현재 주로 사용되는것 -바이너리 형식으로, 유저가 지정할 수 없다. -설정값을 SQL로 변경 가능 |
텍스트 파라미터 파일 (PFILE) | -텍스트형식. 유저가 직접 텍스트 에디터 등으로 직접 편집이 가능하다. -설정값을 SQL로 변경할 수 없다. |
인스턴스 정지(shutdown)
- 인스턴스 정지는, 역시 SYSDBA권한 혹은 SYSOPER, SYSBACKUP 등의 권한을 가진 유저가 실행할 수 있는 작업이다.
옵션 | 설명 | 기존 접속 | 실행중의 SQL |
NORMAL | 모든 접속이 종료될때까지 대기하여, 인스턴스의 정지처리를 진행한다.디폴트값이다. | 모든 유저가 접속을 종료할 때까지 대기 | 아무것도 조작하지 않는다. |
TRANSACTIONAL | 실행중의 트랜잭션이 종료될때까지 대기하고, 인스턴스의 정지처리를 진행한다. | 트랜잭션 종료시에 접속이 절단된다. | 트랜잭션 종료를 대기한다. |
IMMEDIATE | 실행중의 처리를 취소한 후에, 인스턴스의 정지처리를 진행한다. | 접속을 절단한다. | 취소한다.(ROLLBACK) |
ABORT | 실행중의 처리에 대해 취소처리를 실행하지 않고, 강제로 인스턴스를 KILL | 접속을 절단한다. | 강제종료 (취소작업이 아니다) |
- 인스턴스를 강제종료하면, 데이터베이스파일은 정합성을 지키지 못하는 상황이 될 수 있는데, 이 경우 다음번에 인스턴스 접속할 때 정합성 복구를 처리한다.
5-3 메모리 컴포넌트 관리
Oracle은 공유풀이나 데이터베이스 버퍼캐시 등의 여러 SGA의 컴포넌트, 각 프로세스의 PGA 등 여러 방법으로 메모리 영역을 사용한다. 하나하나 이것들을 수동으로 설정하기는 어렵기 때문에, Oracle에는 자동 메모리 관리, 자동 공유메모리 관리, 자동 PGA관리 등의 메모리사이즈 자동조정기능을 준비되어 있다.
- 자동 공유 메모리 관리: 각각의 SGA 컴포넨트의 사이즈를 자동으로 조정한다. (REDO 로그버퍼는 제외), SGA 컴포넨트의 합계사이즈는 SGA_TARGET이 된다.
- 자동 PGA 메모리 관리: 인스턴스 PGA가 PGA_AGGREGATE_TARGET을 넘지 않도록 각 프로세스의 PGA 영역을 자동으로 조정한다.
- 자동 메모리 관리: SGA와 인스턴스 PGA의 사이즈를 자동적으로 조정한다. SGA와 PGA의 함계사이즈의 목표치는 MEMORY_TARGET이 된다.
자동 메모리 관리(AMM:Automatic Memory Management)는 SGA와 인스턴스 PGA의 사이즈를 자동적으로 조정하는 기능이다. REDO 로그버퍼 이외의 SGA 각 컴포넨트의 사이즈, 각 PGA의 사이즈도 자동으로 조정된다.
동시 로그인이 늘어나서, PGA 메모리 할당을 증가시킬 필요가 있다면, SGA 사이즈를 작게 하여 그 부분을 PGA에 돌린다.
각 영역에서 자동 메모리 관리를 받고 싶지 않다면, MEMORY_TARGET, SGA_TARGET, PGA_AGGREGATE_TARGET값을 모두 0으로 지정하면 된다.
연습문제
1. 유저가 UPDATE문을 발행했다. UPDATE 대상의 데이터를 포함한 블록을 데이터파일로부터 읽어들여, 데이터베이스 버퍼 캐시에 격납하는 프로세스는 어떤 프로세스인가?
A. 유저 프로세스
B. 서버 프로세스
C. 데이터베이스 라이터 (DBWR)
D. 시스템 모니터 (SMON)
정답:
1. B
'Oracle > Oracle Architecture' 카테고리의 다른 글
오라클마스터 브론즈(7) 유저 및 시큐리티 관리 (0) | 2022.09.12 |
---|---|
오라클마스터 브론즈(6) 데이터베이스 저장공간구조 관리 (0) | 2022.09.09 |
오라클마스터 브론즈(4) Oracle 데이터베이스 환경 구성 (0) | 2022.09.06 |
오라클마스터 브론즈(3) Oracle Enterprise Manager Database Express 및 SQL 관리 TOOL (2) | 2022.09.05 |
오라클마스터 브론즈(2) Oracle 설치와 데이터베이스 작성 (0) | 2022.08.30 |