COMMIT문의 처리과정
COMMIT문의 처리과정
DML문을 실행한 후 변경작업을 종료하려면 Commit문을 실행하며 변경취소를 하려면 Rollback문을 실행하게
되는데 그 과정에 대해서 자세히 알아보도록 하겠습니다.
(위 그림의 "클릭" 버튼을 누르시면 "COMMIT문의 처리과정"을 그림을 통해 이해할 수 있습니다.)
다음은 사용자가 DML(Insert,Updata,Delete)문을 실행한 후 Commit문을 처리했을 경우 데이터베이스 내부에서
처리되는 과정입니다.
1. 사용자가 DML문을 실행한 후 COMMIT문을 실행합니다.
2. 서버 프로세스는 DML문의 처리결과(변경전의 데이터, 변경후의 데이터)가 저장되어 있는 로그 버퍼 영역에
시스템 변경번호(SYSTEM CHANGE NUMBER)를 부여합니다.
3. 그리고 로그 기록기(LGWR)는 로그버퍼 영역에 있는 변경 데이터를 영구적으로 보관하기 위해 리두로그 파일에
저장합니다.(메모리 영역에는 데이터를 영구히 저장할 수 없기 때문에)
4. 서버 프로세스는 네트워크를 통해 사용자 프로세스에게 'Committed' 메시지를 전송하고 사용자 프로세스는
SQL*PLUS 화면에 메시지를 출력해 줍니다.
5. 만약, 로그버퍼 영역의 데이터를 하나의 리두로그 파일에 모두 저장하지 못하면 다음 로그파일로 위치를
이동시킵니다, 이것을 로그 스위치(LOG SWITCH)라고 합니다. 로그 스위 치가 발생하면
6 . CKPT 프로세스는 컨트롤 파일과 데이터 파일의 헤드영역에 시스템 변경 번호와 관련 상태정보를 저장합니다.
이것을 체크포인트 이벤트라고 합니다.
7. 이 작업이 끝나면 데이터베이스 기록기(DBWR)는 데이터버퍼 캐시영역에 있는 사용자의 변경정보를 최종적으로
테이블에 저장합니다.