Transaction은 논리적인 업무의 작업단위를 의미한다
- SAVEPOINT
- ROLLBACK
- COMMIT
- DDL과 DCL은 auto-commit이 된다.
명령어 | 설명 |
COMMIT | 아직 저장되지 않은 모든 데이터 변경 사항을 데이터베이스에 저장하고 현재의 트랜잭션을 종료 |
SAVEPOINT | 현재의 트랜잭션에 savepoint를 지정 |
ROLLBACK (ROLLBACK TO [savepoint 이름]) |
아직 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 종료 |
1. commit, rollback 이전의 상태
- 단지 버퍼에만 영향을 받았기 때문에 데이터의 이전 상태는 복구될 수 있다
- 현재 사용자는 select 문으로 작업의 결과를 확인할 수 있다
- 다른 사용자는 현재 사용자가 수행한 작업의 결과를 볼 수 없다
- 변경된 행은 Lock이 설정되어서 다른 USER가 변경할 수 없다
이때의 Lock은 Re-entrant Lock으로 재진입 락이다. 원래는 뮤텍스(mutex;mutual exclusive)로 lock(1)과 unlock(0) 상태 두 가지 중 하나만 가질 수 있어 Lock을 가진 객체여도 sync 블록에 다시 들어가지 못 했지만, 재진입 락은 이때의 Lock을 본인이 가지고 있다면 다시 들어갈 수 있게 허용한 것이다.
2. commit 이후의 상태
- 데이터에 대한 변경사항(After Image)은 데이터베이스에 반영된다
- 이전 데이터는 영원히 잃어버리게 된다
- 모든 사용자는 결과를 볼 수 있다
- 관련된 행에 대한 Lock이 풀리고 다른 사용자들이 행을 조작할 수 있게 된다
3. rollback 이후의 상태
- 데이터에 대한 변경사항이 취소된다
- 이전 데이터(Before Image)는 다시 재저장된다
- 관련된 행에 대한 Lock이 풀리고 다른 사용자들이 행을 조작할 수 있게 된다
Dictionary는 데이터베이스에 대한 정보(장애에 대한 해결 정보)를 가지고 있고 DBMS가 자동으로 생성하고 관리한다. 읽기 전용(read-only)으로만 제공되는 뷰와 테이블의 집합이다.
'패스트캠퍼스 백엔드 부트캠프 3기 > database' 카테고리의 다른 글
[database] Advanced SQL - nvl, decode, case, pivot, rollup, cube, rank, 상관 쿼리 (0) | 2025.02.14 |
---|---|
[database] 오라클 코멘트 설정 및 조회 (0) | 2025.02.10 |
[database] 트리거 (Trigger) 생성 오류 해결 및 메시지 출력 (0) | 2025.02.08 |
[database] 데이터베이스 목차 정리 (0) | 2025.02.07 |
[database] Oracle에서 Index Range Scan 확인하기, 쿼리 간 비교 (0) | 2025.02.06 |