데이터베이스 - drop
테이블 삭제하기
테이블 삭제는 drop문을 사용한다. 사용법은 간단하다.
이 때 테이블 제거에 있어서 한 가지 짚고 가도록 하자.
테이블을 제거하고 전체 테이블의 종류를 살펴보겠다.
tab에서 테이블들의 이름을 검색했더니 다음처럼 bin이라는 항목들이 생성되었다.
테이블을 지우니 오히려 더 알 수 없는 테이블 이름이 생성되는 것을 확인하였는데, 이것은 무엇일까?
이 데이터들은 휴지통에 들어있는 삭제된 테이블의 위치 정보이다.
테이블을 지우면 제거하는 것이 아니라 휴지통에 집어넣는다.
한번 동일한 테이블인지 확인해보자. 이를 위해서 해당 주소를 복사하겠다.
참고로 cmd창에서는 블록 지정이 안되기 때문에 오른쪽 버튼을 눌러 표시를 클릭하고 블록을 지정하여 enter키를 누르면 복사가 된다.
이제 복사한 값을 통해 해당 데이터에 접근하겠다.
우리가 삭제했던 테이블이 똑같이 출력되고 있음을 확인할 수 있다.
이번엔 휴지통에 직접 접근해보겠다.
정확히 알 수는 없지만 object_name, operation 등 뭔가에 대한 정보들을 가지고 있다.
한번 이 중 몇개를 검색해보자.
먼저 object_name을 살펴보면, 우리가 위에서 접근했던 알 수없는 주소값이 출력된다. 아마 휴지통에 들어가면서 랜덤하게 이름이 지정되는 듯 하다. original_name을 살펴보면, 우리가 처음 지정해주었던 tml1이라는 테이블명이 출력되고 있다. 마지막으로 operation에서 drop이라고 출력된다.
즉 이 정보들을 조합하면 기존의 tml1은 drop문에 의해 현재 휴지통으로 보내졌음을 알 수 있다.
복구하기
우리가 윈도우 상에서 휴지통에서 파일을 복구하듯이 데이터베이스 서버의 휴지통에서도 테이블을 복구할 수 있지않을까?
이를 위해 flashback 기능을 사용한다. 한번 해당 테이블에 대해서 복구 명령을 수행해보자.
tbl1 테이블에 대해서 drop 이전으로 복구하라는 명령이다.
복구가 잘 되었는지 tab을 통해 select해보자.
휴지통에 들어있던 파일 하나가 사라지고, tbl1이 복구 되었음을 확인할 수 있다.
tbl1을 describe를 통해서 내용을 살펴보면, 기존 데이터가 제대로 복구되었음을 알 수 있다.
휴지통 비우기
우리가 알고 있는 휴지통처럼 테이블 복구가 가능하다면, 휴지통의 내용을 지울 수도 있을 것이다. 다음의 명령어를 실행시켜보자.
휴지통에 있던 내용이 삭제되었는지 tab을 통해서 확인해보자.
휴지통을 거치지 않고 삭제하기
제대로 삭제가 되었는지 확인해보자.
댓글
댓글 쓰기