반응형
Drop table 명령어는 DDL 명령어이기 때문에 rollback이 되지 않아 데이터 복구가 다른 방법으로 진행되어야 합니다.
Oracle에는 휴지통(recyclebin)라고 불리는 공간이 존재하며 drop table 된 오브젝트는 BIN$~~ 이름으로 된 이름으로 바뀌며 recyclebin 영역으로 넘어갑니다.
flashback 기능 중 하나로써 UNDO 영역을 사용하여 복구를 수행하는 방법입니다.
아래의 글에 개념적인 부분이 잘 정리가 되어있어서 주소 첨부합니다.
참고 : https://goalker.tistory.com/111
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
반응형
'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 |
댓글