삽질의 리포팅

4.5 트랜잭션(commit과 rollback)

느린구름 2011. 7. 27. 17:37

오라클 클럽: http://www.oracleclub.com/lecture/1403

 

트랜잭션(TRANSACTION)

  • 트랙잭션은 데이터 처리의 한 단위
  • 오라클 서버에서 발생하는 SQL문들이 하나의 논리적인 작업 단위로써 성공하거나 실패하는 일련의 SQL문들
  • 오라클 서버는 트랜잭션을 근거로 데이터의 일관성을 보증
  • 트랜잭션은 데이터를 일관되게 변경하는 DML문장으로 구성(COMMIT, ROLLBAK,SAVEPOINT)

 

TRANSACTION의 시작

  • 실행 가능한 SQL문장이 제일 처음 실행될 때

TRANSACTION의 종료

  • COMMIT이나 ROLLBACK
  • DDL, DCL문장의 실행 (자동COMMIT)
  • 기계장애 또는 시스템 충돌(crash)
  • deadlock발생
  • 사용자가 정상 종료

 

자동 COMMIT은 다음 경우 발생

  • DDL, DCL 문장이 완료될 때
  • 명시적인 COMMIT, ROLLBACK없이 SQL*Plus를 정상 종료 했을 경우

자동 ROLLBACK은 다음 경우 발생

  • SQL*Plus 비정상 종료
  • 비정상적인 종료, system failure

 

COMMIT과 ROLLBACK

  • 데이터의 일관성 제공
  • 데이터를 영구적으로 변경하기 전에 데이터 변경을 확인
  • 관련된 작업을 논리적으로 그룹화
  • COMMIT, SAVEPOINT, ROLLBACK 문장으로 TRANSATION의 논리 제어

COMMIT이나 ROLLBACK이전의 데이터 상태

  • 데이터 이전 상태 복구 가능
  • 현재 사용자는 SELECT문장으로 DML작업 결과 확인
  • 다른 사용자는 SELECT 문장으로 현재 사용자가 사용한 DML문장의 결과를 확인 불가
  • 변경된 행은 LOCK이 설정 되어서 다른 사용자가 변경 불가

COMMIT이후의 데이터 상태

  • 데이터베이스에 데이터를 영구적으로 변경
  • 데이터의 이전 상태는 완전히 상실
  • 모든 사용자가 결과를 볼 수 있음
  • 변경된 행의 LOCK이 해제되고 다른 사용자가 변경할 수 있음
  • 모든 SAVEPOINT는 제거