본문 바로가기
Database

[Oracle] BIN$....==$0 형식의 테이블 완전히 삭제하기

by 전봇대파괴자 2021. 1. 28.

 

SQL Plus에서 새롭게 실습할 때면 이전에 있던 테이블들을 모두 삭제하곤 합니다. 

 

예제들에 있는 테이블을 여러 개 생성하다 보면 테이블이 많아져 번거롭기도 하고, 그 편이 더 깔끔하고 작업하기도 좋기 때문입니다. 

 

SELECT*FROM TAB; --로그인한 계정에 존재하는 모든 테이블 확인
DROP TABLE '테이블 이름'; --특정 테이블을 삭제

 

그러나 이제 잘 삭제됐겠지? 하고 다시 SELECT*FROM TAB;을 써봤더니 종종 이상한 경우가 발생합니다.

 

어라....?

저는 먼젓번 실습에서 사용했던 테이블 3개를 모두 삭제했었습니다. 분명 삭제한 테이블들의 이름은 사라졌는데, 저 테이블들은 어디서 온 것일까요? 잘 보면 하나같이 'BIN$~'로 시작해 '==$0'으로 끝나는 형식이라는 것을 알 수 있습니다. 저는 처음에 저게 잘못 생성된 테이블인 줄 알고 여러가지 방법을 시도해 보았습니다.   

 

마음 같아서는 한 방에 저 테이블들을 몽땅 삭제해 주는 코드가 있었으면 좋겠는데, 아쉽게도 오라클에 그런 명령어는 없습니다. 그래도 한 번에 삭제 명령어들을 띄워준다는 코드가 있어 시도를 해보았는데,

 

선택된 레코드가 없다는군요.

분명 테이블은 존재하는데 뭐가 어떻게 된 것일까요. 유령인가?

어쨌거나 저게 제대로 된 테이블이 아니라는 것은 알겠습니다. 

 

직접 삭제도(오라클에서는 사실 그 방법밖에 없긴 합니다만) 시도해봤습니다. 

 

 

 

 

3연타로 옵션이 부적합하다는 메시지를 보고 나니 대략 정신이 혼미해지기 시작했습니다. 

저 이상한 이름의 테이블들이 정상적인 테이블이 아닌 것은 분명하고, 심지어는 저 이름도 진짜 이름이 아니라는 결론이 나옵니다. 생각해 보면 지운 테이블은 3개, 저 이상한 테이블도 3개. 혹시 저것들은 진작 지워졌어야 할 찌꺼기들이 아닐까? 하는 합리적 의심이 듭니다. 그리고 검색을 해보니 예상은 들어맞았습니다. 

 

오라클(10g 이상의 버전부터)에는 휴지통(recyclebin)이라는 것이 존재하는데, DROP(삭제)를 한 테이블들은 바로 지워지는 것이 아니라 이곳으로 들어가게 된다고 하네요(이전 버전에서는 바로 삭제되었다고 합니다.). 저 이상한 이름의 파일들은 테이블이 휴지통에 들어가 있다는 것을 의미하는 것입니다.

 

이 휴지통 안의 테이블들은 언제든 UNDROP 명령어로 복구될 수 있으며, 아래의 상황에 해당되지 않는 한 휴지통에서 사라지지 않습니다. 

 

  • PURGE 명령어로 영구 삭제
  • 휴지통 공간이 부족할 때
  • 휴지통 공간이 확장(extend)될 때

휴지통과 관련된 명령어들은 다음과 같습니다. 

--휴지통의 테이블들 조회
SHOW RECYCLEBIN;

--휴지통의 테이블 복원
FLASHBACK TABLE 테이블 이름 TO BEFORE DROP;

--휴지통 비우기
PURGE RECYCLEBIN;

--휴지통에서 특정 테이블만 삭제
PURGE TABLE 테이블 이름;

--DBA 권한으로 휴지통 내 테이블 전체 삭제
PURGE DBA_RECYCLEBIN;

 

덤으로 휴지통에 테이블을 보내지 않고 바로 삭제하는 명령어는 다음과 같습니다. 

 

--휴지통에 보내지 않고 테이블 완전 삭제
DROP TABLE 테이블 이름 PURGE;

 

 

※ 참고 사이트 

m.blog.naver.com/PostView.nhn?blogId=idtong&logNo=130039065370&proxyReferer=https:%2F%2Fwww.google.com%2F

 

오라클 10g 휴지통(recyclebin) - 조회 및 복구

참조: http://www.orafaq.com/articles/archives/000038.htm오라클 10g부터 '휴지통(recyclebin)'이라는 것...

blog.naver.com

blueseasky.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%9C%B4%EC%A7%80%ED%86%B5-%EA%B8%B0%EB%8A%A5-%EB%AA%85%EB%A0%B9%EC%96%B4

 

오라클 휴지통 기능 명령어

SHOW RECYCLEBIN;                                           : 휴지통 내용보기 FLASHBACK TABLE 테이블명 TO BEFORE DROP;   : 테이블 복원하기 PURGE RECYCLEBIN..

blueseasky.tistory.com