다른 명령
FLASHBACK DATABASE LEVEL
- 전통적인 백업 방법은 파일을 restore 하고 redo와 Archive File을 이용하여 복구
- Database Level Flashback 은 restore 과정을 생략하고 Flashback log 를 이용하여 복구 하는 것이 차이점
전통적인 복구 VS DATABASE FLASHBACK
REDO,ARCHIVE파일 복구 | DATABASE FLASHBACK 복구 |
---|---|
Redo, archive만 사용하는 불완전 복구 | Database flashback(어느정도 redo도 사용) |
복구 시 백업파일을 복원해야한다. | 복원 불필요 |
복구 후 재차 복구 불가능(resetlog때문에) | 복구 후 재차 복구 가능 |
Redo, archive파일사용 | Flashback log파일사용 |
Database archivelog 모드만 가능 | Archivelog mode 이고 flashback database mode |
주의사항
- flashback log 는 Database snapshot 수준으로 남기므로 많은 용량을 필요로 한다.
- system Tablespace 내의 Table은 Flashback 으로 복구 불가능
- Control file 을 재생성시 Flashback Database 설정 초기화
DATABASE FLASHBACK 전제조건
- flashback log 설정 활성화
- archive log mode
- Flashback Database Mode 설정 활성화
DB 환경 설정
- Database Level 의 Flashback 을 사용하려면 아래와 같은 설정을 선행 해야 한다.
-- db_flashback_retention_target 분 설정 SQL> alter system set db_flashback_retention_target=30 scope=spfile; -- 종료 (pfile 을 사용한다면 종료후 pfile 에 db_flashback_retention_target 을 설정한다.) SQL>SHUTDOWN IMMEDIATE; -- MOUNT 상태로 시작 SQL> startup mount; -- archive log 시작 SQL> alter database archivelog; -- flashback on SQL> alter database flashback on; -- database open SQL> alter database open; -- flashback 상태 조회 select flashback_on from v$database; FLASHBACK_ON ------------------ YES
https://t1.daumcdn.net/cfile/tistory/1977D1394FA32D6C2B
시나리오
-- 1.테이블 생성 SQL> create table t ( no number,name varchar2(10)) tablespace example; Table created. -- 2. 데이터 입력 SQL> begin for i in 1..1000 loop insert into t values ( i , dbms_random.string('A', 9)); end loop; commit; end; / -- 3. Table Truncate SQL> truncate table t; Table truncated. -- 4. 복구 -- sys 계정 로그인 (database shutdown 하기 위해) SQL> conn / as sysdba -- database shutdown SQL> shutdown immediate; -- 마운트 상태에서 복구 SQL> startup mount; -- 시간은 알아서.. SQL>flashback database to timestamp (systimestamp - interval '10' minute); Flashback complete. -- database 를 open 한다. SQL> alter database open resetlogs;