--1. Flashback 이란
사용자의 논리적인 오류 (delete, truncate,update 등)를 undo data , flashback logfile 를 사용하여 빠르게 복구해내는 기능
*한계
1) 물리적인 장애 (file 삭제) 에는 효과 없음
2) control file 이 재생성 되면 flashback database 명령어 사용불가 ( scn 초기화 되므로)
3) alter table로 테이블 구조가 변경 되면 (column 변경 등) 데이터 복구불가
--2. Flashback 종류
1) Row Level Flashback
-> 특정 테이블의 특정 row만 flashback
1. 운영 중 잘못된 DML 발생
kim->NEW KIM 으로 잘못 변경한 데이터를 KIM으로 원복시켜야 하는데 commit이 완료 된 상황
*Flashback Version Query과 Flashback Transaction Query
-> Flashback Version Query : 해당 데이터의 과거 변경이력을 찾는 쿼리
Flashback Transaction Query : 변경사항을 취소시켜 이전 값으로 돌려주는 쿼리
2. Flashback Version Query 조회
( FLASHBACK_TEST 의 데이터 변경이력 조회 결과 화면)
-- 원복 되어야 할 데이터 KIM은 SCN 값이 4512639 ~ 4512654 까지만 유효하다는 의미
-- SCN 6512654 부터는 NEW KIM으로 UPDATE 됨.
-- VERSION_ENDSCN 값이 공백인 이유 : 해당 데이터의 변경된 이력이 없기 때문
3. FLASHBACK_TRANSACTION_QUERY 조회
FLASHBACK_TRANSACTION_QUERY 의 결과로, KIM->NEW KIM 변경에 대한 UNDO_SQL이 결과로 출력됨
4. 출력된 UNDO_SQL을 수행 후, 데이터 원복 확인
5. FLASHBACK_TRANSACTION_QUERY가 공백이면??
supplemental logging 활성화

※ Supplemental logging
- disable : redo log에 변경된 칼럼 정보만 기록
- enable : 하나의 칼럼이 변경되더라도 전체 row의 정보를 모두 redo log에 저장
ORACLE 9i R2 버전부터 supplemental logging 기능의 기본값 : disable
이유 : 사용하게 되면 redo log의 양이 커지기 때문에 성능저하 우려
→ 실제 크게 차이 안난다 = 사용하는게 유리함
주의 : 활성화 시키고 난 후부터 생성된 redo lgo 만 분석이 되고 이 기능을 화성화 시키기 이전에 생성된 redo log는 분석 제한있음.
출처: http://dinggur.tistory.com/159 [아무도없는세계]
2) Table Level Flashback
-> ROW LEVEL FLASHBACK이 특정 ROW만 변경하였다면 TABLE LEVEL FLASHBACK 은 특정 테이블 전체의 내용을 변경함
1) SCN으로 DML 에러 복구

2) 시간으로 DML 에러 복구
3) Database Level Flashback
->DB 전체를 과거의 특정 시점으로 돌리는 것으로 불완전 복구와 비슷하나
전통적인 불완전 복구의 백업 파일 복원 과정 없이 flashback logfile 적용만으로 DB를 복구하기 때문에 훨씬 더 빠름
1. Flashback database를 사용하기 위한 사전 준비사항
1.1 flashback on mode 로 변경 필요 (pfile 이용) -> 재기동 필요

1.1 flashback on mode 로 변경 필요 (spfile 이용)
2. 운영 중 truncate 장애 발생
3. flashback database 기능을 사용하기 위해 mount 모드로 전환
4. mount 모드에서 재시도