[Oracle] DB 테이블 삭제하기 & 삭제 테이블 복구하기
다음과 같이 3개의 테이블이 있습니다.
테이블을 삭제할때는
DROP TABLE [table name];
을 사용하면 됩니다.
그런데 다음과 같은 방법으로 삭제를 하다보면, table을 지웠는데도, table에 어떤 값이 있는걸 볼 수 있습니다.
DB테이블을 삭제하다 보면, BIN$ 어쩌구저쩌구 하는 쓰레기 값이 남아버립니다. oracle에서 recycle bin 이라는 쓰레기통을 만들어둬서 그렇습니다.
사실 그냥 내비둬도 상관없지만, 보기에 눈에 거슬리는 건 사실입니다. 이런 테이블이 많아질수록 보기도 거스리구요.
처음부터 이러한 값을 남기지 않고 삭제하는 방법이 있습니다.
DROP [table name] PURGE;
drop방식은 똑같이 하되, 마지막에 purge를 붙여주면 깔끔하게 삭제가 됩니다.
그렇다면 남아있는 쓰레기 값을 제거해보도록 하겠습니다.
PURGE recyclebin;
쓰레기통을 비워주면 남아있던 table에 대한 데이터가 모두 깔끔하게 사라집니다. :)
사실 오라클에서 아무 쓸모 없는 기능을 만들지는 않았을테니, 이 recyclebin은 왜 생긴걸까 하니, 복구기능을 위해서 생성된 것이었습니다.
사실 아무생각없이 지은 테이블명이다보니 보기에 헷갈려 원치 않는것을 지우게 될 수도 있습니다. (물론 이렇게 지으면 안되겠지요...ㅎㅎ)
그럴 때를 대비하여 쓰레기통이라는 기능을 두어 한 차례 복구를 할 수 있도록 지원해주는 것 같네요.
FLASHBACK TABLE [기존 table name] TO BEFORE DROP;
을 사용하게 되면 드랍하기 전의 테이블로 한차례 돌아갈 수 있도록 도와줍니다.
저같이 덤벙대는 사람을 위한 기능인 것 같습니다:)
단, 이미 purge옵션을 통해 삭제하였거나 purge recyclebin을 한 상태라면 쓰레기통에 남아있지 않으니 복구할 수 없습니다.
참고로 삭제시에 constraint 옵션이 있다면 함께 써줘야겠죠 :ㅇ
생긴지 얼마 안 된 컴퓨터에 db를 새로 깔다가 생각나서 적어두었습니다. :) 시험기간이라 그런지 시험공부 빼고 과제 빼고 다 재미있네요 :D
----
2017. 4. 13. 02:22 에 썼던 글 :D