Database Level Flashback
 : DATABASE 전체를 과거의 특정 시점으로 돌린다는 점에서 불완전 복구와 비슷한 개념
 : 불완전 복구에 비해서 속도도 빠르고 복구 방법도 간단해 짐
 


※ 비교
전통적인 복구 방식 : 장애 발생시 백업된 데이터파일을 복원해서 리두로그와 앜이브 로그를 적용시켜 복구

Flashback database 복구 방식 : 장애 난 데이터파일에 Flashback log 라는 것을 바로 적용시켜 복구
                                             필요에 따라 redo log를 사용하기도 함
                                             → 백업 파일을 복원하는 데 시간이 들지 않기 때문에 훨씬 더 빨리 복구 할수 있다.
                                             : 이 방식으로 복구하는 대표적 장애 - drop user / truncate table 장애
 

○ 사용 환경 설정
 
기본적으로

 - 아카이브 로그 모드
 - Flashback Database mode

 이어야 한다.
 

Flashback version Query / transaction Query / Flashback table 명령어 : 별도의 설정이 없이도 10g 버전부터 사용 가능
Flashback database 명령어 : 특별한 설정이 있어야 사용 가능

  
 
환경설정
 
1. 파라미터 파일에 설정

db_recovery_file_dest : 파일 저장 경로
db_recovery_file_dest_size : 공간 크기 (기본값은 2G)
db_flashback_retention_target : 분단위 파라미터. 지정한 시간안에 고장나면 치료할수 있다. 시간을 많이 주면 용량이 커짐


 
 
$ vi /home/oracle/product/10g/inittestdb.ora
db_recovery_file_dest=/home/oracle/flash_recovery_area
db_recovery_file_dest_size=2147483648
db_flashback_retention_target=30
:wq!
 

2. 모드 설정 (아카이브 / Flashback Database mode)
SYS> shutdown immediate;
SYS> startup mount;
 
SYS> alter database archivelog;
SYS> alter database flashback on;
 
SYS> alter database open;
 
SYS> select flashback_on from v$database;
YES로 되어있음
 
 
3. flashback log가 쌓이는 경로 확인
$ cd /home/oracle/flash_recovery_area/TESTDB
$ ls
flashback  onlinelog
$ cd flashback/
$ lSh
~~~~~~~~~~~~~~~~~~~~ ~~~~~.flb  → 이 파일이 flashback log 파일
 
 

※ 참고
9i 까지 : 백업 및 복구에 관련된 파일을 관리자가 수동으로 위치를 지정해서 관리
10g 부터 : 백업 및 복구에 관련된 파일을 한곳에서 관리하는 것을 지원
( = 초기화 파라미터에 DB_RECOVERY_FILE_DEST 라는 파라미터로 지정되는 위치, 용량은 DB_RECOVERY_FILE_DEST_SIZE로 지정)
 
이곳에는
① flashback log file
② Archive redo log file
③ RMAN backup file
등이 저장되며 기본 크기는 2G로 설정되어 있음
 
▶ 위에 언급한 3개의 파일들이 금방가득차게 되어 작은 2G의 용량으로는 DB가 Hang 이 걸리게 된다
     수시로 체크하여 공간관리를 잘해야 함

 
해당 작업을 설정할 때 다른 경로로 변경하여 공간 관리를 할수있다.
Ex. - Archived redo log file을 설정할때
        초기화 파라미터에
        log_archive_dest_1='location=/data/arc1' 등과 같이 설정하여, 기본경로가 아닌 /data/arc1 밑에 저장되게 할 수 있다.
    - RMAN 역시 마찬가지로 채널 설정할때 직접 경로를 지정해 줄 수 있다.


 
 
3. 현재 설정되어있는 DB_RECOVERY_FILE_DEST와 크기조회
SQL> select * from v$recovery_file_dest;
 
 
4. 사용량 조회
SQL> select * from v$flash_recovery_area_usage;
 
 
5. 운영중 위 경로의 크기 변경하기
SQL> alter system set db_recovery_file_dest_size=100m;
 
 
6. db_recovery_file_dest 관련해서 에러가 났을때
 
① 원인과 권장사항 찾기
SQL> select object_type, message_type, message_level, reason, suggested_action from dba_outstanding_alerts;
SQL> select * from v$flash_recovery_area_usage;
 
② 용량 늘리고 상황보기
SQL> alter system set db_recovery_file_dest_size=4G;
SQL> select * from v$recovery_file_dest;
 
 
7. 결론
 : db_recovery_file_dest 경로를 사용한다면 공간 사용량 관리를 잘 해야 한다!!
 
 
 
 
 
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 실습11 시작
실습 11: truncate table 장애 복구하기 (Flashback database 사용)
         - flashback database로 복구하는 대표적 장애 - drop user / truncate table 장애
         : 전제조건 - archive log mode / flashback database 가 on 상태
 
 
1. 테이블 확인 및 장애 발생
SCOTT> select * from tab;
SCOTT> select * from 과자;
row 있음
 
SCOTT> truncate table 과자;
SCOTT> select * from 과자;
row 없음
 
 

※ 참고
flashback table 명령으로 복구해보기
 - 복구안됨. flashback database 외의 다른 명령어로는 복구 안됨을 확인하는 작업
 
SCOTT> flashback table 과자 to timestamp(systimestame - interval '1' minute);
SCOTT> select * from 과자;
데이터 복구 안됨
 
시간을 달리 해서 복구 시도 해 보아도 복구가 안된다.


 
 
2. 복구하기 - flashback database 명령어 수행
SCOTT> flashback database to timestamp (systeimstamp - interval '5' minute);
에러
ORA-01031: insufficient privileges
▶ 권한에러 : DBA 권한을 가지고 있어야 한다!!
 
SCOTT> conn / as sysdba;
SYS> flashback database to timestamp (systeimstamp - interval '5' minute);
에러
ORA-38757: Database must be mounted and not open to FLASHBACK.
▶ MOUNT 상태에서 수행해야 한다!!
 
 
SYS> shutdown imediate;
SYS> startup mount;
SYS> flashback database to timestamp (systeimstamp - interval '5' minute);
SYS> alter database open;
에러
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
▶ Flashback database 명령어는 모든 데이터 파일을 불완전 복구처럼 과거 특정시간으로 돌린다.
   → 데이터파일과 리두로그파일, 컨트롤파일의 SCN정보가 다르게 된다.
   : OPEN시킬때 반드시 resetlogs 옵션을 주어야 한다!!!

 
SYS> alter database open resetlogs;
SYS> select * from scott.과자;
복구안됨 → 시간을 달리해서 다시 복구 시도
 
SYS> shutdown imediate;
SYS> startup mount;
SYS> flashback database to timestamp (systeimstamp - interval '10' minute);
SYS> alter database open resetlogs;
SYS> select * from scott.과자;
복구완료
 
 
3. 정리
 : 앞의 다른 flashback 명령어들 처럼 여러번 반복하여 원하는 데이터를 살려낼 수 있다.
   단, 이렇게 할 경우 데이터베이스 전체가 과거의 특정 시점으로 돌아가기 때문에 데이터가 손실 될 수 있으니 주의해야 한다.
 
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 실습11 끝
Posted by 딩구르
,