안녕하세요~
현재 Oracle Admin을 공부하고 있는 학생입니다^^
다름이 아니라 공부중에 궁금증이 생겼는데 아무리 생각해도 이해가 되지 않고 적절한 답을 찾지 못해서
여기에 글을 남깁니다.
제가 궁금한 것은 다음과 같은 순서로 진행될때입니다.
1. User Process에 의해서 update 문이 수행된다.
2. Oracle Server에서는 redo log buffer에 변경사항이 기록되고 undo segment에 변경전 내용이 기록되고, db buffer cache의 해당 block의 내용잉 수정이 됩니다.
3. User는 commit을 하지 않았는데 LGWR의 기능에 따라서 3초에 한번 또는 1/3이 차버려서 redo log buffer의 내용을 redo log file로 내려쓰게 됩니다.
4. redo log file에서는 file의 공간이 부족하여 log switch가 발생합니다.
5. 이때 checkpoint 신호가 발생하여 DBWR에 의해서 db buffer cache의 내용을 disk 파일로 내렸버립니다.
6. user는 commit을 하지않고 종료
제가 궁금한 것은 이렇게 commit 없이 종료하였는데 현재 update 문에 의해서 변경된 데이터가 data file에까지 저장이 된 상태가 된거 같은데..
정상적으로 LGWR, CKPT, DBWR 프로세스에 의해서 해당 작업이 이루어 졌고요..
Oracle Server를 재가동 했을 경우에는 해당 update 했던 데이터가 원래 데이터로 복원되나요?
복원된다면 어떤 원리로 되는지가 궁금합니다..
설명해주셔야 할 내용이 많다면 참고할 만한 서적이라도 추천을 부탁드립니다.
조언부탁드리겠습니다~
감사합니다^^