1. 트랜잭션 발생 순서
1) 유저가 데이터에 대한 DML을 요청
2) 공유 풀에 접근하여 공유 풀 관련 작업을 수행
3) 작업하고자 하는 데이터 블록을 데이터 버퍼 캐시에 복사하고 ITL을 획득한다.

  • ITL 획득방법
    1. 사용하지 않는 ITL 획득
    2. 가장 오래 전에 커밋된 순서대로 ITL을 검색하며 재사용
    3. 사용 가능한 ITL이 발견될 때까지 ITL을 크린하웃시킴
    4. enq:TX - allocate ITL entry 대기 이벤트를 발생시키며, ITL 추가 생성
    5. 최대 3초간 대기하다가 ITL획득 처음 단계부터 다시 수행

4) ITL의 SCN정보를 현재 시점 SCN으로 갱신하고 변경하고자 하는 행에 락 바이트 변경 및 행 락을 적용한다.
5) PGA 영역에 리두 정보를 생성한다.
6) 트랜잭션이 사용할 언두 세그먼트를 지정한다.
7) 지정된 언두 세그먼트 헤더에 저장된 트랜잭션 테이블 헤더를 통해 트랜잭션 테이블에 있는 트랜잭션 슬롯이 할당된다. 트랜잭션 슬롯을 할당받으면 트랜잭션 ID가 트랜잭션에 할당되며 ITL에 기록된다.
--> 할당 받을 수 없다면 undo segment tx slot 대기 이벤트를 발생시키며 최대 1초간 대기하다가 다시 획득을 시도한다.
8) 언두 블럭을 트랜잭션에 할당한다.
9) 언두 정보를 생성한다.
--> 트랜잭션에 할당된 언두 헤더 블록과 언두 블록이 버퍼 캐쉬에 복사된다.
10) 리두 로그 버퍼에 리두 로그 정보를 저장한다.
11) 데이터 블록에 변경을 적용한다.
--> 이전 이미지에 대한 정보가 언두 블록에 저장되고, 데이터 블록이 변경되면서 더티 상태가 된다.
12) 트랜잭션이 의도한 모든 데이터를 변경 후 커밋을 수행하여 트랜잭션을 종료하게 한다.