Oracle 데이터베이스에서 테이블을 실수로 삭제해도 걱정할 필요 없습니다.
🔁 Oracle은 DROP TABLE 명령어로 삭제된 테이블을 리사이클 빈(휴지통)에 보관하며,
간단한 FLASHBACK 명령어만으로 복구할 수 있습니다.
이 글에서는 🔍 테이블 삭제 후 리사이클 빈 확인 방법, 복구 방법, 완전 삭제 방법까지
실무에 바로 적용 가능한 명령어 예제와 함께 정리해 드립니다.
🔹 Oracle에서 테이블을 삭제하면 어떤 일이 벌어질까?
DROP TABLE 테이블명; 명령어를 실행해도
Oracle은 데이터를 즉시 제거하지 않고 휴지통(리사이클 빈)에 보관합니다.
Oracle은 이 기능을 통해 데이터 복구의 마지막 안전장치를 제공합니다.
🔎 1. 삭제된 테이블 확인하기 (리사이클 빈 조회)
SHOW RECYCLEBIN;
또는 더 자세한 정보는 아래 SQL로 조회 가능
SELECT object_name, original_name, type, droptime
FROM user_recyclebin;
💡 object_name은 내부적으로 부여된 이름 (BIN$...)이며, original_name이 실제 테이블명입니다.
🛠️ 2. 삭제된 테이블 복구하기 (FLASHBACK)
FLASHBACK TABLE my_table TO BEFORE DROP;
또는, 내부 이름으로 복구할 경우
FLASHBACK TABLE "BIN$abcd123..." TO BEFORE DROP;
복구된 테이블은 원래 이름 그대로 복원됩니다.
🚫 3. 완전히 삭제하고 싶다면? (PURGE)
① 특정 테이블만 완전 삭제
PURGE TABLE my_table;
② 리사이클 빈 전체 비우기
PURGE RECYCLEBIN;
③ 시스템 전체 리사이클 빈 비우기 (DBA 전용)
PURGE DBA_RECYCLEBIN;
⚙️ 4. 아예 리사이클 빈 기능 끄기 (선택사항)
▫️ 세션 단위 비활성화
ALTER SESSION SET recyclebin = OFF;
▫️ 시스템 전체 비활성화
ALTER SYSTEM SET recyclebin = OFF SCOPE = SPFILE; -- 인스턴스 재시작 필요
💯 5. 리사이클 빈을 거치지 않고 바로 삭제하려면?
DROP TABLE my_table PURGE;
이 명령은 리사이클 빈을 사용하지 않고 즉시 영구 삭제합니다. 복구 불가!
📝 정리 요약
작업 목적 | 명령어 |
테이블 삭제 (리사이클 빈으로 이동) | DROP TABLE my_table; |
삭제 테이블 복구 | FLASHBACK TABLE my_table TO BEFORE DROP; |
삭제 테이블 즉시 제거 | DROP TABLE my_table PURGE; |
리사이클 빈 전체 비우기 | PURGE RECYCLEBIN; |
리사이클 빈 비활성화 | ALTER SESSION SET recyclebin = OFF; |
✅ 마무리
Oracle의 리사이클 빈 기능은 실수로 테이블을 삭제했을 때
데이터를 빠르게 복구할 수 있는 강력한 보호 장치입니다.
FLASHBACK, PURGE, SHOW RECYCLEBIN 명령어를 숙지해두면
실무에서 실수 없는 안정적인 데이터 관리가 가능합니다.