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 명령어를 숙지해두면
실무에서 실수 없는 안정적인 데이터 관리가 가능합니다.