Oracle Flashback 정리 

- Database 편



■ Flashback 이란 무엇인가?

손상된 데이터를 Database 복구할 수 있는 기능입니다.

사용자의 실수로 DB 가 잘못 손상 되고 이를 복구하기가 쉽지가 않지만 

Oracle 9i 와 10g 에서부터 지원하는 Flashback 을 통해 Database 를 비교적 쉽게 

복구할 수 있습니다.


■ Flashback 종류

  • Flashback Database 
  • Flashback Table 
  • Flashback Query
  • Flashback Version Query
  • Flashback Drop 및 Recycle bin


■ Flashback 사용 - SCN 

Flashback은 SCN을 사용하여 SCN 이란 System Change Number 로 
오라클은 특정한 시점의 데이타베이스 상태를 SCN으로 관리합니다. 
어떤 트랜잭션이 commit 되면, SCN은 최근의 SCN 보다 크고 유일한 값이 할당되며
이 값은 그 트랜잭션이 변경시킨 블럭에 반영되고, 기록됩니다.

■ Flashback Database

Flashback Database 를 수행하기 위해서는 3가지가 구성되어야 합니다.
  1. Archive Mode 설정
  2. Flashback Log File - Database recovery 영역에 생성됨
  3. RVWR Background Process

· Flashback Database 유의사항

  • undo retention 까지만 보장하는 것
  • 유저에 의해 논리적 데이터가 손상된 경우 사용할 수 있습니다. 
  • 정확한 목표 시간 또는 SCN이 사용되었는지 확인하려면 읽기 전용 모드로 엽니다. 
  • 갱신을 허용하려면 RESETLOGS 파라미터를 사용합니다. 
  • 콘트롤 파일이 복원되었거나 재생성된 경우,테이블스페이스가 삭제된 경우 ,데이터 파일이 축소(shrink)된 경우 lashback Database를 사용할 수 없습니다. 

· Flashback Database 수행

SQL> shutdown immediate
SQL> startup mount
SQL> alter system set db_flashback_retention_target=2880 scope=both;
SQL> alter database flashback on;
SQL> alter database open;
SQL> select flashback_on from v$database;
SQL> show parameter db_flashback
SQL> create restore point before_hr_emp_trun;
SQL> select * from v$restore_point;
SQL> truncate table hr.emp;
SQL> select * from hr.emp;
SQL> shutdown immediate
SQL> startup mount
SQL> exit
[oracle@ocpdba ~]$ rman target /
RMAN> flashback database to restore point before_hr_emp_trun; -- FLASHBACK DATABASE TO TIMESTAMP(SYSDATE-1/24)
RMAN> sql 'alter database open read only';
RMAN> exit
[oracle@ocpdba ~]$ sqlplus / as sysdba
SQL> select * from hr.emp;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database open resetlogs;


SELECT estimated_flashback_size, flashback_size, oldest_flashback_scn,  oldest_flashback_time 
FROM   V$FLASHBACK_DATABASE_LOG; 
  • ESTIMATED_FLASHBACK_SIZE는 이전에 기록된 Flashback 데이터를 사용하여 현재 Flashback Retention 목표에 부합되도록 Flash Recovery Area에서 Flashback 로그에 대해 필요한 디스크 공간의 예측값을 제공합니다.
  • FLASHBACK_SIZE는 Flashback 데이터의 현재 크기를 바이트 단위로 표시합니다.
  • OLDEST_FLASHBACK_SCN 및 OLDEST_FLASHBACK_TIME은 데이터베이스를 Flashback할 수 있는 대략적으로 가장 낮은 SCN 및 시점을 나타냅니다. V$DATABASE의 CURRENT_SCN은 현재 데이터베이스 SCN 입니다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기