최대 1 분 소요

트랜잭션(TRANSACTION)

분리되어서는 안되는 논리적인 작업단위

데이터베이스 내에서 한T꺼번에 수행되어야 할 일련의 연산들

트랜잭션은 한꺼번에 완료되거나 한꺼번에 취소되어야 한다 - 원자성


TCL (TRANSACTION CONTROL LANGUAGE)

COMMINT:insert,update,delete 명령어의 실행 결과를 영구적으로 데이터베이스에 반영하는 명령

ROLLBACK:insert,update,delete명령어의 실행 결과를 취소하는 명령

SAVEPIONT:트랜잭션의 임시 저장점


 

  • 테이블 생성하기
create table dep(
  id varchar2(10),
  name varchar2(20)
  loc varchar2(20)
); 
insert into dep values('10','영업팀','서울');
savepoint a;
insert into dep values('20','홍보팀','부산');
savepoint b;

 

3개의 행을 삭제하기

delete from dep;

 

rollback 실행

rollback to a;
ID	NAME	LOC
10	영업팀	서울

 

rollback to b;
ID	NAME	LOC
10	영업팀	서울
20	홍보팀	부산

 

실수로 COMMIT 한경우

UNDO_RETENTION:COMMIT 이후 지정된 시간까지는 임시로 저장된 데이터로 복귀 할 수 있다(기본값은 900초-15분)

기본적으로 커밋을 한 후에 15분내에는 데이터를 복귀 할 수 있다

 

UNDO_RETENTION: 기본값 확인하기:SHOW PARAMETER UNDO;

900초를 1500초(25분)으로 늘리기

ALTER SYSTEM SET UNDO_RETENTION = 1500;

 

COMMIT 이후의 데이터 확인하기

select * from member as of timestamp(systimestamp)-interval'3' minute);

systimestamp(현재시간)-interval’3’ minute - 3분전 이전 시점

복구 하기

insert into member (select * from member as of timestamp(systimestamp)-interval'3' minute);

카테고리:

업데이트:

댓글남기기