TIL

UNDO 공간부족 오류란

하얀잔디 2025. 5. 20. 16:37

 

우선

 

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