-- 휴지통 정보 확인
-- 삭제된 개체 확인
SELECT * FROM RECYCLEBIN;
-- 삭제된 테이블 복원
FLASHBACK TABLE 테이블명 TO BEFORE DROP;
FLASHBACK TABLE "BIN이름" TO BEFORE DROP;

FLASHBACK TABLE test TO BEFORE DROP;
-- 동일한 이름이 두개 이상이면 마지막 테이블 복원
SELECT * FROM tab;

FLASHBACK TABLE emp2 TO BEFORE DROP;
SELECT * FROM emp2;

FLASHBACK TABLE emp2 TO BEFORE DROP; -- 에러. 이미 같은 이름의 테이블이 존재함
-- 이름을 변경해서 복원
FLASHBACK TABLE emp2 TO BEFORE DROP RENAME TO emp22;

SELECT * FROM tab;

Oracle 에서 DROP TABLE 테이블명 으로 테이블을 삭제하고 SELECT * FROM tab; 으로 확인해보면 테이블명에 해당하는 테이블은 사라지고 bin~ 으로 시작하는 항목이 생긴다. 휴지통으로 들어간 것이다.

이렇게 휴지통으로 들어간 테이블을 보는 명령은  SELECT* FROM RECYCLEBIN; 으로 확인할 수 있다.

삭제된 테이블을 복원하려면 FLASHBACK TABLE 테이블명 TO BEFORE DROP; 혹은 FLASHBACK TABLE "BIN이름" TO BEFORE DROP;으로 복원 할 수 있다. 동일한 이름이 두 개 이상이면 마지막에 삭제한 테이블을 복원한다. 그렇기에 같은 이름이었던 것을 또 다시 복원하기 위해서는 FLASH TABLE 테이블명 TO BEFORE DROP RENAME TO 새로운테이블명; 으로 복원해야한다

 

-- 휴지통 비우기
-- 전체 비우기
PURGE RECYCLEBIN;
-- 특정 테이블 비우기
PURGE RECYCLEBIN 비울테이블명;

-- 모든 데이터 삭제. ROLLBACK 불가(자동 COMMIT)
TRUNCATE TABLE emp1; -- 모든 데이터 삭제(구조는 삭제 안됨). 속도 빠름.

BIN~으로 되어있는 것을 삭제하기 위해서는 휴지통 비우기를 통해 아예 없앨 수 있다.PRUGE RECYCLEBIN; 을 통해 비워주거나 특정 테이블을 없애고 싶으면 PURGE RECYCLEBIN 비울테이블명; 을 통해 없애주면 된다. 

 

테이블 안에 있는 모든 데이터를 삭제할 때 TRUNCATE TABLE 테이블명; 을 통해 안에있는 데이터들을 다 삭제할 수 있다. 이 명령어는 자동으로 COMMIT이 되기 때문에 ROLLBACK이 불가하고, 테이블 안에 있는 데이터를 삭제하는 것이기 때문에 구조는 남아 있게 된다.

+ Recent posts