본문 바로가기
Database

Commit, Rollback, Savepoint

by Lcoding 2023. 11. 8.
반응형

Commit, Rollback, Savepoint 에 대하여 알아봅시다.
기본적인 정의 및 사용법은 아래와 같습니다.


Commit - 현재 상태로 저장(되돌릴수없음).
Rollback - Delete나 Update후 Commit을 안했다면 되돌릴수있음. 가장 최근 Commit 및 Savepoint로 돌아감.
Savepoint - Rollback 할 수 있도록 위치를 정해놓음.

 

 

------------------------------------------------Commit 후 이전 데이터 확인 하는법. --------------------------------------------

디비 작업중 실수로 커밋한 경우에 이전 데이터를 확인하려면, timestamp를 사용할 수 있습니다.


오라클은 UNDO tablespace를 가지고 있는데, Commit이 된 후 부터 일정 시간동안 임시로 테이블을 저장하고 있다. 

얼마나 오래 유지 할 것인가는 Undo Table속성에서 정할 수 있다. 

- 주의사항 : 데이터의 변동이 많은 테이블은 이전 데이터를 확인 할 수 있는 시간이 짧습니다.

시간 단위, day 단위로 확인 가능하며 예시는 아래와 같습니다.

 

만약 커밋 후 15분 전 데이터를 보고 싶다면 아래와 sql쿼리를 날려본다. 
select * from 테이블명 as of timestamp(systimestamp-interval '15' minute);

select * from 테이블명 as of timestamp(systimestamp-interval '1' hour);
- 1시간 전
select * from 테이블명 as of timestamp(systimestamp-interval '2' day);
- 이틀 전

 

 

----------------------------------------------------조회 및 살리기 쿼리----------------------------------------------------

-- 실수로 지운 데이터 조회하기 (10분전 데이터 조회)
SELECT * FROM employees AS OF TIMESTAMP ( SYSTIMESTAMP - INTERVAL '10' MINUTE)  WHERE no = '7'

-- 실수로 지운데이터 살리기
INSERT INTO employees SELECT * FROM employees AS OF TIMESTAMP

( SYSTIMESTAMP - INTERVAL '10' MINUTE) WHERE no = '7'

반응형

# 로딩 화면 동작 코드(Code) 설정하기
loading