4.5. 트랜잭션(commit과 rollback)
트랜잭션(TRANSACTION)
- 트랜잭션은 데이터 처리의 한 단위 이다.
- 오라클 서버에서 발생하는 SQL문들이 하나의 논리적인 작업 단위로써 성공하거나 실패하는 일련의 SQL문을 트랙잭션이라 보면 된다.
- 오라클 서버는 트랜잭션을 근거로 데이터의 일관성을 보증 한다.
- 트랜잭션은 데이터를 일관되게 변경하는 DML문장으로 구성된다 (COMMIT, ROLLBACK, 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 : 변경사항 저장
- - ROLLBACK : 변경사항 취소
COMMIT과 ROLLBACK의 장점
- - 데이터의 일관성을 제공 한다.
- - 데이터를 영구적으로 변경하기 전에 데이터 변경을 확인하게 한다.
- - 관련된 작업을 논리적으로 그룹화 할 수 있다.
- - COMMIT, SAVEPOINT, ROLLBACK 문장으로 TRANSACTION의 논리를 제어할 수 있다.
COMMIT이나 ROLLBACK 이전의 데이터 상태
- - 데이터 이전의 상태로 북구가 가능 하다.
- - 현재 사용자는 SELECT문장으로 DML작업의 결과를 확인할 수 있다.
- - 다른 사용자는 SELECT문장으로 현재 사용자 사용한 DML문장의 결과를 확인할 수 없다.
- - 변경된 행은 LOCK이 설정 되어서 다른 사용자가 변경 할 수 없다.
COMMIT 이후의 데이터 상태
- - 데이터베이스에 데이터를 영구적으로 변경
- - 데이터의 이전 상태는 완전히 상실
- - 모든 사용자가 결과를 볼 수 있다.
- - 변경된 행의 LOCK이 해제되고 다른 사용자가 변경할 수 있다.
- - 모든 SAVEPOINT는 제거 된다.
'Database > Oracle SQL' 카테고리의 다른 글
5.3. Datetime Functions (날짜 함수) (0) | 2019.04.17 |
---|---|
5.2. Character Functions (문자형 함수) (0) | 2019.04.17 |
5.1. Numeric Functions (숫자형 함수) (0) | 2019.04.17 |
4.6. Commit과 Rollback 예제 (0) | 2019.04.17 |
4.4.3. CROSS JOIN, INNER JOIN, NATURAL JOIN, USING, ON (0) | 2019.04.17 |
4.4.2. Outer Join (LEFT, RIGHT, FULL OUTER JOIN) (0) | 2019.04.17 |
4.4.1. Equi Join, Non_Equi Join, Self Join (0) | 2019.04.17 |
4.3. 예명(Alias) (0) | 2019.04.17 |