메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

개요

TRUNCATE TABLE은 오라클 데이터베이스에서 테이블의 모든 데이터를 빠르게 삭제하는 DDL(Data Definition Language) 명령어입니다. DELETE 문과 달리 테이블 구조는 유지하면서 데이터만 완전히 제거합니다.

주요 특징

  • 테이블의 모든 행을 즉시 삭제
  • 테이블 구조는 그대로 유지 (컬럼, 인덱스, 제약조건 보존)
  • High Water Mark를 리셋하여 저장 공간 회수
  • 롤백 불가능 (자동 커밋 발생)
  • 트리거가 실행되지 않음

기본 구문

TRUNCATE TABLE [schema.]table_name 
[DROP STORAGE | REUSE STORAGE]
[CASCADE];

옵션 설명

DROP STORAGE

  • 기본값
  • 할당된 저장 공간을 시스템에 반환

REUSE STORAGE

  • 저장 공간을 테이블에 유지
  • 새로운 데이터 삽입 시 재사용

CASCADE

  • 파티션 테이블이나 중첩 테이블에서 사용
  • 관련된 모든 객체의 데이터 삭제

사용 예제

기본 사용법

TRUNCATE TABLE employees;

저장 옵션 지정

TRUNCATE TABLE departments REUSE STORAGE;

파티션 테이블

TRUNCATE TABLE sales PARTITION (sales_q1);

TRUNCATE vs DELETE 비교

기능 TRUNCATE DELETE
실행 속도 매우 빠름 느림
롤백 가능 불가능 가능
저장 공간 즉시 반환 유지
트리거 실행 안함
WHERE 조건 사용 불가 사용 가능

주의사항

  • 외래키 제약조건이 참조하는 테이블은 TRUNCATE 불가
  • 시스템 권한 필요 (일반 사용자는 테이블 소유자여야 함)
  • 백업 필수 - 복구 불가능한 작업
  • 로그 최소화로 인한 빠른 수행

성능 팁

  • 대량 데이터 삭제 시 DELETE 대신 TRUNCATE 사용 권장
  • 파티션 테이블은 개별 파티션 단위로 TRUNCATE 가능
  • 테이블 통계 정보는 삭제 후 재생성 필요

관련 항목