본문 바로가기
Work/DataBase

[Oracle] 삭제된 테이블 복구

오라클 10g 부터는 윈도우의 휴지통과 같은 Recyclebin이 제공됩니다.

DROP 한 테이블은 Recyclebin에 저장되며 복구가 가능합니다.

 

1. 휴지통에 있는 데이터 조회

SELECT * FROM RECYCLEBIN

- 삭제된 정보가 나오며 ORIGINAL_NAME과 OPERATION을 활용하여 복구가 가능합니다.

 

 

 

2. 테이블 복구하기

FLASHBACK TABLE 테이블명 TO BEFORE DROP

복구할 테이블명에 이름이 아닌 "OBJECT_NAME"을 주어도 가능할것으로 보이나.,

이름으로 복구할 때, 동일테이블명에 대해 여러오브젝트가 휴지통에 있는경우

가장 최근 삭제된 순서로 Flashback(복구) 됩니다.

 

대용량에 많은 테이블을 날렸을떈, 조건문으로 테이블들을 조회하여 CSV로 뽑고

위와같이 현재 테이블을 기록없이 삭제, 해당테이블을 RecyleBin에서 복구하도록 쿼리작성하여

스크립트로 뽑아 한번에 돌려줍니다.

 

복구를 위한 쿼리 생성은 Excel 을 이용하여 생성하는것이 수월합니다.

 

 

 

3. 복구불가 영구 삭제  

DROP TABLE 테이블명 PURGE

해당 쿼리는 휴지통에서 복구하려는 테이블이 이미 존재하는 경우,

복구하기전 휴지통에 들어가지않게 삭제하기 위해 많이 수행되지만, 반드시 주의하여 작업해야 합니다.

기존테이블을 영구삭제 해주셔야 가장 최신의 삭제된 해당 테이블 오브젝트로 복구가 됩니다.

 

 

 

4. 특정 테이블 휴지통에서 제거

-- 휴지통에서 삭제하려는 테이블의 ID (OBJECT_NAME)에 쌍따옴표로 감싸주셔야 합니다.
PURGE TABLE "OBJECT_NAME"

동일테이블에 대해서 DDL문이 여러번 만들어지고 삭제되는 과정이 반복된 상황인 경우,

휴지통에서 불필요한 오브젝트를 제거할때 용이합니다. 

 

5. 휴지통 비우기

PURGE RECYCLEBIN

휴지통 비우기는 가급적 하지않습니다. 영구적으로 복구할 수 없습니다.

DB 용량이 너무부족하고, 자원이 신속히 필요한 경우,

삭제했던 데이터가 필요없을것이라고 확신하는 경우에만 삭제합니다. 

 

 

 

 

+ 복구 후 문제점

테이블 복구시, index 등도 복구가 진행되지만,  기존이름과 다르게 복구가 됩니다.

이점은 확인하고, 재 작업을 진행해주셔야 하는 부분입니다.