Redo,
archive만 사용하는 불완전 복구와, Database flashback의 차이 |
|
Redo, archive만 사용하는 불완전 복구 |
Database flashback(어느정도 redo도 사용) |
복구 시 백업파일을 복원해야한다. |
복원 불필요 |
복구 후 재차 복구 불가능(resetlog때문에) |
복구 후 재채 복구 가능 |
Redo, archive파일사용 |
Flashback
log파일사용 |
Archive 파일을
사용하기 위해서는 Database archivelog 이여야한다. |
사용하기 위해서는 DB가 Archivelog
mode이고 추가로
flashback database mode |
Database flashback은 Table, Row level Flashback과는 다르게 추가로 설정을 해줘야 사용이 가능합니다.!
Default가 ON이 아닌 이유 : Database flashback에 사용되는 log파일을 저장하기 위해서는 FRA(Flash Recovery Area)를 사용해야하는데,
FRA가 꽉차게 되면 DB가 죽어버리기 때문입니다. flashback log파일은 거의 Snapshot수준으로 뜨기때문에 용량이 큽니다.
환경설정 :
db_recovery_file_dest=/home/oracle/flash_recovery_area (FRA설정)
db_recovery_file_dest_size=2G (FRA의 최대size, 10g는 기본 2G, 11g는 4G, 늘리고 싶으면, 수정하시면됩니다.)
db_flashback_retention_target=30 (기본값 1440(분입니다)
NAME VALUE ISSYS_MOD
------------------------------ -------- ---------
db_flashback_retention_target 1440 IMMEDIATE
db_flashback_retention_target 1440 IMMEDIATE
DESCRIPTION : Maximum Flashback Database log retention time in minutes.
SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ NO SQL> alter database flashback on; Database altered. SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES
명령어:
FLASHBACKUP DATABASE TO TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE);
; database level이기때문에 mount상태에서만 수행가능합니다.
; 또한 불완전복구이기 때문에 open시 resetlog로 open해야합니다.(하지만 재차 불완전복구가 가능합니다.)
예제. Truncate 장애 복구
SQL> select flashback_on from v$database; FLASHBACK_ON ------------------ YES SQL> select * from koo.rtest3; NO ---------- 1 2 SQL> truncate table koo.rtest3; << 논리적인 장애발생 Table truncated. SQL> select * from koo.rtest3; no rows selected SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. --------------------------------------------------------------------------- --------------------------------------------------------------------------- SQL> startup mount << MOUNT에서 작업합니다. ORACLE instance started. Total System Global Area 535662592 bytes Fixed Size 1345376 bytes Variable Size 209717408 bytes Database Buffers 318767104 bytes Redo Buffers 5832704 bytes Database mounted. SQL> flashback database to timestamp(systimestamp - interval '10' second); Flashback complete. SQL> alter database open resetlogs; Database altered. SQL> select * from koo.rtest3; << 너무 최근으로 돌려서 자료가 없습니다. 다시 수행합니다. no rows selected SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. --------------------------------------------------------------------------- --------------------------------------------------------------------------- SQL> startup mount ORACLE instance started. Total System Global Area 535662592 bytes Fixed Size 1345376 bytes Variable Size 209717408 bytes Database Buffers 318767104 bytes Redo Buffers 5832704 bytes Database mounted. SQL> flashback database to timestamp(systimestamp - interval '3' minute); << 3분전으로 돌립니다. Flashback complete. SQL> alter database open resetlogs; Database altered. SQL> select * from koo.rtest3; NO ---------- 1 2복구완료!!
----------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
Flashback Data Archive(11g) ; FBDA
Flashback를 사용하지 못하는 상황 : undo segment가 덮어쓰여졌을떄
--> 개선 : undo segment를 덮어쓸때, archivelog와 같이 undo의 자료도 다른 곳에 저장을 합니다.
사용하기 위한 환경설정
1. Flashback history table을 저장할 Tablespace를 생성
2. Flashback Data Archive를 관리할 FBDA관리자 계정생성
3. 관리자계정에 권한할당
4. flashback history table생성
SQL> create tablespace fbda 2 datafile '/app/oracle/oradata/testdb/fbda01.dbf' size 10M autoextend on maxsize 2G; Tablespace created. SQL> create user fbda_admin identified by fbda_admin 2 default tablespace fbda; User created. SQL> grant resource, connect to fbda_admin; Grant succeeded. SQL> grant flashback archive administer to fbda_admin; << FBDA 관리자권합입니다. Grant succeeded. SQL> conn fbda_admin/fbda_admin Connected. SQL> create flashback archive fbda01 tablespace fbda 2 retention 30 day; << Archive 된 Undo데이터를 30일간 보관한다는 의미입니다. Flashback archive created.
Flashback Archive 사용하기
생성된 Flashback archive조회하기
SQL> l 1 select OWNER_NAME, FLASHBACK_ARCHIVE_NAME, RETENTION_IN_DAYS, STATUS 2* from dba_flashback_archive << 해당 dict로 조회 SQL> / OWNER_NAME FLASHBACK_ARCHI RETENTION_IN_DAYS STATUS ------------------------------ --------------- ----------------- ------- FBDA_ADMIN FBDA01 30
* Table을 생성할 때 Flashback archive을 사용하라고 해야합니다.
** 그 이전에 해당 사용자에게 Flashback history table사용권한 부여
SYS> grant flashback archive on fbda01 to scott;
SCOTT> create table test(no number) flashback archive fbda01
이후에는 해당 테이블(scott.test)의 undo데이터가 덮어쓰여지게 되면 archive에 저장을 합니다.
*해당 테이블 flashback archive 사용해제하기
alter table scott.test no flashback archive;
* 어떤 테이블들이 Flashback archive기능을 사용하는지 조회하기
SQL> select * from dba_flashback_archive_tables;
TABLE_NAME OWNER_NAME FLASHBACK_ARCHI ARCHIVE_TABLE_NAME STATUS ---------- ---------- --------------- -------------------- ------------- TEST SYS FBDA01 SYS_FBA_HIST_75992 ENABLED
'Oracle > 백업&복구' 카테고리의 다른 글
Datapump 사용시 주의사항 ; newer version --> older version 자료이관시 (0) | 2012.03.24 |
---|---|
아카이브파일을 찾지못해서 복구못하는 경우 복구하기; suggestion이 뜨지 않는 경우 (0) | 2012.03.10 |
백업&복구 14번째(Flashback) ; Table level (0) | 2012.02.25 |
Flashback Constraint Issue ;Reference Key가 걸린 table 삭제(부모테이블 삭제)후 flashback으로 복구 시 관련 constraint 살펴보기 (0) | 2012.02.21 |
백업&복구 13번째(Flashback) ; Row level Flashback (0) | 2012.02.19 |