Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

오버플로

[Oracle] transaction / commit / rollback 본문

Oracle

[Oracle] transaction / commit / rollback

NACO 2021. 9. 14. 21:50

 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
Comments