새소식

JAVA 교육/Sql

2019/07/30 트랜잭션

  • -

[전 수업]  rownum로 학사관리 시스템을 조회해 보았다

[본 수업] 트랜잭션을 sqlplus에서 실습해보자


[트랜잭션 Transaction]
    -동시에 다수의 작업을 독립적으로 안전하게 처리하기 위한 상호작용 단위
    -일 처리 단위
    -분할할 수없는 최소단위
    -목적: 안전한 거래 보장

[트랜잭션의 특성]
    -원자성:트랜잭션은 한꺼번에 완료되거나
            한꺼번에 취소 되어야 한다.
    -일관성:트랜잭션은 실행 전후 가 같아야 한다.
    -고립성:트랜잭션 실행중에 다른 트랜잭션 영향을 받아 않아야 한다.
    -지속성:트랜잭션의 결과는 항상 보존 된다.

[TCL명령어]
    -commit     :거래내역을 확정함
    -rollback   : 거래 내역을 취소함
    -checkpoint : rollback 할 위치를 설정


1. 트랜잭션은 sql에서 테스트 해보자

  • sqlplus 로그인

>sqlplus java0514/1234 로 로그인

sqlplus java0514/1234

oracle DB가 아닌 sql에서 실습.

 

  • 테이블 생성

부서테이블 생성

create table dep(
    id varchar2(10) primary key
    ,name varchar2(15) not null
    ,location varchar2(50));
dep라는 부서 테이블을 생성.

 

  • 테이블 구조 확인

부서테이블 구조확인

desc dep;
desc는 테이블의 구조를 확인하는 명령어

 

 

  • 행추가

부서테이블 행추가

insert into dep values('10','영업부','서울 강남구');
insert into dep values('20','개발부','부산 동래구');
insert into dep values('30','회계부','인천 계양구');
dep 테이블에 행추가

 

※행추가 한 dep테이블의 행갯수를 확인  rollback명령어 실행후 다시 행갯수 테이블 확인

 

※sqlplus에서 그냥 창닫기 하면 자동 rollback 되므로 주의할것!!

 

3. checkpoint :롤백시점 지정

insert into dep values ('40','영업부','서울 종로구'); 
savepoint a;

롤백지점
4번째 행추가를 한다음 savepoin a 를 설정

 

insert into dep values ('50','개발부','서울 중구'); 
savepoint b;

롤백지점
5번째 행을 추가후 savepoint b 를 설정

 

insert into dep values ('60','관리부','서울 마포구'); 
rollback to a;

롤백 a지점 이후 모두 다 취소
6번째 행 추가후 위에서 save한 a rollback해보자

 

rollback하면 savepoint a 로 백업된다

4. 15분 이내에 dep테이블에서 커밋된 데이터 출력

select * from dep
as of timestamp(systimestamp-interval '15'minute);
현재 15분 안에 내가 한 쿼리문의 작업상태를 볼 수 있다

 

5. 삭제하고 커밋한지 15분안의 데이터를 복구

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

 

6. 데이터를 복수할수 있는 시간 확인하기

show parameter undo;

--콘솔에서 보기좋게 출력
col name for a20;
col type for a10;
col value for a10;

보기좋게 출력하기전 parameter undo
보기 좋게 변경후 parameter undo

 

※위에서 보니응 undo_retention 에서 type이 integer 인 값이 900인 데이터가 있다
이 데이터는 delete하거나 drop한 데이터를 Oracle이 900초(15분)동안 저장해 둔다는 의미이다

  • default 속성값은 900초(15분) 시간을 1500초(25분)으로 늘리려면



    alter system set undo_retention=1500;

    ▲위의 명령어 사용시 900초(15분)인 시간이 1500초(25분)로 변경

'JAVA 교육 > Sql' 카테고리의 다른 글

2019/08/05 프로시저를 이용  (0) 2019.08.05
2019/07/31 CSV변환  (0) 2019.07.31
2019/07/29 rownum  (0) 2019.07.29
2019/07/29 join한 내용을 가지고 문제 풀이  (0) 2019.07.29
2019/07/25 Table Join 테이블 조인  (0) 2019.07.25
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.