17.트랜잭션
트랜잭션(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);
댓글남기기