테이블 목록을 출력했을때 뭔가 이상한 이름의 테이블을 볼 수 있었다.
select * from tab;
BIN$
이라는 이름으로된 테이블이 생성되어있는것을 볼 수 있다. 하지만, 이는 필자가 생성한 테이블이 아니다. 찾아보니 이는, Oracle Database가 10g 버전 이후에 새로 추가한 "Recycle Bin"이라는 기능이다. 이는 DDL(Data Definition Language) 중 DROP
명령어를 사용한 이후에 테이블은 완전히 삭제되는것이 아닌, "Recycle Bin"이라는 논리 컨테이너로 들어가게 된다고 한다.
"Recycle Bin" object를 보기위해서는 아래 명령어를 입력한다
show recyclebin;
"Recycle Bin" 객체는 flashback
명령어를 통해서 복구할 수 있다.
flashback table "BIN$l3eyH/awSDOLmL9FRwScnA==$0" to before drop;
만약에 기존 테이블 명이 아닌 다른 이름으로 복구하고 싶은 경우에는 아래와 같이 rename to
를 덧붙이면 된다.
flashback table "BIN$l3eyH/awSDOLmL9FRwScnA==$0" to before drop rename to (테이블 이름);
"Recycle Bin"객체를 삭제하기 위해서는 purge
명령어를 사용한다. "Recycle Bin" 내 모든 객체를 삭제하려면
purge recyclebin;
만약 특정 "Recycle Bin"객체만 삭제하려면
purge table "(bin객체이름)";
와 같이 작성한다