(1) 설명
1)DML(insert, update, delete)문이 실행되어 DBMS에 '저장'되거나, '되돌리기'위해서 실행하는 SQL
(2) 트랜잭션(Transaction)
1) 정의
<1> 분리되어서는 안될 (논리적인) '작업 단위'
2) 시작
<1> DBMS에 처음 접속했을 때
<2> 하나 or 여러개의 DML문을 실행한 후 commit 또는 rollback 한 직후
<3> DDL 이나 DCL 실행된 직후
3) 끝
<1> commit 또는 rollback 실행 직후
<2> DDL 이나 DCL 문이 실행 직후
<3> 세션이 종료 직후
1> 정상
1. exit; 또는 quit;
2. commit 되고 종료
2> 비정상
1. 오른쪽 상단이 X버튼 종료
2. rollback 되고 종료
<4> 해당 세션에서 계정 변경 직후
1> conn system/java1234; ( commit; 된 후 계정이 변경됨 )
<5> DB를 닫은 후
1> 세션1
1. sqlplus scott/tiger
2. insert into dept values(50, 'a', 'b');
2> 세션2
1. sqlplus system/java1234 as sysdba
2. shutdown immediate
3. startup
3> 세션3
1. sqlplus scott/tiger
2. select * from DEPT2 order by DEPTNO;
4) 결과
<1> 세션1 에서의 작업은 rollback 됨
(3) TCL의 종류
1) commit;
DML문을 영구적으로 DBMS에 '반영'하는 SQL
2) rollback;
DML문을 (이전 Transaction 끝분분) DBMS에 '취소'하는 SQL
3) savepoint
<세션1>
ex) insert into dept values(50, 'a1', 'b1');
ex) insert into dept values(60, 'a2', 'b2');
ex) savepoint a;
ex) insert into dept values(70, 'a3', 'b3');
ex) savepoint b;
ex) insert into dept values(80, 'a4', 'b4');
ex) rollback to a;
ex) commit;
<참고> rollback to b; --안됨(이미늦음)
<세션2>
ex) select * from DEPT2; --세션1> rollback to a; 후
ex) select * from DEPT2; --세션1> commit; 후
(4) TCL 관련 특성
1) Read Consistency ( 읽기 일관성 ) : '해당 row'
<1> 어떤 사용자(세션)가 변경중(트랜잰션진행중)인 '행'을 다른 사용자(세션)가 변경할 수 없게하는 현상
1> 세션1 -> update dept set dname='가' where deptno=50; --특정 행에 lock
2> 세션2 -> update dept set dname='나' where deptno=50;
3> 세션1 -> commit; 또는 rollback;
4> 세션2 -> 1 행이 업데이트되었습니다
2) Lock ( 잠금 ) : '해당 table'
<1> 어떤 사용자(세션)가 변경중(트랜잰션진행중)인 '전체행'을 다른 사용자(세션)가 변경할 수 없게하는 현상
1> 세션1 -> delete from dept2; --모든 행에 lock
2> 세션2 -> update dept2 set loc='나' where deptno=50;
3)결론
<1> Read Consistency 나 Lock 해제 방법: 진행중인 Transaction을 종료해야 함
'SQL > Oracle' 카테고리의 다른 글
Oracle 09. DCL ( Data Control Language ) (0) | 2022.04.02 |
---|---|
Oracle 08. DDL ( Data Definition Language ) (0) | 2022.04.02 |
Oracle 06. DML ( Data Manipulation Language ) (0) | 2022.03.31 |
Oracle 05. Join & SubQuery (0) | 2022.03.28 |
Oracle 04. DQL - 함수 ( Function ) (0) | 2022.03.25 |