우선
RDBMS(Oracle, Tibero 등)는 데이터를 변경할 때 원본 상태를 UNDO 영역에 저장해둠.
이걸 나중에 ROLLBACK 하거나, 다른 트랜잭션에서 과거 상태로 읽을 수 있도록 하기 위해서임
즉 그냥 UNDO = 되돌리기 위한 임시 저장소임.
그 UNDO 공간(버퍼)이 작거나 부족하면
DB가 더 이상 작업을 못함 → ORA-01555 오류
트랜잭션 실패
INSERT/UPDATE/DELETE 중단
락 걸린 채로 죽는 경우도 있음
마이그레이션 도중 중단되면 DB 상태 꼬임 위험
대응 방법

undo 공간 확인하는 명령어: ( 저장용 )
(Oracle)
SELECT
a.tablespace_name,
ROUND(SUM(a.bytes) / 1024 / 1024, 2) AS total_mb,
ROUND(SUM(decode(b.status, 'ACTIVE', b.bytes, 0)) / 1024 / 1024, 2) AS used_mb,
ROUND(SUM(decode(b.status, 'UNEXPIRED', b.bytes, 0)) / 1024 / 1024, 2) AS unexpired_mb,
ROUND(SUM(decode(b.status, 'EXPIRED', b.bytes, 0)) / 1024 / 1024, 2) AS expired_mb
FROM dba_data_files a
JOIN dba_undo_extents b ON a.tablespace_name = b.tablespace_name
GROUP BY a.tablespace_name;
'TIL' 카테고리의 다른 글
| Spring 트랜잭션 전파 레벨 (0) | 2025.05.22 |
|---|---|
| Flutter 앱 아이콘 / 스플래시 이미지 적용법 (0) | 2025.05.21 |
| DB 마이그레이션 적용하는 법 (1) | 2025.05.20 |
| fetch join vs EntityGraph (0) | 2025.05.19 |
| LazyInitializationException (0) | 2025.05.19 |