블로그 이미지
신비마마

태그목록

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Oracle 10g의 Recycle Bin

2009. 5. 11. 16:07 | Posted by 신비마마
Oracle 10g에 들어와서 FLASHBACK TABLE이라는 기능이 생겼는데 기존에 drop table로 엉뚱한 테이블을 날려서 가슴졸인 개발자가 많았나보다(실제로 그런일로 고생하는 사람을 보기도 했다.).

유용한 기능이지만 이런 기능이 있는지 모르는 사람의 경우 table을 drop할때마다 이상한 이름의 테이블이 하나씩 생겨서 당황할 수 도 있을것같다.

table을 drop하면 'BIN$' 로 시작하는 이상한 이름의 테이블이 생기는데 이 테이블을 drop해보면 다음과같은 메시지를 만나게 된다.

ORA-38301: can not perform DDL/DML over objects in Recycle Bin


오라클에 Recycle Bin이 있었나 하고 찾아봤더니 이게 바로 새로생긴 FLASHBACK TABLE이라는 기능이란다.

show recyclebin명령으로 확인할수가 있는데

SQL> show recyclebin
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
MEMBER           BIN$7ibiCGZXF4PgMOabUJ0qBQ==$0 TABLE        2005-01-21:11:48:19
MEMBER           BIN$7hq6upeqF+TgMOabUJ0hlg==$0 TABLE        2005-01-20:21:18:20
PICTURES         BIN$7ibiCGZLF4PgMOabUJ0qBQ==$0 TABLE        2005-01-21:11:48:18

MEMBER테이블이 2번 drop되어있고 PICTURES 테이블이 1번 drop되어 있다. 여기서 PICTURES 테이블을 다시 살리고 싶으면

SQL> FLASHBACK TABLE PICTURES TO BEFORE DROP;
FLASHBACK COMPLETE. 


휴지통을 완전히 비우고 싶으면

SQL> purge recyclebin; 

Recyclebin purged.


그리고 다음과 같이하면 휴지통에 가지 않고 바로 삭제된다.

SQL> drop table PICTURES purge;