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 |