[Oracle] CKPT 프로세서

·2025년 8월 21일
0

오라클 관리

목록 보기
23/163

CKPT: checkpoint


🔸 이론1. CKPT(체크포인트 프로세서)가 하는 역할

💡 메모리의 내용을 db로 내려쓰게 하면서
메모리와 db 간의 데이터를 일치시켜주는 역할


🔸 이론2. 메모리의 데이터를 디스크로 내려쓰는 이벤트는?

💡 이 이벤트 이름을 "checkpoint event" 라고 함
이 작업 주기는 오라클에 의해서 자동으로 관리되고 있음
메모리의 변경사항이 많으면 자주 내려쓰고 별로 없으면 덜 내려씀


이론3. Checkpoint event 를 설명하세요.


실습1. 체크 포인트 이벤트 주기가 자동으로 일어나는지 확인하시오

SQL> show parameter fast

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
fast_start_parallel_rollback         string      LOW
SQL>

💡 fast_start_mttr_target 이 0으로 되어있으면 oracle이 자동으로 체크포인트를 수행하지 않습니다.
만약 이 값을 300(5분) 으로 설정하면 5분마다 자동으로 체크포인트가 발생합니다.


실습2. 체크포인트를 수동으로 일으키시오

SQL> alter system checkpoint;

시스템이 변경되었습니다.

💡 db를 내리거나 full backup을 받기 전에 메모리의 내용을 디스크로 내려쓰는 위의 수동 작업을 해주는 것을 권장함


문제1. 오라클의 체크포인트가 5분에 한번씩 자동으로 일어나게 설정하시오

SQL> alter system set fast_start_mttr_target=300 scope=both;

실습3. dba가 db 작업을 할 때 반드시 열어놓고 보는 파일은?

💡 alert log file 입니다. 이 파일에 db에서 발생하는 이슈들이 실시간 기록되고 있습니다.

SQL> show parameter background_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      /u01/app/oracle/product/19.3.0
                                                 /dbhome_1/rdbms/log
SQL>
SQL> SELECT value FROM v$diag_info WHERE name = 'Diag Trace';

[oracle@ora19c trace]$ cd /u01/app/oracle/diag/rdbms/ora19/ORA19/trace

[oracle@ora19c trace]$ tail -f alert*

실습4. dba.sh 에 alert log file을 실시간 조회하는 명령어를 마지막 번호에 추가하시오

echo -e "
           dba 작업을 자동화하는 쉘 스크립트
"
echo -e " ================================= "
echo "                                       "
echo "[1] DB에서 발생한 TX 락을 확인하려면 1번을 누르세요.
[2] DB에서 발생한 악성 SQL을 확인하려면 2번을 누르세요
[3] TOP명령어로 확인한 프로세서 번호로 해당 세션의 정보를 확인하고 싶으면 3번을 누르세요
[4] sys 유져로 접속해서 db를 startup 하려면 4번을 누르세요
[5] 리스너를 시작 시키려면 5번을 누르세요
[6] alert log file을 실시간 모니터링하려면 6번을 누르세요"
echo "                                "
echo -n "원하는 작업번호를 누르세요 "
read aa
echo "                                "
case $aa in
    1) sqlplus -s system/oracle_4U @/home/oracle/lock.sql ;;
    2) sqlplus -s system/oracle_4U @/home/oracle/bad.sql ;;
    3) sqlplus -s system/oracle_4U @/home/oracle/spid.sql ;;
    4) sqlplus -s sys/oracle_4U as sysdba @/home/oracle/startup.sql ;;
    5) lsnrctl start ;;
    6) tail -f /u01/app/oracle/diag/rdbms/ora19/ORA19/trace/alert* ;;
esac
echo "                                                            "   

문제2. 체크포인트 주기를 10분으로 변경하고 db를 내렸다 올리는데 alert log file을 모니터링 하면서 작업하시오

SQL> alter system set fast_start_mttr_target=600 scope=both;

시스템이 변경되었습니다.

SQL> shutdown immediate
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL>
SQL> startup
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 1979709008 bytes
Fixed Size                  8898128 bytes
Variable Size             520093696 bytes
Database Buffers         1426063360 bytes
Redo Buffers               24653824 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SQL>
SQL> show parameter fast

실습5. 체크포인트를 수동으로 일으키고 data file header에 체크포인트 번호를 확인하시오

SQL> select file#, checkpoint_change#
  2   from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            2628252
         3            2628252
         4            2628252
         7            2628252
         
         
SQL> save dh.sql
file dh.sql()가 생성되었습니다

SQL> @c

시스템이 변경되었습니다.

SQL> @dh

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            2629588
         3            2629588
         4            2629588
         7            2629588

0개의 댓글