[ TCL ] (Transaction Control Language )
- 트랜잭션 : 분리되어서는 안되는 논리적 작업 단위
- TCL:DML문이 실행되어 DBMS에 저장되거나 되돌리기 위해 실행해야 하는 SQL
1) 트랜잭션의 시작
- DBMS에 처음 접속했을때
- COMMIT 또는 ROLLBACK했을때
- COMMIT 또는 ROLLBACK했을때
2) 트랜잭션의 종료
- COMMIT 또는 ROLLBACK했을때
- DDL(CREATE,DROP,..)등이 실행되었을때
- DB가 종료될때
- DDL(CREATE,DROP,..)등이 실행되었을때
- DB가 종료될때
3) TCL의 종류
- COMMIT : SQL문의 결과를 영구적으로 DB에 반영하는 SQL문
- ROLLBACK : SQL문의 결과를 취소하는 SQL문
- SAVEPOINT : 트랜잭션의 한 지점에 표시하는 임시 저장점
- ROLLBACK : SQL문의 결과를 취소하는 SQL문
- SAVEPOINT : 트랜잭션의 한 지점에 표시하는 임시 저장점
SQL> INSERT INTO DEPT VALUES(60,'하나','대구');
SQL> INSERT INTO DEPT VALUES(61,'둘','대전');
SQL> SAVEPOINT A;
SQL> INSERT INTO DEPT VALUES(62,'셋','부산');
SQL> INSERT INTO DEPT VALUES(63,'넷','서울');
SQL> ROLLBACK TO A; -- A지점 이후만 작업이 취소됨
SQL> INSERT INTO DEPT VALUES(61,'둘','대전');
SQL> SAVEPOINT A;
SQL> INSERT INTO DEPT VALUES(62,'셋','부산');
SQL> INSERT INTO DEPT VALUES(63,'넷','서울');
SQL> ROLLBACK TO A; -- A지점 이후만 작업이 취소됨
4) TCL관련 특성
(1) READ CONSISTENCY(읽기 일관성- 해당 ROW에 대해서)
- 어떤 사용자가 변경중인 행을 다른 사용자가 변경할 수 없게 하는 기술로써 변경중인 사용자에 의해 COMMIT또는 ROLLBACK이 실행된 후 변경되는 특성
(2) LOCK(잠금현상)
- 다른 사용자에 의해 DML문이 실행되어져서 동일한 데이터를 INSERT, UPDATE,DELETE할때 한 쪽 사용자는 LOCK이 걸리는 현상
1> ROW-LEVEL LOCK (행레벨만 LOCK이 걸림)
세션1)
SQL> UPDATE DEPT SET LOC='제주'
2 WHERE DEPTNO=51; -- 하나의 행만 lock이 걸림
SQL> UPDATE DEPT SET LOC='제주'
2 WHERE DEPTNO=51; -- 하나의 행만 lock이 걸림
세션2)
SQL> delete from dept where deptno=52; -- 가능(다른 행이므로 가능!)
2> TABLE-LEVEL LOCK (테이블전체에 LOCK이 걸림)
세션1>
SQL> UPDATE DEPT SET LOC='제주'; -- 테이블전체에 lock이 걸림
SQL> UPDATE DEPT SET LOC='제주'; -- 테이블전체에 lock이 걸림
세션2>
SQL> delete from dept where deptno=53; -- lock이 걸림
'DBMS > 오라클기초' 카테고리의 다른 글
오라클 기초#8(제약조건:constraint) (0) | 2013.01.27 |
---|---|
오라클 기초 #7(table) (0) | 2013.01.27 |
오라클 기초#5(Data Manipulation Language) (0) | 2013.01.27 |
오라클 기초#4 ( JOIN, ROWID, ROWNUM ) (0) | 2013.01.27 |
오라클 기초#3 (subquery) (0) | 2013.01.27 |