Oracle Flashback
- DBMS의
기능으로써, drop된
테이블, 또는
테이블의
데이터를
특정
시점으로
복구할
수
있다.
① 삭제된 테이블 복구(table drop recyclebin)
- 의도하지 않은 오류로 인해 테이블이 drop된 경우, 아래와 같이 복구가 가능하다.
다만 해당 테이블에 속해 있는 Index 및 Constraint등은 복구가 되지만 이름이 원래 이름으로 돌아오지 않으므로 매뉴얼 하게 수정이 필요하다.
step | 장애 내용 | 처리 방법 |
1 | 테이블 삭제 발생 |
|
2 | 복구 가능여부 확인 | SQL> select * from dba_recyclebin where original_name='<테이블명>'; |
3 | flashback table drop 실행 | flashback table <장애object> to before drop; |
4 | 테이블의 인덱스 및 Constraint를 조사하여 원래 이름으로 변경 | SQL> alter index <Drop된 인덱스 이름> rename to <Original 이름>; SQL> alter table <Drop된 테이블 이름> rename constratin <Drop된 Constraint이름> to <Original 이름>; |
아래는 복구 예제이다.
SQL1 > select index_name from user_indexes where table_name = 'FLASHBACK_TEST';
Index Name ------------------------------ PK_FLASHBACK_TEST IX_FLASHBACK_TEST_01
SQL1 > drop table flashback_test;
SQL1 > desc flashback_Test; ERROR: ORA-04043: object flashback_Test does not exist
SQL1 > select * from dba_recyclebin where original_name = 'FLASHBACK_TEST';
OWNER OBJECT_NAME ORIGINAL_NAME OPERATION TYPE TS_NAME CREATETIME ------------------------------ ------------------------------ -------------------------------- --------- ---------------------- --- ------------------------------ ------------------- DROPTIME DROPSCN PARTITION_NAME CAN CAN RELATED BASE_OBJECT PURGE_OBJECT SPACE ------------------- ---------- -------------------------------- --- --- ---------- ----------- ------------ ---------- DBA01 BIN$HUCzSx+DYoLgRAAWNYRg4A==$0 FLASHBACK_TEST DROP TABLE USERS 2011-12-21 21:19:41 2011-12-21 21:20:30 7.7763E+12 YES YES 1050494 1050494 1050494 512
SQL1 > flashback table FLASHBACK_TEST to before drop; SQL1 > select index_name from user_indexes where table_name = 'FLASHBACK_TEST'; Index Name ------------------------------ BIN$HUCzSx+CYoLgRAAWNYRg4A==$0 BIN$HUCzSx+BYoLgRAAWNYRg4A==$0 SQL1 > alter index "BIN$HUCzSx+CYoLgRAAWNYRg4A==$0" rename to PK_FLASHBACK_TEST; SQL1 > alter index "BIN$HUCzSx+BYoLgRAAWNYRg4A==$0" rename to IX_FLASHBACK_TEST_01; SQL1 > select index_name from user_indexes where table_name = 'FLASHBACK_TEST';
Index Name ------------------------------ PK_FLASHBACK_TEST IX_FLASHBACK_TEST_01 |
② 테이블 시점 복구(flashback table)
- 데이터 조작오류 (update 또는 delete)에 의해 데이터가 논리적으로 손상되었을 경우,과거의 특정시점으로 테이블을 복구할수 있다. Undo retention 파라미터가 보증하는 시간까지만 복구가 가능하며, undo_retention이 보증하는 시간범위를 초과하는 복구의 경우는 incomplete recovery를 수행하여야 한다.
step | 장애 내용 | 처리 방법 |
1 | 복구 상황 발생 |
|
2 | 특정 시점으로 flashback table 실행 | SQL> alter table <테이블명> enable row movement; SQL> flashback table <테이블명> to timestamp to_timestamp (<시간format>); |
아래는 복구 예제이다.
Ex) AAA 테이블을 2014년 03월 11일 11시 20분 시점으로 flash back
SQL> alter table DBM.AAA enable row movement; SQL> flashback table DBM.AAA to timestamp to_timestamp ('2014/03/11 11:21:00','YYYY/MM/DD HH24:MI:SS'); (※ flashback전에 enable한 row movement 내용을 반드시 disable하지 않아도 된다) |
'1. IT Story > DB' 카테고리의 다른 글
Corrupt Data Found During RMAN Backup Troubleshoot (0) | 2015.09.08 |
---|---|
DATABASE 암호화 기술들 (0) | 2015.09.04 |
Oracle oradebug활용 Troubleshoot (0) | 2015.09.04 |
Oracle RAC 11gR2 주요 Command(명령어) (0) | 2015.09.04 |
Oracle RAC 11gR2 Management (0) | 2015.09.04 |
Oracle RAC 11gR2 Failover 구성 (0) | 2015.09.04 |
OCR, VOTE ASM Disk에서 RawDevice로 Disk 변경 TEST (0) | 2015.08.26 |
ODA 기본 OS 상태(OVM환경)에서 Grid & DB Installation (0) | 2015.08.26 |