본문 바로가기
DATABASE/ORACLE

[Oracle] Transaction

Transaction





데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기 위해




Transaction

● 데이터베이스 내에서 하나의 그룹으로 처리 되어야 하는 명령문들을 모아놓은 논리적인 작업단위

● 여러단계의 처리를 하나의 처리처럼 다루는 기능

● 여러개의 명령어의 집합이 정상적으로 처리되면 정상종료, 하나의 명령어라도 잘못되면 전체취소





1,2번까지 실행이 잘 되다가, 3번 작업시 소프트웨어가 중단 되거나, 하드웨어가 고장이 발생한다면?

2번까지의 모든 작업을 취소하고 트랜젝션 작업 전 데이터베이스 초기 상태로 돌아가게 된다.



Transaction 특징

● 원자성 : 트랜잭션이 데이터베이스에 모두 반영 되던가, 아니면 전혀 반영되지 않아야 한다는 것이다.

● 일관성 : 트랜잭션의 작업처리 결과가 항상 일관성이 있어야 한다.

● 독립성 : 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 경우에 어느 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없다.

● 지속성 : 트랜잭션이 성공적으로 완료 됐을 경우, 결과는 영구적으로 반영 되어야 한다는 점이다.


Transaction 상태도





COMMIT 


● 모든 작업들을 정상적으로 처리 하겠다고 확정하는 명령어로 처리과정을 DATABASE에 영구저장

● 수행하면, 하나의 트랜잭션 과정을 종료

● 이전 데이터가 완전히 UPDATE 된다





ROLLBACK


● 작업 중 문제가 발생되어 트랜잭션의 처리과정에서 발생한 변경사항을 취소하는 명령어

● 트랜잭션으로 인한 한의 묶음처리가 시작되기 이전의 상태로 되돌린다

● 이전 COMMIT한 곳까지 복구한다







COMMIT & ROLLBACK 장점


● 데이터 무결성이 보장된다.

● 영구적인 변경 전에 데이터의 변경 사항을 확인 할 수 있다.

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



SAVEPOINT

● SAVEPOINT 명령을 사용하여 현재의 트랜잭션을 작게 분한 할 수 있다

● 저장된 SAVEPOINT는 ROLLBACK TO SAVEPOINT 문을 사용하여 표시한 곳 까지 ROLLBACK 할 수 있다

● 여러개의 SQL문의 실행을 수반하는 트랜잭션의 경우, 사용자가 트랜잭션 중간 단계에서 SAVEPOINT를 지정 할 수 있다

● 차후 롤백과 함께 사용해서 현재 트랜잭션 내의 특정 SAVEPOINT까지 롤백 할 수 있다



COMMIT 명령이 내려진 후 다음 COMMIT 명령이 나타날 때까지가 하나의 트랜잭션으로 구성되므로 ②번에서 ④까지가 하나의 트랜잭션이 된다.


이렇게 트랜잭션을 구성 할 때 중간중간에 SAVEPOINT 명령으로 위치를 지정 해놓으면 하나의 트랜잭션 내에세도 ROLLBACK TO 지정, SAVEPOINT 문을 사용하여 표시한 곳 까지 ROLLBACK 할 수 있다.



SAVEPOINT 형식 : SAVEPOINT LABEL_NAME;


SAVEPOINT로 지정 해놓은 특정 위치로 되돌아가기 위한 사용 형식 : ROLLBACK TO LABEL_NAME;

'DATABASE > ORACLE' 카테고리의 다른 글

[Oracle] VIEW  (6) 2018.04.23
[Oracle] 무결성 제약조건  (3) 2018.04.22
[Oracle] SQL DML / DDL  (2) 2018.04.21
[Oracle] SQL 서브쿼리  (2) 2018.04.21
[Oracle] SQL Outer Join / ANSI Join  (1) 2018.04.20