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
'Oracle > 백업&복구' 카테고리의 다른 글
[ASM] OCR backup & restore (0) | 2024.07.18 |
---|---|
[시나리오]CloneDB 생성으로 Drop Table 복구 (0) | 2020.03.24 |
[EXPDP/IMPDP]REMAP_DATA (0) | 2020.02.04 |
DB Open & No Archive Mode상태에서 복구 - Current 상태 (0) | 2020.01.09 |
Redo log 관리 - 리두 로그 그룹 증가 & 멤버 추가 (0) | 2020.01.08 |
댓글