반응형
목적
- 휴먼, 어플리케이션 오류로 부터 테이블의 이전 상태로 리스토어
- 테이블이 flashback 될수 있는 과거시점은 undo의 양에 의존적이다
- DDL은 리스토어 될수 없다.
관련뷰
- UNDO_MANAGEMENT : 디폴트 AUTO
- UNDO_RETENTION : UNDO 보관 시간(단위 초, 디폴트 30분 )
SQL> show parameter undo NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 1800 undo_tablespace string UNDOTBS1 SQL> |
Syntax
예 1)이전 상태로 테이블 리스토어
- FLASHBACK TABLE table_name TO TIMESTAMP(systimestamp - interval '10' minute); => 현재시간 기준에서 interval 시간 전으로 복구
- FLASHBACK TABLE table_name TO TIMESTAMP('2019-12-31 23:00:00',''YYYY-MM-DD HH24:MI:SS'); => 지정시간 복구
SQL> select * from t1; AGE ---------- 1 2 3 4 SQL> delete from t1 where age=4 ; 1 행이 삭제되었습니다.. SQL> delete from t1 where age=3 ; 1 행이 삭제되었습니다.. SQL> select * from t1 ; AGE ---------- 1 2 SQL> commit ; 커밋이 완료되었습니다.. SQL> flashback table t1 to timestamp (systimestamp - interval '10' minute) ; flashback table t1 to timestamp (systimestamp - interval '10' minute) * 1행에 오류: ORA-08189: 행 이동이 사용으로 설정되지 않았으므로 테이블을 플래시백을 할 수 없음 SQL> ALTER TABLE t1 ENABLE ROW MOVEMENT ; 테이블이 변경되었습니다.. SQL> flashback table t1 to timestamp (systimestamp - interval '10' minute) ; => 10분전 상태로 복구 플래시백이 완료되었습니다. SQL> select * from t1 ; AGE ---------- 1 2 3 4 SQL> |
예 2) Drop 된 테이블 리스토어
- recyclebin 에서 제거된 테이블은 flashback table로 복구 불가(purge table tble_name)
SQL> drop table t1 ; 테이블이 삭제되었습니다. SQL> select * from recyclebin ; OBJECT_NAME ORIGINAL_NAME OPERATION ------------------------------ -------------------------------- --------- TYPE TS_NAME CREATETIME ------------------------- ------------------------------ ------------------- DROPTIME DROPSCN PARTITION_NAME CAN CAN ------------------- ---------- -------------------------------- --- --- RELATED BASE_OBJECT PURGE_OBJECT SPACE ---------- ----------- ------------ ---------- BIN$mfG7amlqA6fgVAgAJ+VJPA==$0 T1 DROP TABLE USERS 2019-12-16:09:24:14 2019-12-18:10:54:59 1198420 YES YES 74144 74144 74144 8 SQL> FLASHBACK TABLE t1 TO BEFORE DROP ; => DROP 전으로 t1 테이블 복구 플래시백이 완료되었습니다. |
예 3) DROP 된 테이블 리네임(rename) 복구
SQL> drop table t1 ; 테이블이 삭제되었습니다. SQL> FLASHBACK TABLE t1 TO BEFORE DROP RENAME TO t1_1 ; => t1 테이블을 t1_1 이름으로 복구 플래시백이 완료되었습니다. SQL> |
예 3) recyclebin에 동일 이름의 object가 있을 경우 선택 복구
SQL> select object_name, droptime from recyclebin where original_name='T1' ; OBJECT_NAME DROPTIME ------------------------------ ------------------- BIN$mfG7amlsA6fgVAgAJ+VJPA==$0 2019-12-18:11:08:12 BIN$mfG7amltA6fgVAgAJ+VJPA==$0 2019-12-18:11:09:01 SQL> flashback table "BIN$mfG7amlsA6fgVAgAJ+VJPA==$0" TO BEFORE DROP ; " " 부호로 감싸준다 플래시백이 완료되었습니다. SQL> select object_name, droptime from recyclebin where original_name='T1' ; OBJECT_NAME DROPTIME ------------------------------ ------------------- BIN$mfG7amltA6fgVAgAJ+VJPA==$0 2019-12-18:11:09:01 SQL> |
반응형
'DBMS > ORACLE' 카테고리의 다른 글
ORACLE 19C 완전 삭제 (0) | 2019.12.20 |
---|---|
ORACLE 19C 설치 - 리눅스 (10) | 2019.12.19 |
Fast Recovery Area 이란 (0) | 2019.12.16 |
Flashback Database (0) | 2019.12.16 |
RECYCLEBIN(휴지통) 관리 (0) | 2019.12.15 |