Contents
see List작성일 2015. 03. 26.
Oracle 삭제된 테이블 복구하기 (Flashback)
Oracle에서 실수로 DROP한 테이블을 복구하는 방법입니다. Flashback 기능과 RECYCLEBIN을 활용합니다.
1. 휴지통(RECYCLEBIN) 확인
-- 휴지통 내용 조회
SELECT object_name, original_name, type, droptime
FROM recyclebin
ORDER BY droptime DESC;
-- 또는 간단하게
SHOW RECYCLEBIN;2. Flashback Table 복구
-- 원래 이름으로 복구
FLASHBACK TABLE 테이블명 TO BEFORE DROP;
-- 예시
FLASHBACK TABLE TB_ORDER TO BEFORE DROP;
-- 새 이름으로 복구 (동명 테이블 존재 시)
FLASHBACK TABLE TB_ORDER TO BEFORE DROP RENAME TO TB_ORDER_BACKUP;3. 휴지통 이름으로 복구
-- 같은 이름의 테이블이 여러 번 삭제된 경우
SELECT object_name, original_name, droptime
FROM recyclebin
WHERE original_name = "TB_ORDER";
-- 특정 버전 복구
FLASHBACK TABLE "BIN$xxxxx==$0" TO BEFORE DROP;4. 복구 불가능한 경우
-- PURGE로 삭제된 경우 복구 불가
DROP TABLE TB_ORDER PURGE;
-- 휴지통 전체 비우기
PURGE RECYCLEBIN;
-- 특정 테이블만 휴지통에서 삭제
PURGE TABLE TB_ORDER;5. 휴지통 관련 설정
-- 휴지통 활성화 여부 확인
SHOW PARAMETER recyclebin;
-- 휴지통 비활성화 (세션)
ALTER SESSION SET recyclebin = OFF;
-- 휴지통 비활성화 (시스템)
ALTER SYSTEM SET recyclebin = OFF;
-- DBA 휴지통 조회
SELECT * FROM dba_recyclebin;6. Flashback Query (데이터 복구)
-- 특정 시점의 데이터 조회
SELECT * FROM TB_ORDER
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL 30 MINUTE);
-- SCN 기준 조회
SELECT * FROM TB_ORDER AS OF SCN 1234567;
-- 복구 쿼리
INSERT INTO TB_ORDER
SELECT * FROM TB_ORDER
AS OF TIMESTAMP TO_TIMESTAMP("2024-01-15 10:00:00", "YYYY-MM-DD HH24:MI:SS")
WHERE order_id = 1001;7. Flashback 제한사항
| 상황 | Flashback 가능 여부 |
|---|---|
| DROP TABLE (PURGE 없이) | O |
| DROP TABLE PURGE | X |
| TRUNCATE TABLE | X (Flashback Query로 일부 가능) |
| DELETE 문 | O (Flashback Query) |
| 테이블스페이스 삭제 | X |
8. 복구 권한
-- 필요 권한
GRANT FLASHBACK ON 스키마.테이블 TO 사용자;
GRANT FLASHBACK ANY TABLE TO 사용자;
-- DBA가 다른 사용자 테이블 복구 시
FLASHBACK TABLE 스키마.테이블명 TO BEFORE DROP;주의사항
- 테이블스페이스 공간 부족 시 자동 PURGE 될 수 있음
- SYSTEM 테이블스페이스 테이블은 휴지통 미사용
- 복구 후 인덱스, 트리거 등 확인 필요
- 정기 백업이 가장 안전한 복구 방법
database
| No | 작성일 | Title |
|---|---|---|
| 3380 | 2026. 08. 20. | PostgreSQL 느린 조회를 진단하는 방법: EXPLAIN ANALYZE와 복합 인덱스 실전 가이드 |
| 3348 | 2026. 08. 11. | PostgreSQL 잠금 대기 줄이기: 트랜잭션 범위와 lock_timeout 설정 실전 가이드 |
| 3316 | 2026. 08. 03. | PostgreSQL 백업 복구 실전 가이드: pg_dump·pg_restore로 장애 복구 절차 만들기 |
| 3284 | 2026. 07. 26. | PostgreSQL 인덱스가 있는데도 느린 쿼리 해결하기: EXPLAIN ANALYZE와 복합 인덱스 설계 |
| 3254 | 2026. 07. 18. | PostgreSQL 잠금 대기 진단 가이드: pg_stat_activity로 블로킹 쿼리 찾고 장애 줄이기 |
| 3202 | 2026. 07. 09. | PostgreSQL 백업 복구 검증 가이드: pg_dump와 psql로 실제 복원까지 확인하기 |
| 3170 | 2026. 07. 01. | MySQL 느린 쿼리 원인 찾기: EXPLAIN과 복합 인덱스 점검 가이드 |
| 3116 | 2026. 06. 23. | PostgreSQL 트랜잭션 충돌 줄이기: 잠금 순서와 짧은 재시도로 데드락 대응하기 |
| 3058 | 2026. 06. 15. | PostgreSQL JSONB 조회 튜닝: GIN 인덱스와 생성 컬럼으로 느린 검색 줄이기 |
| 2971 | 2026. 06. 07. | MySQL/MariaDB 복합 인덱스 설계: 느린 목록 조회를 줄이는 WHERE·ORDER BY 점검법 |