Data Base/Linux

231212 Linux_Background Process : Background Process, DBWn, LGWR, CKPT, checkpoint, SMON, PMON, 다중화, 이중화

잇꼬 2023. 12. 12. 18:11
728x90
반응형
SMALL

■ DBWn(Database Writer)

1. data buffer cache 에 내용(dirty buffer)을 데이터 파일에 기록한다.

2. data buffer cache 에 있는 수정된 (dirty) buffer(commit, rollback의 경우) 를 데이터 파일로 기록한다.

3. dbwr 작동되는 시점

        1) free buffer를 찾기 못했을 경우(free buffer wait event)

        2) checkpoint event 발생할때(log swith, 디스크에 남겨) -> 'inactive' 상태

 

SQL> ! ps -ef | grep ora_dbw

oracle 28445 1 0 13:46 ? 00:00:02 ora_dbw0_ora11g

 

SQL> show parameter db_writer_processes

 

# SQL

SELECT *
FROM v$parameter WHERE name = 'db_writer_processes';

ALTER SYSTEM SET db_writer_processes = 2 SCOPE=SPFILE;

SELECT *
FROM v$parameter WHERE name = 'db_writer_processes';

SQL> ! ps -ef | grep dbw

 SQL> show parameter db_writer_processes

 

■ LGWR(Log Writer)

1. Redo log buffer 에 있는 redo entry 를 redo log file 에 기록한다.

2. LGWR 작동시점

        1) COMMIT 수행할 경우 : checkpoint

                (1) SCN할당

                (2) undo segment header commit 완료

                (3) 수정된 행이 있는 block header

                (4) LGWR 작동 -> current(group#1) write 작업

        2) redo log buffer 가 1/3 찼을 경우

        3) 1MB 이상의 redo entry 가 들어왔을 경우

        4) 3초마다 (보험을 들어놓는다)

        5) DBWr 가 기록하기 전에

 

# SCN(system commit number)

1. control file

2. block header

3. data file header block

 

# SQL

SELECT * FROM v$logfile;

# SQL

SELECT * FROM v$log;

 

SQL> ! ps -ef | grep lgwr

oracle 5443 1 0 Dec11 ? 00:00:00 ora_lgwr_ora11g

 

[oracle@oracle trace]$ pwd

/u01/app/oracle/diag/rdbms/ora11g/ora11g/trace

[oracle@oracle trace]$ tail -F alert_ora11g.log

 

■ CKPT(Checkpoint process)

1. checkpoint event 발생시점에 DBWR에 알려준다.

2. checkpoint 정보를 데이터 파일 헤더 갱신

3. checkpoint 정보를 컨트롤 파일 갱신

 

■ checkpoint

1. data buffer cache 있는 ditry buffer(block) (수정된 블록)을 정기적으로 디스크에 기록함으로 시스템이나 데이터베이스에 failure 가 발생한 경우 데이터가 손실되지 않도록 한다. (data write)

2. instance recovery 에 필요한 시간을 줄인다.

   즉, 마지막 체크포인트 다음에 나오는 redo log file 에 redo entry 에 대해서 recovery 를 수행하면 된다.

3. 체크포인트 정보에는 체크포인트 시간, SCN, recovery 를 시작할 redo log file의 위치로 로그 정보를 가지고 있다.

4. 체크포인트가 발생하는 경우

        1) shutdown normal | transactional | immediate 할 경우

                SQL> shutdown immediate : 순서주의!

                Database closed.

                Database dismounted.

                ORACLE instance shut down.

출처)   IT Tutorial
출처)   IT Tutorial

 

        2) ALTER SYSTEM SET CHECKPOINT; (수동)

        3) ALTER TABLESPACE users OFFLINE NORMAL; -> 사용하지 못하게 함

        4) ALTER TABLESPACE users READ ONLY;

        5) ALTER TABLESPACE users BEGIN BACKUP;

        6) ALTER TABLESPACE users END BACKUP;

        7) DROP TABLE 테이블명;

        8) TRUNCATE TABLE 테이블명;

        9) paralle query (select /*+ fill(e) paralle(e,2) */ from 테이블명 e;)

        10) Log swith 발생시(ALTER SYSTEM SWITCH LOGFILE;)

        11) fast_start_mttr_target 을 설정한 경우

SQL> show parameter fast_start_mttr_target

