[전 수업] rownum로 학사관리 시스템을 조회해 보았다
[본 수업] 트랜잭션을 sqlplus에서 실습해보자
[트랜잭션 Transaction]
-동시에 다수의 작업을 독립적으로 안전하게 처리하기 위한 상호작용 단위
-일 처리 단위
-분할할 수없는 최소단위
-목적: 안전한 거래 보장
[트랜잭션의 특성]
-원자성:트랜잭션은 한꺼번에 완료되거나
한꺼번에 취소 되어야 한다.
-일관성:트랜잭션은 실행 전후 가 같아야 한다.
-고립성:트랜잭션 실행중에 다른 트랜잭션 영향을 받아 않아야 한다.
-지속성:트랜잭션의 결과는 항상 보존 된다.
[TCL명령어]
-commit :거래내역을 확정함
-rollback : 거래 내역을 취소함
-checkpoint : rollback 할 위치를 설정
1. 트랜잭션은 sql에서 테스트 해보자
>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. 데이터를 복수할수 있는 시간 확인하기
--콘솔에서 보기좋게 출력
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분)동안 저장해 둔다는 의미이다