티스토리 뷰

트랜잭션(Transaction)

- 트랜잭션은 데이터베이스(Database)에서 데이터를 처리의 한 단위를 의미한다. 

- 오라클 서버에서 발생하는 여러 개의 SQL문들이 하나의 논리적인 작업 단위로써,

  성공하거나 실패하는 일련의 SQL문을 트랜잭션이라고 보면 된다.

- 오라클 서버는 트랜잭션의 개념에 의해 데이터의 일관성을 보증하고, 안정적인 복구가 가능하다.

- 트랜잭션은 데이터를 일관되게 변경하는 DML문장으로 구성된다.

  ※ DML문장 = COMMIT, ROLLBACK, SAVEPOINT, ROLLBACK TO

 

트랜잭션의 시작 시점

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

 

트랜잭션의 종료 시점

- COMMIT이나 ROLLBACK

- DDL이나 DCL문장의 실행(자동 COMMIT)

- 기계 장애 또는 시스템 충돌(crash)

- DEADLOCK

- 사용자가 정상 종료

 

COMMIT(전체 트랙잰션의 변경사항을 저장)

: COMMIT은 하나의 트랜잭션인 여러 DML(Insert, Update, Delete) 명령어를

 정상적으로 데이터베이스에 반영하겠다는 의미의 명령어이다. 

 즉, 하나의 트랜잭션 과정이 정상적으로 종료하게 된다.

 

COMMIT;

이때, COMMIT명령어를 사용하지 않아도 자동 COMMIT이 되는 경우가 있다. 

 

・자동 COMMIT 되는 경우는 다음과 같다.

- DLL(CREATE, DROP) 및 DCL 명령문을 수행할 때

- 명시적인 COMMIT이나 ROLLBACK 없이 SQL*PLUS를 정상적으로 종료했을 경우

 


트랜잭션 취소는 두 종류가 있다.

1. 작업 전체를 취소하는 [ROLLBACK]

2. 작업 중 특정 부분만 취소하는 [SAVEPOINT]와 [ROLLBACK TO]

 

ROLLBACK(전체 트랙잭션의 변경사항을 취소)

: ROLLBACK은 잘못된 명령이나 잘못된 데이터를 입력하는 등 문제가 발생하였을 때

 하나의 트랜잭션을 취소하는 명령어이다.

 

ROLLBACK;

이 때, ROLLBACK명령어를 사용하지 않아도 자동 ROLLBACK이 되는 경우가 있다. 

 

자동 ROLLBACK 되는 경우는 다음과 같다.

- SQL*PLUS를 비정상 종료했을 경우

- 비정상적인 종료, System Failure

 

SAVEPOINT(부분 취소할 트랜잭션의 특정부분을 지정)

: SAVEPOINT는 하나의 트랜잭션을 작게 분할하여 저장하는 기능이다.

 하나의 트랜잭션에서 여러 개 지정이 가능하다.

 

[SAVEPOINT SAVEPOINT 이름]

 

ROLLBACK TO(지정한 SAVEPOINT까지 트랜잭션의 변경사항을 취소)

: 저장된 SAVEPOINT에 [ROLLBACK TO SAVEPONT명] 문을 이용하여 해당 SAVEPOINT까지 ROLLBACK을 할 수 있다.

 

[ROLLBACK TO SAVEPONT명]

+) 추가설명

・COMMIT 명령어와 ROLLBACK 명령어의 장점

- 데이터의 일관성을 제공한다.

- 데이터를 영구적으로 변경하기 전데이터의 변경사항을 확인할 수 있다.

- 관련된 작업을 논리적으로 그룹화할 수 있다.

- COMMIT, SAVEPOINT, ROLLBACK문장으로 TRANSACTION의 논리를 제어할 수 있다.

 

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

- 데이터 이전의 상태로 복구가 가능

- 현재 사용자SELECT문장으로 DML 작업의 결과를 확인할 수 있다.

- 다른 사용자는 SELECT 문장으로 현재 사용자가 사용한 DML 문장의 결과를 확인할 수 없다.

- 변경된 행LOCK이 설정되어서 다른 사용자가 변경할 수 없다.

 

・COMMIT 이후의 데이터 상태

- 데이터베이스에 데이터를 영구적으로 변경

- 데이터의 이전 상태는 완전히 상실한다.

- 모든 사용자가 결과를 볼 수 있다.

- 변경된 행의 LOCK이 해제되고 다른 사용자가 변경할 수 있다.

- 모든 SAVEPOINT는 제거된다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함