: 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 끝
'Oracle > Oracle - 백업&복구' 카테고리의 다른 글
백업 & 복구 26 - RMAN : Catalog server구성 및 복구 간단 테스트 (6) | 2012.02.21 |
---|---|
백업&복구 25 - Flashback Data Archive (FBDA) (0) | 2012.02.20 |
백업&복구 23 - Flashback : Table Level (0) | 2012.02.20 |
백업&복구 22 - Flashback : Row level (0) | 2012.02.17 |
백업&복구 21 - 최악의상황: 백업파일이나 아카이브 로그에 문제가 있을때 복구하기 (2) | 2012.02.16 |