Row Level Flashback

- 다음과 같이 kim 을 hong 으로 yeon 을 choi 로 update 를 수행 했습니다.

- 이제 hong 의 data 를 원래의 kim 으로 돌려 보겠습니다.

- 이 때 필요한 쿼리가 있는데 Flashback Version Query 입니다. 이 쿼리는 해당 데이터의 과거 변경 이력을 전부 찾아주는 쿼리 입니다. 9i 에서는 Flashback Query 가 지원되었는데 이는 특정 시점의 변경 내역만 알 수 있었습니다.

꼬한 Oracle 10g 부터 Version Query 가 추가 되면서 특정 시점만 조회하던 것보다 많은 구간을 검색할 수 있게 되었습니다.

Flashback Transaction Query 는 변경 사항을 취소시켜 이전 값으로 돌려주는 쿼리 입니다.

 

- 우선 데이터를 복구하기 위해 변경 이력을 확인해 보겠습니다.

- 위 내용은 kim 이 Insert(I) 되었다가 hong 으로 update(U) 되었다는 의미입니다. 이때 위와 같이 변경 건수가 적다면 찾기가 쉬울 수 있으나 여러 번의 변경이 이루어졌다면 시간으로 짐작을 해야 합니다. 이 때 변경 시간 확인은

Scn_to_timestamp() 라는 함수를 이용하여 추적 가능합니다.

 

SQL>select scn_to_timestamp(1156551) from dual;

- 위 내용을 보면 scn 번호 1156551 이 11년 10월 3일 8시 39분 00 초에 발생한 것을 확인할 수 있습니다.

- 이렇게 변경 사항을 찾은 뒤 transaction Query 를 수행하여 원래 데이터로 돌리면 됩니다.

- Flashback version Query (권한 필요 없음)

- Flashback transaction Query (Flashback_transaction_query 라는 뷰를 select 할 수 있는 권한이 필요)

- 권한이 없다면 다음과 같은 오류가 발생

SQL>grant select any transaction to scott;

- 가장 위의 쿼리가 변경해야하는 작업의 쿼리이므로 실행

'Oracle > Backup&Recover' 카테고리의 다른 글

Recovery Catalog 구성  (0) 2011.10.06
Control File Backup (DB Open or DB mount)  (0) 2011.10.05
백업파일이나 아카이브 로그에 문제 있을 때 복구하기  (1) 2011.10.04
SQL Loader  (0) 2011.10.04
DB Link 설정  (0) 2011.09.30

Log Miner

- Redo log file 에 있는 내용을 추출해서 SQL 문장으로 변환해 주는 유틸리티

1. log miner 는 8i 이후 버전에서만 작동

2. 분석 대상 인스턴스와 같은 플랫폼에서 동작하는 같은 캐릭터셋을 사용하는 DB에서 생성된 Redo log file 만 분석

3. 분석 대상 인스턴스와 Redo log 가 생성된 인스턴스는 DB_BLOCK_SIZE 가 동일해야 함

- 만약 다를 경우 Corruption 이 발생했다는 내용이 기록

 

Supplemental Logging

- 데이터에 DML 이 밸생할 경우 redo log 에 추가적인 내용을 기록하여 복구에 도움을 주기에 항시 사용함으로 설정하기를 권장

 

SQL>seleclt supplemental_log_data_min from v$database;

 

SUPPLEMENTAL_LOG

------------------------

NO

 

SQL>alter database add supplemental log data;

Database altered.

 

SQL>select supplemental_log_data_min from v$database;

 

SUPPLEMENTAL_LOG

------------------------

YES

 

- 비활성

SQL>select supplemental

SQL>alter database drop supplemental log data;

SUPPLEMENTAL_LOG

------------------------

NO

 

- 특정 테이블만 적용할 수도 있습니다.

SQL>alter table scott.emp add supplemental log data (all) columns;

Table altered.

 

- 이 기능을 사용할 경우 redo log 의 생셩 양이 많아지기 때문에 아카이브 로그 모드를 사용할 경우 아카이브 경로를 충분하게 주어야 함.

+ Recent posts