
DBWR 프로세스는 SGA 내에 존재하는 데이터베이스 버퍼 캐시로부터
데이터베이스 블록을 디스크 상의 데이터파일에 쓴다.
오라클 인스턴스는 DBW0~DBW9까지 최대 10개의 DBWR 프로세스를 가질 수 있고, 이 프로세스들은 여러 개의 데이터파일에 I/O 작업을 수행한다.
대부분의 인스턴스는 하나의 DBWR를 사용한다.
대부분의 인스턴스는 하나의 DBWR를 사용한다.
1. 오라클이 체크포인트를 수행할 필요가 있는 경우
데이터 파일의 블록을 변경하여 리두 로그와 일치하도록 하기 위해
트랜잭션이 커밋될 때 트랜잭션에 대한 리두를 기록한 다음, 실제 블록을 쓴다.
정기적으로 오라클은 데이터파일의 내용을 커밋된 트랜잭션에 대해 기록된 리두와 일치시키기 위해 체크포인트를 수행한다.
2. 오라클이 사용자가 요청한 블록을 캐시로 읽어들이고자 하는데, 버퍼 캐시 내에 충분한 공간이 없는 경우
데이터파일에 쓰여지는 블록은 가장 이전에 사용된(LRU, Least recently used)블록이다.
SGA 내에 존재하는 로그 버퍼로부터 리두 정보를 디스크 상의 현재 리두로그 파일의 모든 복사본에 쓴다.
트랜잭션이 진행됨에 따라 관련 리두 정보는 SGA 내의 리두 로그 버퍼에 저장된다.
트랜잭션이 커밋될 때, 오라클은 리두 정보를 디스크에 쓰기 위해 LGWR 프로세스를 호출함으로써 리두 정보를 영구적으로 기록한다.
오라클의 상태와 안전을 안정적으로 유지한다.
장애 후에 인스턴스가 시작될 때, 장애 복구를 수행한다.
또한 Oracle Parallel Server/Real Application Clusters의 경우와 같이 하나 이상의 인스턴스가 동일한 데이터베이스를 액세스할 경우, 인스턴스 장애가 발생하면 이에 대한 복구를 수행한다.
SMON은 사용하지 않는 여러 조각의 공간을 하나로 합침으로써 데이터파일 내의 공간을 정리하고, 행 정렬에 사용된 공간이 더 이상 필요없는 경우에 이를 제거한다.
오라클이 리두로그 파일을 채우면, 해당 리두로그 파일을 채우면 해당 리두 로그 파일을 읽고, 사용된 리두 로그 파일의 복사본을 지정된 아카이브 로그 위치(들)에 쓴다.
오라클 8i는 ARCn형태로 표시되며, 최대 ARCH 프로세스를 지원한다.
LGWR는 업무량에 따라, 초기화 매개변수 LOG_ARCHIVE_MAX_PROCESS 가 지정한 한도까지 필요에 따라 ARCH 프로세스를 띄운다.
오라클 데이터베이스는 메타 데이터, 혹은 데이터 구조를 표현하는 데이터의 집합을 갖고있다.
이러한 메타데이터를 저장하는 테이블과 뷰를 Oracle Data Ditctionary라고 일컫는다.
동적 테이블: V$, GV$ 접두어가 붙은 데이터 딕셔너리 테이블은 오라클 데이터베이스의 현 상태를 반영하기 위해 지속적으로 변경되는 동적 테이블이다.
정적 테이블: DBA_, ALL_, USER_
| 구성요소 | 데이터 딕셔너리 테이블과 뷰 |
|---|---|
| 데이터베이스 | V$DATABASE |
| 테이블스페이스 | DBA_TABLESPACES, DBA_DATA_FILES, DBA_FREE_SPACE |
| 제어 파일 | V$CONTROLFILE, V$PARAMETER, V$CONTROLFILE_RECORD_SECTION |
| 데이터파일 | V$DATAFILE, V$DATAFILE_HEADER, V$FILESTAT, DBA_DATA_FILES |
| 세그먼트 | DBA_SEGMENTS |
| 익스텐트 | DBA_EXTENTS |
| 리두 스레드, 그룹, 멤버 | V$THREAD, V$LOG, V$LOGFILE |
| 아카이빙 상태 | V$DATABASE, V$LOG, V$ARCHIVED_LOG, V$ARCHIVE_DEST |
| 데이터베이스 인스턴스 | V$INSTANCE, V$PARAMETER, V$SYSTEM_PARAMETER |
| 메모리 구조 | V$SGA, V$SGASTAT, V$DB_OBJECT_CACHE, V$SQL, V$SQLTEXT, V$SQLAREA |
| 백그라운드 프로세스 | V$BGPROCESS, V$SESSION |