[목차]
- 오라클 프로세스 개념 및 종류
- DBWR
- PMON
- CKPT
1. 오라클 프로세스
- 유저 프로세스 - 특정 SQL을 수행하여 원하는 내용을 추출하고 싶다면 데이터베이스에 접속해야 한다. 이때 SQLPLUS를 사용하여 접속하였다면 해당 SQLPLUS는 유저 프로세스를 생성하게 된다. 유저 프로세스는 해당 세션의 정보와 수행하고자 하는 SQL 정보를 데이터베이스 서버로 전달하게 된다.
- 서버 프로세스 - 유저 프로세스가 수행이 필요한 SQL과 해당 세션 정보를 가지고 데이터베이스에 요청하게 되면 데이터베이스로부터 하나의 프로세스를 할당받게 된다. 해당 프로세스는 유저 프로세스로부터 요청받은 사항을 수행하게 되며 이를 서버 프로세스라 한다.
- 백그라운드 프로세스 - 오라클 메모리 구조인 SGA 관리 등의 내부적인 작업 수행을 위해 필요한 프로세스이다. 그렇기 때문에 오라클이 기동과 동시에 해당 프로세스 중 필수 프로세스는 반드시 기동되어야 한다. 또한, 다른 특정 기능을 사용하기 위해서는 해당 기능을 지원하는 프로세스를 미리 기동시켜야 한다. 이렇듯 서비스중에는 계속적으로 프로세스가 기동되어 있어야 하기 때문에 이를 백그라운드 프로세스라고 한다.
2. DBWR(Database Writer)
- 메모리에서 변경된 버퍼를 디스크에 기록하는 프로세스
- 데이터 버퍼 캐쉬
- 더티 버퍼(Dirty Buffer) - 변경은 완료되었지만 디스크에 기록되지 않은 버퍼
- 사용중 버퍼(Pinned Buffer) - 변경중인 버퍼
- 프리 버퍼(Free Buffer) - 변경이 완료된 후 디스크에 기록된 범퍼
DBWR 백그라운드 프로세스는 변경이 발생하였으나 디스크로 저장되지 않은 버퍼인 더티 버퍼를 디스크로 기록하는 역할을 수행한다. DBWR 백그라운드 프로세스에 의해 디스크로 기록된 버퍼는 프리 버퍼로 상태가 변경된다.
3. PMON (Process Monitor)
- 실패한 프로세스가 수행중이던 트랜잭션 롤백
- 실패한 프로세스가 획득했던 메모리, 락 및 기타 자원 할당 해제
EX) 사원 테이블 UPDATE
서버 프로세스는 사원 테이블을 UPDATE하는 명령을 수행하기 위해 PGA를 할당받고 사원 테이블과 해당 행에 락(Lock)을 획득하고 실제 작업을 수행하게 된다. 변경 작업중 해당 서버 프로세스에 문제가 발생하여 비정상 종료가 되었다고 가정하자. 데이터베이스에서 수행중인 작업이 비정상 종료하게 되면 PMON 백그라운드 프로세스가 활동을 시작하여 비정상 종료된 서버 프로세스가 수행하던 트랜잭션에 의해 변경된 사원 테이블의 행을 롤백하게 된다. 또한 해당 서버 프로세스가 할당받은 PGA와 락(Lock) 등 해당 서버 프로세스가 사용하던 자원을 할당 해제하게 된다.
'공부 > Database' 카테고리의 다른 글
ORACLE의 메모리 구조 (0) | 2022.03.27 |
---|