# log_checkpoints_to_alert = TRUE 설정을 하면 체크포인트 정보를 alert_SID.log 에 기록한다.

SQL> show parameter log_checkpoints_to_alert

 

SQL> ! ps -ef | grep ckpt

oracle 17083 1 0 01:32 ? 00:00:00 ora_ckpt_ora11g

 

SMON(System Monitor)

1. Instance recovery(Instance fail 시 인스턴스 복구하는 역할)

2. coalesces free space(디스크 조각모음)

3. 임시 블록 세그먼트들을 재사용할 수 있도록 하는 역할

 

SQL> ! ps -ef | grep smon

oracle 22463 22461 0 02:14 pts/2 00:00:00 grep smon

 

■ PMON(Process Monitor)

1. user process 가 실패할 경우 프로세스 recovery 수행

        1) data buffer cache 정리

        2) 사용하고 있는 리소스 해제

        3) 트랜잭션에 대해서 자동 rollback

        4) lock 해제

2. listener 에게 db 정보를 등록시키는 작업을 수행

 

SQL> ! ps -ef | grep pmon

oracle 17059 1 0 01:32 ? 00:00:00 ora_pmon_ora11g

 

■ Control file

1. 작은 binary file

2. database 이름, 식별자, 생성시간

3. data file, redo log file 이름 및 위치정보

4. 현재 online redo log file의 sequence 번호

5. checkpoint 정보, scn 정보

6. backup 정보

7. archivelog mode(운영중), noarchivelog mode(운영중X) 정보

8. control file 은 다중화 하자

 

# SQL

SELECT * FROM v$database;

# SQL

SELECT dbid, name, checkpoint_change#, current_scn
FROM v$database;

 

# SQL

SELECT dbid, name, checkpoint_change#, current_scn FROM v$database; --#881939

SELECT name, checkpoint_change# FROM v$database;

SELECT * FROM v$log;

 

SQL> show parameter control_files

[oracle@oracle dbs]$ cat initora11g.ora

...

*.control_files='/u01/app/oracle/oradata/ora11g/control01.ctl','/u01/app/oracle/fast_recovery_area/ora11g/control02.ctl' -> file 위치 및 control 복사본 이중화 확인

...

 

# SQL

SELECT *
FROM v$parameter
WHERE name = 'control_files';

 

[oracle@oracle ~]$ mkdir backup

[oracle@oracle ~]$ ls

[oracle@oracle ~]$ cd backup/

[oracle@oracle backup]$ pwd

/home/oracle/backup

 

□ control file 다중화

초기 파라미터 파일이 서버 파라미터 파일로 운영하고 있다.

SPFILE 

SQL> show parameter spfile

 

1. 기존 파일을 새로운 파일로 위치 및 내용 복사하기

ALTER SYSTEM SET control_files =
'/u01/app/oracle/oradata/ora11g/control01.ctl', -- 기존파일위치
'/u01/app/oracle/fast_recovery_area/ora11g/control02.ctl',
'/home/oracle/backup/control03.ctl' SCOPE=SPFILE; -- 새로운 위치

2. DB 를 정상적인 종료

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> !

 

3. 기존 control file을 다른 위치에 복사(cp)

[oracle@oracle ~]$ cp -v /u01/app/oracle/oradata/ora11g/control01.ctl /home/oracle/backup/control03.ctl

‘/u01/app/oracle/oradata/ora11g/control01.ctl’ -> ‘/home/oracle/backup/control03.ctl’

# 확인방법

[oracle@oracle ~]$ ls -l /home/oracle/backup/

 

4. 오라클로 접속한 후 DB 시작

[oracle@oracle ~]$ exit

exit

 

SQL> startup

ORACLE instance started.

 

Total System Global Area 711430144 bytes

Fixed Size 1367004 bytes

Variable Size 482346020 bytes

Database Buffers 222298112 bytes

Redo Buffers 5419008 bytes

Database mounted.

Database opened.

SQL> show parameter control_files

 

□ control file 이중화

1.  원상복구 작업, 원본 파일만 두고 SCOPE=SPFILE 설정해주자

ALTER SYSTEM SET control_files =
'/u01/app/oracle/oradata/ora11g/control01.ctl',
'/u01/app/oracle/fast_recovery_area/ora11g/control02.ctl' SCOPE=SPFILE;

2. DB 를 정상적인 종료

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> !

 

SQL> startup

SQL> show parameter control_files

 

728x90
반응형
LIST