일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 난수
- set
- DB
- driver
- 자바
- Connection
- 예외처리
- where
- java
- InputStream
- 16bit
- JDBC
- array
- select
- 다이얼로그
- transient
- Transaction
- 조회
- Join
- Serializable
- Oracle
- swing
- stream
- 상속
- Reader
- 8bit
- DB연동
- Annotaion
- 오라클
- statement
- Today
- Total
오버플로
[Oracle] transaction / commit / rollback 본문
1. transaction
- 데이터베이스의 작업 단위
- 대상 쿼리 : insert, update, delete만 해당
- transaction 대상 쿼리문이 실행될 때마다 HDD에 기록되면 프로그램의 속도가 느려짐
> Oracle은 속도 향상을 위해서 접속자 세션(memory)에만 정보가 저장됨
* 접속자 세션은 접속자가 비정상 종료를 하면 작업 정보를 저장하지 않고 종료함 > 작업한 내용이 사라짐!
* 접속자 세션은 같은 테이블을 사용하더라도 다른 접속자가 변경한 내용을 적용받지 못 함
- Transaction 완료는 commit 명령으로 처리하고, Transaction 취소는 rollback 명령으로 처리
2. commit
- DCL
- insert, update, delete 쿼리문의 작업을 완료할 때 사용
- 메모리(접속자 세션)에서의 작업을 HDD(파일영역)에 기록하고, 모든 접속자 세션에 변경내역을 통지함
- Oracle은 autocommit을 설정할 수 있음
* autocommit : Transaction 대상 쿼리문이 실행되면 바로 commit 되는 것.
3. rollback
- DCL
- insert, update, delete 쿼리문의 작업을 취소할 때 사용 (DB 작업 취소)
- savepoint와 같이 사용하면 특정 지점까지 작업을 취소할 수 있음
- commit된 데이터는 rollback 될 수 없음 (HDD에 기록되었으면 취소 불가)
- 사용법)
1) 직전 commit 이후의 모든 작업을 취소할 때 : rollback;
2) savepoint와 함께 사용할 때 : rollback to 저장점명;
-> 아래에서 위로 취소되면서 올라감
** savepoint(저장점)
- rollback이 될 위치를 설정하는 명령
- commit 되거나 rollback을 수행하면 savepoint는 사라짐
- 같은 이름의 저장점이 생성되면 이전의 저장점은 사라짐
- transaction 대상 쿼리문 전에 설정함
- 문법) savepoint 저장점명;
rollback to 저장점명;
# 오늘의 코딩 #
- rollback과 savepoint를 사용한 rollback
#test_student table에 savepoint 및 insert를 해봄
savepoint insert_data;
insert into test_student (name, gender, addr, phone_no)
values ('박행복','남','서울시 동대문구','010-2333-2222');
savepoint insert_data2;
insert into test_student (name, gender, addr, phone_no)
values ('황기쁨','여','강원도 강릉시','010-9999-9999');
savepoint insert_data3;
insert into test_student (name, gender, addr, phone_no)
values ('안조조','남','제주도 제주시','010-9999-9933');
# savepoint를 사용한 rollback
- savepoint 2까지 rollback하면 (rollback to insert_data2;) 하기와 같이 insert 작업이 취소됨!
#rollback
- rollback(rollback;)을 하면 이전 commit 부분까지 다 취소됨
'Oracle' 카테고리의 다른 글
[Oracle] delete / truncate / drop (0) | 2021.09.18 |
---|---|
[Oracle] 산술연산자 (0) | 2021.09.16 |
[Oracle] select / alias / update (0) | 2021.09.13 |
[Oracle] create / insert (0) | 2021.09.11 |
[Oracle] Data Type / 주석 (0) | 2021.09.10 |