트랜잭션(Transaction)
def: 더 이상 분할할 수 없는 최소 수행 단위(All or Nothing)
한 개 이상의 데이터 조작 명령어(DML)로 이루어진다. 어떤 기능 한 가지를 수행하는 sql문 덩어리이다.
트랜잭션을 제어하기 위해 사용하는 명령어를 TCL(Transaction Control Language)이라고 한다. 트랜잭션은 TCL 명령어를 사용하는 시점에서 끝나며, 새로운 트랜잭션이 시작된다.
ROLLBACK
롤백은 현재 트랜잭션에 포함된 데이터 조작 관련 명령어의 수행을 모두 취소한다.
COMMIT
지금까지 수행한 트랜잭션 명령어를 데이터베이스에 영구히 반영할 때는 커밋한다. 영구히 반영되므로 매우 신중하게 커밋하여야 한다.
롤백과 커밋 모두 사용하면 현재 트랜잭션이 끝나고 새 트랜잭션이 시작된다.
세션(Session)
def: 어떤 활동을 위한 시간이나 기간
오라클 데이터베이스 세션은 데이터베이스 접속을 시작으로, 여러 작업을 수행한 후 접속 종료까지의 전체 기간을 의미한다.
세션 내부에는 하나 이상의 트랜잭션이 존재한다.
읽기 일관성
- 일반적으로 데이터베이스는 여러 곳에서 동시에 접근하여 수많은 세션이 동시에 연결되어 있다. 이 때 특정 세션이 테이블 데이터를 변경 중일 때 그 외 다른 세션은 그 데이터 변경이 확정되기 전에(= 커밋되기 전에, 트랜잭션이 종료되기 전에) 그 내용을 알 필요가 없다. 이렇듯 읽기 일관성이란 데이터를 변경 중인 세션을 제외한 나머지 세션에서는 현재 진행 중인 변경과 무관한 본래 데이터를 보여주는 특성을 의미한다.
LOCK
- 특정 세션에서 조작 중인 데이터는 트랜잭션이 완료(= 커밋, 롤백)되기 전까지는 다른 세션에서 조작할 수 없는 상태가 된다. 이 상태를 LOCK이라고 한다.
데이터 정의어(DDL)
- 데이터 정의어는 객체 생성, 변경, 삭제 관련 기능을 수행한다.
데이터 정의어는 데이터 조작어와 달리 바로 커밋되는 특성이 있으니 주의를 기울여야 한다.
데이터 정의어에는
create
,alter
,drop
,rename
등이 있다.예시
-- CREATE 테이블 생성 CREATE TABLE EMP_DDL_30 AS SELECT * FROM EMP WHERE DEPTNO = 30; --열구조 & 30번 부서인 데이터만 복사해서 생성 --ALTER: 열 추가 및 삭제 등 테이블 구조 변경 ALTER TABLE EMP_ALTER ADD HP VARCHAR2(20); -- HP열 추가 ALTER TABLE EMP_ALTER MODIFY EMPNO NUMBER(5) -- empno열의 열 길이 변경 ALTER TABLE EMP_ALTER RENAME COLUMN HP TO TEL; -- 열이름 변경 --DROP: 특정 열 또는 테이블 삭제 ALTER TABLE EMP_ALTER DROP COLUMN TEL; -- tel이라는 열의 영구 삭제(ddl이므로 자동 커밋) DROP TABLE EMP_ALTER; -- 테이블 영구 삭제 --RENAME: 테이블 이름 변경 RENAME EMP_ALTER TO EMP_RENAME;