ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 데이터 삭제 | TRUNCATE, DROP TABLE [PURGE]
    Data Base_Oracle/SQL 2020. 1. 13. 17:42

    여러가지 데이터 삭제 방법

    TRUNCATE

    DDL 계열 명령어이기 때문에 바로 COMMIT이 돼서
    ROLLBACK으로 데이터를 복구할 수 없음

    § 형식_TRUNCATE

    [ SQL> truncate table 테이블명; ]

    delete / truncate 공통점

    테이블의 구조는 그대로 두고 테이블 내의 데이터 삭제

    delete / truncate 차이점

    DELETETRUNCATE
    DML, ROLLACK으로 복원 가능DDL 계열 명령어, ROLLBACK으로 복원 불가
    테이블 내의 데이터만 바로 삭제테이블을 전부 삭제한 후 구조를 다시 만듬

    ※ 데이터 삭제시에는 truncate보다 delete를 사용하는 편이 안전함

    DROP TABLE

    테이블을 삭제하는 것이기 때문에 데이터도 같이 삭제됨
    DDL 명령어이기 때문에 ROLLBACK으로 복구 불가

    테이블을 recyclebin(휴지통)에 버리는 것과 같음

    항상 백업을 받아두는 것이 안전

    영구삭제 PURGE

    flashback 기술이 적용되지 않음
    ∵ recyclebin을 거치지 않고 삭제됨

    § 형식

    [ SQL> drop table 테이블명 [purge]; ]


    # 예제_DELETE / ROLLBACK

    ① scott계정의 b_emp3 테이블의 구조는 그대로 두고 데이터는 전부 삭제
    [ SQL> delete from b_emp3;
    14 행이 삭제되었습니다.
    select * from b_emp3;
    선택된 레코드가 없습니다.
    desc b_emp3 ]

    이름널?유형
    EMPNO NUMBER(4)
    JOB VARCHAR2(9)
    .........

    ② b_emp3의 데이터를 복구
    [ SQL> rollback;
    롤백이 완료되었습니다.
    select count(*) from b_emp3; ]

    COUNT(*)
    14

    ※ delete는 commit이전에 복구가 가능함

    # 예제_TRUNCATE

    ① scott계정의 b_emp3 테이블 내의 데이터를 truncate를 이용해서 삭제
    [ SQL> truncate table b_emp3;
    테이블이 잘렸습니다.
    select * from b_emp3;
    선택된 레코드가 없습니다.
    desc b_emp3 ]

    이름널?유형
    EMPNO NUMBER(4)
    JOB VARCHAR2(9)
    .........

    ② rollback 후 b_emp3 테이블 확인
    [ SQL> rollback;
    롤백이 완료되었습니다.
    select * from b_emp3;
    선택된 레코드가 없습니다. ]

     

    ※ truncate로 삭제된 데이터는 rollback으로 복구할 수 없음

    # 예제_DROP TABLE PURGE

    ① b_emp3를 영구삭제
    [ SQL> drop table b_emp3 purge;
    테이블이 삭제되었습니다. ]

     

    ② flashback이 되는 지 확인
    [ SQL> flashback table b_emp3 to before drop;
    1행에 오류:
    ORA-38305: 객체가 RECYCLE BIN에 없음 ]

     

    ※ b_emp3가 recyclebin을 거치지 않고 삭제되었기 때문에 발생하는 에러


    여러가지 데이터 삭제 방법에 대해 알아보았습니다.

    delete 이외에는 복구가 까다롭고 버전에 따라 아예 불가능한 경우도 있기 때문에

    데이터 삭제시에는 항상 백업테이블을 만들어 둘 것을 권장드립니다.

     

    댓글

Designed by Tistory.