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'
'Database' 카테고리의 다른 글
SUBQUERY 종류 in Oracle (1) | 2023.11.08 |
---|---|
CLOB데이터 글자 수 조회하기 in Oracle (0) | 2023.11.08 |
BOOLEAN의 표현 in Oracle (0) | 2023.11.08 |
JOIN할때 ON과 WHERE 중 어디에 조건을 줘야 효과적일까? _Oracle (0) | 2023.11.08 |
ORA-04031 in Oracle Error (0) | 2023.11.08 |