일단은 프로그래머 나부랭이

Flashback 정리 본문

DBMS

Flashback 정리

하필이면 도대체가 2022. 3. 6. 16:39

DB를 restore 하지 않고, 과거 특정 시점의 data를 조회하는 기술로, backup된 db를 restore하는 것과는 다르다
(flashback이란? : https://www.oracle.com/kr/database/technologies/high-availability/flashback.html)

(flashback transaction, total recall은 보고 있던 책에 예제가 없어서 따로 정리하지 않음)

  • flashback query : 특정 시점의 테이블의 데이터 조회
  • flashback version query : 특정 기간의 테이블의 데이터 버전 조회
  • flashback transaction query : 특정 기간의 트랜잭션에 의한 변경정보 조회
  • flashback table : 특정시점으로 테이블을 되돌림
  • flashback drop : 삭제된 테이블을 원하는 시점으로 복원
  • flashback database : DB를 지정한 시점으로 되돌림 (과거에 생성한 backup db를 restore하는 것과는 다름)

참고로 각 기능은 아래에 정리된 저장소(?) 또는 log의 정보를 기반으로 동작한다. (불친절한 SQL 프로그래밍 921p에서 발췌)

  • undo segment 사용 : flashback query, version query, transaction query, table
    • 때문에 만약 undo segment 공간이 재사용 될 경우, error가 발생할 수 있다. (ora-08180)
    • 이 경우 flashback으로도 해당 시점의 내용을 조회할 수 없게 된다. (다른 방법이 있는지는 찾아보지 않음)
  • recyclebin 사용 : flashback drop
  • flashback log 사용 : flashback database



flashback table 생성 및 사용방법 (flashback query, flashback version query 사용법 정리)

  1. flashback 기능을 사용하기 위해서는 table 생성시 enable row movement를 포함하여 생성해야 한다.
    (ex : create table t1 (col number) enable row movement;)
  2. data를 insert 혹은 delete해준다. (insert 혹은 delete시 commit 잘 해줄것)
  3. 다음의 query 형식으로 조회하며, 아래의 timestamp는 scn 변경하여도 조회 가능.
    • flashback query (as of timestamp 절을 이용)
      ex : select * from [table name]as of timestamp timestamp 'yyyy-mm-dd hh:mi24:ss';
    • flashback version query (versions between timestamp 절을 이용)
      ex : select * from t1 versions between timestamp timestamp 'yyyy-mm-dd hh:mi24:ss' and [timestamp 혹은 maxvalue];


flashback transaction query 조회 방법 (단 dba 권한 필요)
 : select * from flashback_transaction_query;

flashback table 사용 방법
 : flashback table [table name] to timestamp timestamp 'yyyy-mm-dd hh:mi24:ss';

flashback drop 사용 방법
 : flashback table [복원할 table name] to before drop rename to [rename할 table name];
※ 참고 : 복원할 table이 recyclebin에 남아 있는지 확인하는 방법 : select * from user_recyclebin;

flashback database 사용 방법

  1. 관련 옵션 활성화 (dba 권한 필요)
    • shutdown immediate
    • startup mount
    • alter database archivelog;
    • alter database flashback on;
    • alter database open;
  2. 되돌리기
    • shutdown immediate
    • startup mount
    • ex : (DB를 10분전으로 되돌림) flashback database to timestamp (systimestamp - interval '10' minute);

'DBMS' 카테고리의 다른 글

(메모) CUBRID python driver test  (0) 2021.10.11
태블릿 pc에서 DBMS 의 benchmark를 돌려보자  (0) 2021.03.28
MVCC에 관하여 정리  (0) 2021.03.25
MSSQL의 timestamp에 대해서  (0) 2018.07.05
varchar와 nvarchar의 차이  (0) 2018.05.29

Comments