오라클 아키텍처(2) 프로세스
2018. 12. 17. 07:00
728x90
반응형
오라클 프로세스
오라클 프로세스 =
유저 프로세스(User Porcess) +
오라클 데이터베이스 프로세스
(서버 프로세스와 백그라운드 프로세스) +
오라클 Daemon 과 응용프로그램
프로세스
- 유저 프로세스 : 또는 클라이언트 프로세스. 유저가 오라클에 접속할 때 생성
- 서버 프로세스 : 유저 프로세스에서 발행한 명령 실행
- 백그라운드 프로세스 : 운영체제와 상호작용하며 메모리 구조 관리, I/O 비동기방식으로 수행, 기타 필요한 작업 수행
1. 유저 프로세스
- 유저가 응용프로그램(SQL*Plus 같은)을 실행할 때 유저의 응용 프로그램 의미
- 오라클 서버에서 로컬로 SQL*Plus를 실행시켜서 유저 프로세스를 오라클과 동일 시스템에 위치시킬 수도 있고, 외부에서 네트워크로
접속할 경우 유저 프로세스는 외부에 존재하게 됨
- 외부에서 네트워크로 접속할 경우 유저 프로세스는 먼저 리스너 프로세스와 통신하고,
리스너가 서버 프로세스와 연결시킴
2. 서버 프로세스
- 유저 프로세스의 요청을 처리하는 프로세스
- 하는 일
. 응용 프로그램을 통해 발행된 SQL문 구문 분석
. 필요한 데이터 블록을 디스크에서 SAG 공유 데이터베이스 버퍼로 읽어들임
. 응용 프로그램에게 결과 반환
3. 백그라운드 프로세스
가. DBWn(데이터베이스 라이터 프로세스)
- 데이터베이스 버퍼 캐시의 수정된 버퍼(더티 버퍼)를 디스크에 기록
- 보통은 한 개의 DBW0 프로세스를 갖지만 쓰기 작업이 많다면 추가 프로세스를 구성할 수도 있음
(DB_WRITER_PROCESSES 초기화 파라미터에서 지정)
나. LGWR(Log Writer)
- 서버 프로세스는 데이터 변경 내역을 redo log buffer에 먼저 기록하고(log wirte ahead) 그 다음에
database buffer cache에 기록함
- LGWR은 redo log buffer의 내용을 아래 경우일 때 디스크의 redo log file로 기록
. 유저 프로세스가 트렌젝션을 commit할 때
- LGWR은 redo log buffer의 내용을 아래 경우일 때 디스크의 redo log file로 기록
. 유저 프로세스가 트렌젝션을 commit할 때
. 리두 로그 버퍼가 1/3 찼을 때
. 변경량이 1M 가 되면
. 3초마다
. DBWR이 내려쓰기 전에
. 변경량이 1M 가 되면
. 3초마다
. DBWR이 내려쓰기 전에
- 만약 리두로그 그룹의 파일 중 하나가 손상되면 해당 그룹의 다른 파일을 사용하고 해당 내용을 alert 로그에 남긴다. (그룹의
모든 파일이 장애가 난다면 오라클 멈춤)
- 유저가 트랜젝션을 커밋하면 트랜잭션에 SCN이 할당되는데 이 번호를 트랜젝션의 리두 항목과 함께 리두 로그에 기록.
다. ckpt(chekpoint process)
- DBWR에게 체크포인트 신호를 주고, control file 과 datafile header에 해당 체크포인트 정보를
기록
라. SMON(System Monitor)
- 인스턴스가 비정상 종료 되었을 때 redo log file을 참고해서 clean up(Instance
Recovery)
(사용한 임시 세그먼트 정리, UNDO 세그먼트 관리)
* 주로 공간 정리 전문 프로세스
마. PMON(Process Monitor)
- 서버 프로세스 모니터
- 유저 프로세스가 실패할 경우 프로세스 리커버리 수행
(데이터 버퍼캐시 정리, 유저 프로세스의 리소스 해제)
* 메모리와 프로세스 청소 전문 프로세스
서버 프로세스 비정상 종료시 메모리 정리, 내부 락 해제 등
약 1분에 한번씩 동작
* 중요한 백그라운드 프로세스가 종료되었다면 PMON이 인스턴스를 강제 종료시킴
* 인스턴스 정보, 프로세스 수, 인스턴스 부하 등을 listener.ora에 등록하는 일 담당
(초기화 파라미터에서 정한 수보다 많은 접속 시도가 일어나지 않도록 프로세스 숫자 정보를 PMON이 주기적으로 리스너에게 정보 전달)
바. ARCR(Archiver Process)
- ARCHIVELOG 모드일 경우에만 동작
- 로그 스위치가 발생한 후 리두 로그 파일을 지정된 장치로 복사
사. MMON & MMNL
- AWR(자동 성능 통계)을 수집하고 기록하기 위한 프로세스
- 10g 이후 추가
* 오라클에 로컬에서 SYSDBA로도 접속조차 할 수 없는 장애 상황이 발생할 경우 SMON등의 주요 프로세스를 kill시키면 PMON이 인스턴스를 강제로 종료시킴
* 백그라운드 프로세스는 오라클이 알아서 갯수를 늘려서 작업하고, 불필요하면 프로세스 숫자를 줄이기도 하기 때문에 정확한 숫자를 이야기할 수 없음.
10g와 11g를 거쳐서 점점 백그라운드 프로세스 숫자가 늘어난다고..
12c에서는 300개가 넘는다.
1 2 3 4 5 6 7 8 9 10 | SQL> select count(*) from v$bgprocess; COUNT(*) ---------- 377 1 row selected. Elapsed: 00:00:00.03 | cs |
주요 프로세스 조회(12C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | SQL> SELECT name, description from V$BGPROCESS; NAME DESCRIPTION ----- ---------------------------------------------------------------- PMON process cleanup VKTM Virtual Keeper of TiMe process GEN0 generic0 DIAG diagnosibility process OFSD Oracle File Server BG DBRM DataBase Resource Manager VKRM Virtual sKeduler for Resource Manager RSMN Remote Slave Monitor PING interconnect latency measurement FMON File Mapping Monitor Process PSP0 process spawner 0 RMON rolling migration monitor ACMS Atomic Controlfile to Memory Server DSKM slave DiSKMon process IPC0 IPC Service 0 RPOP instant restore repopulation daemon DIA0 diagnosibility process 0 DIA1 diagnosibility process 1 (중략) DBW0 db writer process 0 DBW1 db writer process 1 DBW2 db writer process 2 DBW3 db writer process 3 DBW4 db writer process 4 DBW5 db writer process 5 DBW6 db writer process 6 DBW7 db writer process 7 DBW8 db writer process 8 DBW9 db writer process 9 DBWa db writer process 10 (a) DBWb db writer process 11 (b) (중략) TMON Transport Monitor ARC0 Archival Process 0 ARC1 Archival Process 1 ARC2 Archival Process 2 ARC3 Archival Process 3 ARC4 Archival Process 4 (중략) LGWR Redo etc. LCK0 Lock Process 0 CKPT checkpoint | cs |
728x90
'SQL(오라클,mysql)' 카테고리의 다른 글
오라클] 온라인 백업중 장애(end backup 안되었을 때) (0) | 2019.02.27 |
---|---|
오라클] 연결, 커넥션, 세션, 리스너 (0) | 2018.12.19 |
오라클 아키텍처(2) 프로세스 (0) | 2018.12.17 |
오라클 아키텍쳐(1) 메모리 구조 (0) | 2018.12.14 |
오라클] 리두 로그(Redo Log) (0) | 2018.12.10 |
DBA 권한 없는 사용자 계정의 테이블스페이스 여유 조회 (0) | 2018.09.28 |
SQL*Plus 기본 명령어 (2) (0) | 2018.04.13 |
SQL*Plus 기본 명령어 (1) (0) | 2018.04.12 |
오라클] 사용자 단위 데이터 이관(exp, imp) (0) | 2017.10.23 |
오라클] OS의 물리파일 읽기 쓰기(UTL_FILE) (0) | 2017.09.07 |
오라클] 트리거(Trigger) (0) | 2017.09.05 |