Snapshot too old(ORA-01555) in Oracle

Snapshot too old(ORA-01555) in Oracle

Oracle “Snapshot too old” 오류와 해결 방법 📌 오류 개요 Oracle에서 “Snapshot too old” 오류는 UNDO 영역 부족으로 인해 발생하는 오류입니다.특히 긴 시간 실행되는 쿼리(대량 데이터 조회, 분석 쿼리 등)에서 많이 발생합니다. (쿼리가 오래 수행되는 동안 UNDO영역에 기존 수행중이던 쿼리에 대한 데이터가 삭제됨) 1. “Snapshot too old” 오류 원인 오라클은 트랜잭션의 일관성을 유지하기 위해 UNDO … Read more

비트맵 인덱스(Bitmap Index)

비트맵 인덱스(Bitmap Index)

비트맵 인덱스(Bitmap Index)는 데이터베이스에서 인덱싱을 최적화하기 위해 사용하는 인덱스 기법 중 하나입니다. 비트맵 인덱스는 각 고유한 값에 대해 비트 배열(비트맵)을 생성하여 데이터를 효율적으로 검색할 수 있도록 합니다. 특히 값의 종류(카디널리티, Cardinality)가 적은 경우(예: 성별, 상태값, 부서 코드 등)에 매우 효과적입니다. (OLTP보단 OLAP에서 효과적) 1. 비트맵 인덱스의 동작 방식 비트맵 인덱스는 각 열(column)의 고유한 값(unique value)에 … Read more

버퍼 핀닝(Buffer Pinning)

버퍼 핀닝(Buffer Pinning)

버퍼 핀닝(Buffer Pinning)은 데이터베이스 시스템에서 특정 데이터 페이지를 버퍼 캐시에 고정하는 기술입니다. 즉, 버퍼 캐시에서 특정 페이지가 다른 페이지로 대체되지 않도록 보호하는 것입니다. 🔹 버퍼 핀닝의 개념 🔹 버퍼 핀닝이 필요한 경우 🔹 버퍼 핀 해제 (Unpinning) 🔹 버퍼 핀닝의 장점 ✅ 성능 향상: 자주 사용되는 데이터를 유지하여 디스크 I/O를 최소화.✅ 데이터 일관성 유지: 트랜잭션 … Read more

Oracle FreeList (프리리스트)

Oracle FreeList (프리리스트)

1. FreeList란? FreeList(프리리스트)는 Oracle 데이터베이스에서 새로운 데이터가 삽입될 때 사용할 수 있는 빈 블록 목록입니다.즉, INSERT 작업이 수행될 때, 사용 가능한 공간이 있는 블록을 찾는 역할을 합니다. ✔ FreeList의 역할 2. FreeList 동작 방식 Oracle의 테이블이나 인덱스는 데이터를 저장할 때 블록(Block) 단위로 관리됩니다.새로운 데이터가 삽입될 때, FreeList에서 빈 블록을 먼저 검색하여 데이터를 저장하며, FreeList에 사용 … Read more

클러스터 테이블(Clustered Table)

클러스터 테이블(Clustered Table)

클러스터 테이블(Clustered Table)은 데이터가 물리적으로 클러스터링되어 저장되는 방식으로, 관련 데이터가 동일한 디스크 블록에 가깝게 저장되도록 하는 데이터베이스 테이블 유형입니다. 이를 통해 특정 쿼리 성능을 최적화할 수 있습니다. 1. 클러스터 테이블 개요 클러스터 테이블은 동일한 키 값을 가진 여러 행이 물리적으로 가까운 위치에 저장되도록 구성됩니다. 이는 I/O 성능을 향상시키고 디스크 읽기 비용을 절감하는 데 유용합니다. ✅ … Read more

팬텀 충돌(Phantom Conflict)

팬텀 충돌(Phantom Conflict)

팬텀 충돌(Phantom Conflict, 팬텀 문제, Phantom Read)은 트랜잭션이 동일한 조건으로 여러 번 조회할 때, 다른 트랜잭션이 중간에 데이터를 삽입하거나 삭제하여 결과가 달라지는 현상을 의미합니다. 이는 반복 가능한 읽기(Repeatable Read) 수준에서도 발생할 수 있는 문제이며, Serializable(직렬화) 수준의 격리성을 적용해야 방지할 수 있습니다. ※ 팬텀 충돌의 내용은 DB를 배운 사람이면 모두 알 수 있는 내용일 텐데 용어가 … Read more

IOT(Indexed Organized Table)

IOT(Indexed Organized Table)

Oracle의 IOT(Indexed Organized Table) 테이블은 B-tree 인덱스 구조를 기반으로 데이터를 저장하는 특수한 테이블입니다. 일반 테이블(Heap Organized Table)과는 다르게, 기본 키(Primary Key)를 기반으로 데이터를 정렬하여 저장합니다. 📌 IOT 테이블 특징 📌 IOT 테이블 생성 방법 CREATE TABLE iot_table ( id NUMBER PRIMARY KEY, name VARCHAR2(100), age NUMBER) ORGANIZATION INDEX; 📌 IOT 테이블 성능 튜닝 📌 IOT … Read more

선분 이력 모델 (Slowly Changing Dimension Type 2, SCD Type 2)

선분 이력 모델 (Slowly Changing Dimension Type 2, SCD Type 2)

선분 이력 모델(Temporal Data Model, SCD Type 2)은 데이터가 변경될 때마다 새로운 행을 추가하여 이전 데이터를 보존하면서 변경 이력을 관리하는 데이터 모델입니다. 📌 선분 이력 모델이란? ✅ 주로 사용되는 곳: 1️⃣ 선분 이력 모델의 테이블 구조 ID NAME ADDRESS START_DATE END_DATE IS_CURRENT 1 Alice New York 2023-01-01 2023-06-30 N 2 Alice Los Angeles 2023-07-01 9999-12-31 … Read more

버퍼락 (Buffer Lock, Oracle ver)

버퍼락 (Buffer Lock, Oracle ver)

Oracle의 버퍼락(Buffer Lock) 은 Oracle 데이터베이스에서 데이터 블록(buffer cache) 내의 충돌을 방지하기 위해 사용되는 잠금 메커니즘입니다. 일반적으로, 여러 프로세스가 동일한 블록을 액세스하려 할 때 발생하는 동시성 문제를 해결하기 위해 존재합니다. (Row Lock과 다름) 1. 버퍼락의 개념 참고로 오라클은 데이터를 읽는 최소 단위가 블록 단위입니다. Row한줄을 읽어도 블록단위로 읽어옵니다. (한 블록 내에는 수백개의 Row가 있을 수도 … Read more