C. Oracle
oracle TCL
sfeg
2018. 1. 18. 21:25
TCL => TRANSACTION CONTTOL LANGUAGE
TRANSACTION => 일련의 작업처리를 위한 연관된 DML의 모음 -> ALL[COMMIT] or NOTHING[ROLLBACK]
COMMIT : 작업한 내용을 반영한다.
ROLLBACK : 작업한 내용을 되돌린다.
UNDO SEGMENT
=> 부분적인 위치 표시자(SAVEPOINT)를 남겨 원하는 데이타만큼만 ROLLBACK 할수 있다.
=> 부분적인 위치 표시자(SAVEPOINT)를 남겨 원하는 데이타만큼만 ROLLBACK 할수 있다.
SAVEPOINT는 ANSI표준이 아니다.
SAVEPOINT ㅡ ROLLBACK TO
EX) INSERT INTO DEPT VALUES(1,'A','B');
SAVEPOINT A1;
INSERT INTO DEPT VALUES(2,'B','C');
SAVEPOINT A2;
INSERT INTO DEPT VALUES(3,'C','D');
SAVEPOINT A3;
INSERT INTO DEPT VALUES(4,'D','E');
SAVEPOINT A4;
ROLLBACK TO A3;
자동으로 COMMIT, ROLLBACK하는경우
=> AUTO COMMIT : DDL,DCL, 정상종료시
=> AUTO ROLLBACK : 비정상 종료시
- 무결성
- 동시성 : READ CONSISTENCY(읽기 일관성)
=> 하나의 DML문을 여러 접속실행후 같이 실행시 먼저 실행한결과가 COMMIT 또는 ROLLBACK되어 결과가
명확해지기까지 다른접속에서는 실행이 안된다. 또한 결과가 반영되기전까지 한쪽에서 DML실행한 값을
다른 접속에서는 확인할 수 없다. 원래의 값이 보임. = LOCK(TRANSATION 간의 상호 파괴적인 행위를
막기위한 ORACLE의 보호 메카니즘)
막기위한 ORACLE의 보호 메카니즘)
- LOCK : * TRANSATION 간의 상호 파괴적인 행위를 막기위한 ORACLE의 보호 메카니즘
* 결과값이 반영(COMMIT,ROLLBACK)되기전까지 무한대기한다.
* AUTO
* 최저 level
* row level LOCK (같은 행에 대해서만 LOCK이 걸린다.)
* DML LOCK