본문 바로가기
ORACLE

Oracle Flashback 기능 완전 정복 | 데이터 실수 복구 방법

by samie 2025. 4. 15.
Oracle Flashback 기능 완전 정복 | 데이터 실수 복구 방법

Oracle Flashback 기능 완벽 가이드

실수로 데이터를 삭제하거나 잘못 수정한 적 있으신가요?
Oracle의 Flashback 기능을 사용하면 과거 시점으로 테이블, 트랜잭션, 데이터베이스 전체를 복원할 수 있습니다.

1. Flashback이란?

Oracle Flashback은 사용자가 실수로 데이터를 삭제하거나 변경했을 때, 과거 시점으로 데이터 또는 객체를 복원할 수 있도록 해주는 Oracle의 고급 기능입니다.

백업 없이도 빠르게 복구가 가능하며, DBA뿐 아니라 일반 사용자도 쉽게 활용할 수 있습니다.

2. Flashback의 종류

기능설명
Flashback Query 과거 데이터를 SELECT로 조회
Flashback Table 테이블 전체를 특정 시점으로 복구
Flashback Drop 삭제된 테이블을 휴지통에서 복구
Flashback Version Query 변경된 이력(버전) 추적
Flashback Transaction Query 트랜잭션 단위로 조회 및 복구
Flashback Database 전체 DB를 특정 시점으로 복구 (RMAN 필요)

3. Flashback 사용을 위한 설정

Flashback을 사용하려면 다음 설정이 선행되어야 합니다.


-- 1. Undo Retention 설정
ALTER SYSTEM SET UNDO_RETENTION = 900;

-- 2. 테이블에 ROWDEPENDENCIES 옵션 적용
CREATE TABLE my_table (
  id NUMBER, name VARCHAR2(100)
) ROWDEPENDENCIES;

-- 3. 테이블 Drop 시 Recycle Bin 확인
SHOW RECYCLEBIN;

4. 실전 예제

✔️ Flashback Query


-- 과거 10분 전 데이터 조회
SELECT * FROM employees AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE);

✔️ Flashback Table


-- employees 테이블을 5분 전으로 복구
FLASHBACK TABLE employees TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '5' MINUTE);

✔️ Flashback Drop


-- DROP TABLE 후에도 복원 가능
DROP TABLE test_table;

-- 복원
FLASHBACK TABLE test_table TO BEFORE DROP;

✔️ Flashback Version Query


SELECT versions_starttime, versions_endtime, salary
FROM employees VERSIONS BETWEEN TIMESTAMP
  SYSTIMESTAMP - INTERVAL '1' HOUR AND SYSTIMESTAMP
WHERE employee_id = 100;

5. Flashback과 백업 복구의 차이

  • 📌 Flashback은 실시간, 빠른 복구 가능
  • 📌 백업 복구는 전체 복원, 시간이 오래 걸림
  • 📌 Flashback은 일부 데이터/테이블 복원에 적합

6. 실무 활용 팁

  • ✅ Flashback 기능은 UNDO 데이터에 의존하므로 UNDO_RETENTION을 충분히 설정하세요.
  • ✅ 중요한 테이블은 DROP 대신 TRUNCATEDISABLE로 관리하세요.
  • ✅ Flashback Table은 ALTER 권한이 필요합니다.
  • ✅ Flashback Drop 기능은 휴지통(RECYCLEBIN)이 활성화되어 있어야 작동합니다.

🔚 마무리

Oracle Flashback 기능은 데이터 복원, 오류 분석, 실수 복구에 있어 매우 강력한 도구입니다.
특히 운영 중 실수로 인한 데이터 손실을 빠르게 복구할 수 있다는 점에서 꼭 숙지해두어야 할 기능입니다.

다음 포스트에서는 Oracle Flashback Database (전체 복구)에 대해 좀 더 심화된 내용을 다루겠습니다.