Transaction
1. User DML 문장 수행
2. 문법 체크 , 권한 체크 수행
3. DML 문에 대하여 Hash 함수를 적용해서 Hash Value 획득
4. Library Cache Latch 획득 - 동일한 SQL문(LCO)이 있는지 확인
5. 동일 SQL문장이 존재 하지 않으면 Shared Pool Latch 획득 한 후 필요한 Chunk 할당.
6. library cache handle에 대하여 library cache lock 을 exclusive 모드로 획득 한 후에 LCO 생성
7. LCO 생성이 완료 되면 library cache lock 을 null 모드로 변경
8. library cache pin을 exclusive로 획득 후 실행계획 생성.
9. library cache lock , library cache pin 을 shared 로 획득 후 DML문장 실행.
( DDL문장 예로 alter table 같은 문장은 library cache lock과 library cache pin을 exclusive 로 획득 )
10. Undo Segment 할당
(cache buffer lru latch 획득 -> Free Block -> Buffer Lock exclusive -> Undo 블럭 load )
11. Undo Segment Header에 Transaction 슬롯 생성 후 Transaction ID 생성 ( Undosegment , undo slot , undo sequence )
12. Data Block Load (없을시 있을시 는 buffer lock 만 획득 )
( cache buffer lru latch 획득 -> Free Block -> Buffer Lock exclusive -> Data Block Load )
13. Data Block 해더에 ITL( Interested Transaction List )에 트랜잭션 엔트리 등록
14. PGA에 Change Vector 생성 ( UndoHeader + Undo Block + Data Block )
15. PGA의 Change Vector를 Redo Buffer에 복사
(Redo Copy Latch -> Redo Allocate Latch -> Redo Copy Latch 해제
16. 해당 Row Lock
17. Undo블럭에 Before 이미지 저장
18. Data Block 변경.
19. Commit 발생
20. SCN 할당
21. Commit 정보 Redo Buffer에 저장
22. Undo Segment Header의 트랜잭션 테이블에 Coomit정보 저장
23. Lock 해제 및 ITL에 SCN ,Flag ( C or U ) , Lock Byte가 갱신 됨.
24. LGWR 작동
'DB - ORACLE > DB Tunning(TABLE,SQL,...)' 카테고리의 다른 글
Statspack을 통한 시스템 튜닝 (0) | 2015.09.02 |
---|---|
Statspack를 통한 고급 시스템 튜닝 (0) | 2015.09.02 |
oracle lock 이란? (0) | 2015.08.24 |
Oracle Latch 란?? (0) | 2015.08.24 |
SQL에서 사용하는 Bind 변수를 알아 내기 위한 방법 (0) | 2015.08.24 |