본문 바로가기
ㄱWORK, ETC/Oracle

PURGE로 테이블 완전 삭제하기(10g이상)

by YuyU유유 2024. 11. 27.
728x90
반응형

10g 이후부터는 MS 의 windows 처럼 휴지통 기능이 있어서 테이블을 drop 시키면
바로 삭제가 되는게 아니고 오라클 전용 휴지통으로 간다고 한다.

물론 이렇게 휴지통 기능이 있음 원상복귀는 쉽겠지만
이거 모르고 데이타가 잔뜩 든 테이블을 drop 시켰다간 서버 용량이 Full 나 버릴 수도 있다.
 
이렇기 때문에 테이블은 purge 명령어로 완전 삭제할 필요가 있다고 한다.
 
만약 삭제할 테이블이 TEST 라고 하면 먼저 테이블에 있는 데이터부터 삭제하자.
 
데이터 삭제하는 것도 delete from TEST; 로 하면 일단 삭제는 된다.
그러나 앞서 말했듯이 휴지통으로 들어갈 뿐이다.
그렇기 때문에 truncate table TEST; 구문으로 완전 삭제하자
 
truncate 와 delete 의 차이점은 Undo 정보를 생성하느냐 마느냐의 문제이다.
즉 drop 은 안정지향적으로 삭제할때 쓰이고 truncate는 그런거 필요없이 완전 삭제할때 쓰인다.
 
DROP TABLE TEST CASCADE CONSTRAINT purge; 이런식으로 깔끔히 처리하자
 
purge 명령어는 휴지통에 가지 않고 바로 삭제하는 구문이다.
마치 windows 의 shift + delete 를 이용해서 데이타를 삭제하는것과 같은 기능이다.
 
구문에 보면 CASCADE CONSTRAINT 란게 있는데 
그중에  CONSTRAINT는  테이블에 대한 제약조건이라고 하는데
테이블에 인덱스와 PK를 설정해줬을때 생성하는 것으로
데이타의 무결성검사에 사용된다고 생각하면 된다.
 
DROP TABLE TEST CASCADE CONSTRAINT purge;
 > TEST 테이블을 삭제하는데 CONSTRAINT 도 같이 함께 휴지통에 들어갈 필요없이 완전 삭제하라는 것
 
깜빡하고 purge 를 사용안하고 테이블을 DROP 시켰다면 아래 구문으로 휴지통을 비우자.
purge recyclebin;
 
혹시나 휴지통에 들어간걸 복원시키고 싶을때가 있다. 이럴땐 아래 구문으로 복원시키자.
FLASHBACK TABLE TEST TO BEFORE DROP;

 

https://blog.naver.com/zinskh/10102725372

 

10g 이상에서 purge로 테이블 완전 삭제하기..

전에 스키마에 테이블 추가 작업을 하다가 테이블 생성 스크립트에 테이블 스페이스를 잡아주지 않아서 재...

blog.naver.com

 

728x90
반응형