본문 바로가기
Oracle/백업&복구

Recyclebin사용하여 테이블 복구하기

by 취미툰 2021. 9. 1.
반응형

Drop table 명령어는 DDL 명령어이기 때문에 rollback이 되지 않아 데이터 복구가 다른 방법으로 진행되어야 합니다.

 

Oracle에는 휴지통(recyclebin)라고 불리는 공간이 존재하며 drop table 된 오브젝트는 BIN$~~ 이름으로 된 이름으로 바뀌며 recyclebin 영역으로 넘어갑니다.

 

flashback 기능 중 하나로써 UNDO 영역을 사용하여 복구를 수행하는 방법입니다.

아래의 글에 개념적인 부분이 잘 정리가 되어있어서 주소 첨부합니다.

 

참고 : https://goalker.tistory.com/111

 

Flashback

Flashback 기능은 사용자의 논리적인 오류를 아주 빠르게 복구할 수 있는 방법 Flashback 명령어 3가지 (LEVEL) 방법 1. Row Level Flashback 2. Table Level Flashback 3. Database Level Flashback  오라클버..

goalker.tistory.com

 

 

recyclebin 조회

 

SQL> select name,value from v$PARAMETER where name='recyclebin';

NAME                                                                             VALUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
recyclebin                                                                       on                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

1 rows selected.

 

활성화/비활성화

(시스템레벨)

alter system set recyclebin=on scope=spfile;

 

(세션레벨)

alter session set recyclebin=on;

 

 

복구 명령어

(같은 테이블 이름)

flashback table "BIN$rZ8Ek306SqKJco3915JKQQ==$0" to before drop;

 

(다른 테이블 이름)

 

flashback table "BIN$rZ8Ek306SqKJco3915JKQQ==$0" to before drop rename to pdi_l3_bak;

 

테스트

테이블을 삭제하고 삭제된 것을 확인 후 복구해봅니다.

 

1.테이블 삭제
drop table pdi_l3;


2.recyclebin 테이블에서 확인
SQL> select * from recyclebin


OBJECT_NAME                    ORIGINAL_NAME                    OPERATION TYPE                      TS_NAME                        CREATETIME          DROPTIME            DROPSCN     PARTITION_NAME                   CAN CAN RELATED     BASE_OBJECT PURGE_OBJEC SPACE      
------------------------------ -------------------------------- --------- ------------------------- ------------------------------ ------------------- ------------------- ----------- -------------------------------- --- --- ----------- ----------- ----------- -----------
BIN$Y5EmyxI/SUWgrwJXiPkR1Q==$0 I2_RESULT_TG_CF_BAK              DROP      INDEX                     MEDINDX                        2021-06-30:22:11:55 2021-06-30:22:13:17  1.599e+013                                  NO  YES      307525      307525      307526       25632
BIN$mt8qxP9kSJyHk49a3tdmfw==$0 PK_RESULT_TG_CF_BAK              DROP      INDEX                     MEDINDX                        2021-06-30:22:12:20 2021-06-30:22:13:17  1.599e+013                                  NO  YES      307525      307525      307527       28896
BIN$/jyLY46OTQWFriVH+cXWyQ==$0 RESULT_TG_CF_BAK                 DROP      TABLE                     MEDDATA                        2021-06-30:22:11:00 2021-06-30:22:13:17  1.599e+013                                  YES YES      307525      307525      307525       47520
...생략


3.삭제한 테이블의 BIN$~ 이름 찾은 후 복구(다른테이블 이름으로 복구)
flashback table "BIN$rZ8Ek306SqKJco3915JKQQ==$0" to before drop rename to pdi_l3_bak;


4.기존테이블 생성 후 데이터 밀어넣기
CREATE TABLE PDI_L3(.....);

insert into pdi_l3
select * from pdi_l3_bak;

끝

 

참고 : https://fliedcat.tistory.com/99

 

RECYCLEBIN(휴지통) 관리

관련 뷰 - USER_RECYCLE_BIN : 사용자 자신이 DROP한 오브젝트를 보기위한 뷰, recyclebin이라는 SYNONYM(동의어) 을 가진다 - DBA_RECYCLEBIN : 관리자가 DROP된 모든 오브젝트를 볼수 있다. Recyclebin 오브젝트..

fliedcat.tistory.com

 

 

반응형

댓글