Oracle/백업&복구

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

취미툰 2021. 9. 1. 10:17
반응형

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

 

 

반응형