기술 정보
home
채널 소개
home

DROP TABLE 명령으로 삭제된 테이블 복구 방법

문서 유형
기술 정보
분야
백업/복구
키워드
Recyclebin
테이블 복구
1 more property

개요

Recyclebin을 활용하여 DROP TABLE 명령으로 삭제된 테이블을 복구하는 방법을 안내합니다.
사용자의 실수로 테이블이 삭제되었을 때, 휴지통 기능을 활용하면 긴급 상황에서 테이블을 신속히 복구할 수 있습니다.
예시로 아래와 같이 신속한 복구가 가능합니다.
실수로 “EMP” 테이블을 삭제
SQL> DROP TABLE EMP;
SQL
복사
테이블 조회 시 장애 발생
SQL> SELECT * FROM EMP; -- 에러 발생 TBR-8033: Specified schema object was not found.
SQL
복사
RECYCLEBIN 조회
SQL> SELECT OWNER, OBJECT_NAME, TYPE, TS_NAME, DROPTIME FROM DBA_RECYCLEBIN WHERE ORIGINAL_NAME='T100'; OWNER OBJECT_NAME TYPE TS_NAME DROPTIME ------- ---------------- ------ ---------- -------------------- EDU EDU_TBL285600 TABLE TBS_EDU 2020-09-08:05:28:14
SQL
복사
“EMP” 테이블을 신속히 복구
SQL> FLASHBACK TABLE EMP TO BEFORE DROP; SQL> SELECT * FROM EMP; -- 정상적으로 수행
SQL
복사

방법

테이블 삭제와 복구

테이블 삭제 시, 휴지통 기능이 활성화 되어 있을 경우 다음과 같이 동작합니다.
파라미터 USE_RECYCLEBIN 값이 Y 로 설정되어 있을 경우 RECYCLEBIN 에 오브젝트가 저장됩니다.
테이블을 제거 하지 않고 이름과 상태를 변경합니다. (삭제 전 테이블 이름을 별도 저장합니다.)
테이블, 인덱스, 제약조건의 이름이 시스템에서 부여하는 이름으로 변경됩니다.
테이블스페이스에서 세그먼트가 유지되며, 이름만 바뀝니다.
외래키 제약조건은 제거됩니다.
참고
RECYCLE BIN
Recycle Bin(휴지통)은 Drop 된 테이블들을 삭제 처리 하지 않고 보관함으로써 사용자의 실수로부터 삭제된 테이블을 신속히 복구하기 위한 역할을 수행합니다.
Drop 된 테이블이 Recycle Bin으로 이동될 때, 그것과 연관된 객체와 제약 조건들은 이름이 변경됩니다. (이후에 생성되는 테이블과의 이름이 충돌 되는 것을 방지하기 위해서 입니다.)
Recycyle Bin 자체는 데이터 딕셔너리이며, 사용자는 DBA_RECYCLEBIN 뷰를 통해 Recycle Bin 에 있는 테이블 리스트를 조회 할 수 있습니다.
Recycyle Bin 기능이 활성화 되어 있을 경우, DROP TABLE tableName PURGE; 구문을 통해 휴지통으로 이동하지 않고 완전히 삭제할 수 있습니다.
Drop 된 테이블은 기존 테이블스페이스의 공간을 사용하면서 계속 존재하며, PURGE TABLE tableName; 구문을 통해 휴지통에서 제거할 수 있습니다.
휴지통을 완전히 비울 시 PURGE RECYCLEBIN; 를 수행합니다.

삭제한 테이블 조회

삭제한 테이블은 RECYCLE BIN 에서 다음과 같이 확인 할 수 있습니다.
DBA_RECYCLEBIN 에서 삭제한 테이블을 조회합니다.
DBA_TABLES, DBA_INDEXES 에서는 테이블이 더 이상 조회가 되지 않습니다.
DBA_OBJECTS 에서 시스템에서 부여한 변경된 OBJECT_NAME 으로 조회 됩니다. (STATUS 값은 INVALID) (변경된 이름은 Ownername_tblSeqNum 형식으로 SeqNum 는 계속 sequence 에 의해 증가 됩니다.)
DBA_SEGMENTS 에서 시스템에서 변경된 SEGMENT_NAME 으로 조회 됩니다.

복구 방법

다음 구문으로 복구할 수 있습니다.
FLASHBACK TABLE tableName TO BEFORE DROP;
SQL
복사
예시
FLASHBACK TABLE EDU.T100 TO BEFORE DROP;
SQL
복사
다른 이름으로 복구 할 수 있습니다.
FLASHBACK TABLE tableName TO BEFORE DROP RENAME TO tableName;
SQL
복사
예시
FLASHBACK TABLE EDU.T100 TO BEFORE DROP RENAME TO T101;
SQL
복사
테이블이 복원되면 인덱스, 제약조건 등 관련된 오브젝트들도 같이 복원됩니다.
테이블을 복원하면 테이블의 이름은 이전 상태로 복구되거나 지정한 대로 변경됩니다.
인덱스, 제약조건의 이름은 원래의 이름으로 복구되지 않습니다.
외래키는 복구 되지 않습니다.

복구가 불가능한 경우

다음과 같은 경우에는 USE_RECYCLEBIN 을 Y 로 설정하더라도 RECYCLEBIN 으로 오브젝트가 들어가지 않아 FLASHBACK TABLE 이 불가능합니다.
EMP 테이블을YS 계정의 오브젝트를 DROP 할 경우 DROP 할 경우
S – ALTER MOVE 한 경우 원본 테이블