DB (데이터베이스)/Tibero (티베로)

[TIBERO] FLASHBACK 복구

뜽배 2022. 2. 24. 13:20
728x90
반응형

과거의 데이터를 조회하거나 실수로 날린 데이터를 FLASHBACK 기능을 이용해 복구할 수 있다.

 

1. FLASHBACK QUERY

FLASHBACK QUERY 기능은 UNDO TABLESPACE 를 이용하므로 UNDO RETENTION 기간 동안만 데이터를 보장한다.

 

- _TSN_TIME_MAP_SIZE : UNDO_RETENTION 시간 동안 생성되는 TSN_TIME_MAP 개수를 설정하는 파라미터 이다. 기본값 : 1000

(TIP파일 설정 : _TSN_TIME_MAP_SIZE = 1000)

- UNDO_RETENTION : UNDO에 저장되어 있는 데이터 재사용이 가능한 최소 시간을 설정하는 파라미터 이다. 기본값 : 900

(TP 파일 설정 : UNDO_RETENTION = 900)

(ALTER 문 : ALTER SYSTEM SET UNDO_RETENTION = 900;

             : ALTER SESSION SET UNDO_RETENTION = 900;)

 

1-1. TIP 파일 수정

$TB_HOME/config/$TB_SID.tip 파일을 텍스트 편집기로 열어서 수정

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

UNDO_RETENTION  = 900

_TSN_TIME_MAP_SIZE  = 1000

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

위 두 줄을 추가 후 티베로를 종료했다가 다시 올린다

tbdown 

tbboot

 

1-2. TEST

해당 두개의 파라미터가 설정되었다면 'as of timestamp' 를 사용해 과거의 데이터 조회가 가능하다.

 

test > SELECT * FROM TEST as of timestamp to_timestamp(systimestamp - 15/1440);

 

UNDO_RETENTION = 900 이라는 것은 900초 까지 저장한다는 뜻이고 최대 15분전 데이터를 볼 수 있다는 것이다.

 

systimestamp는 현재의 시간을 timestamp 형식으로 나타낸 것이고

1분을 표현하기 위해서는 1 / 60분 / 24시간  -> 이 1/1440 이 된 것이다. 그래서 15분은 15/1440 이 된다.

따라서 15분 전의 데이터를 조회하기 위해서는 systimestamp-15/1440  이 되는 것이다.

 

* as of timestamp 는 delete, update와 같이 DML을 사용해서 실수를 저질렀을 경우 사용이 가능하지만

truncate , drop 과 같이 DDL을 사용해서 데이터를 지울 경우 과거의 데이터를 조회할 수 없다.

 

2. FLASHBACK DROP

사용자의 실수로 TABLE 을 DROP 한 경우 TABLE복구 기능을 제공한다.

- DB_RECYCLE_CACHE_SIZE : RECYCLE BUFFER POOL의 크기를 지정하는 파라미터이다 기본값 : 0 (DEFULAT값이 0이므로 TIP파일에 반드시 설정 후 재 기동한다)

(TIP파일 설정 : DB_RECYCLE_CACHE_SIZE=100)

- USE_RECYCLEBIN : OBJECT를 DROP한 경우 복구 기능을 제공하는 파라미터이다 기본값 : N

(TIP파일 설정 : USE_RECYCLEBIN={Y|N})

(ALTER 문 : ALTER SYSTEM SET USE_RECYCLEBIN = {Y|N}

             : ALTER SESSION SET USE_RECYCLEBIN = {Y|N})

 

2-1. TIP 파일 수정

$TB_HOME/config/$TB_SID.tip 파일을 텍스트 편집기로 열어서 수정

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

DB_RECYCLE_CACHE_SIZE = 100

USE_RECYCLEBIN = Y

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

위 두 줄을 추가 후 티베로를 종료했다가 다시 올린다

tbdown 

tbboot

 

2-2. TEST

SQL > CREATE TABLE TEST(A NUMBER);

SQL > DROP TABLE TEST;

SQL > SELECT * FROM USER_RECYCLEBIN;

 

* FLASHBACK DROP예외사항 (아래의 경우는 복구 FLASHBACK DROP으로 복구 할 수 없다)

- TEMP TABLE을 DROP한 경우

- SYS계정의 오브젝트를 DROP한 경우 (SYS계정으로 다른 스키마의 테이블을 DROP한 경우 포함)

- ALTER MOVE한 경우 원본 테이블

 

3. PURGE

- RECYCLEBIN 뷰에 포함된 스키마 객체를 완전히 제거한다

 

구분 내용
PURGE TABLE <TABLE_NAME> DROP된 TABLE을 삭제
PURGE INDEX <INDEX_NAME> DROP된 INDEX를 삭제
PURGE RECYCLEBIN USER_RECYCLEBIN에 존재하는 자신의 객체 삭제
PURGE DBA_RECYCLEBIN DBA_RECYCLEBIN에 존재하는 모든 객체 삭제
PURGE TABLESPACE <TABLESPACE_NAME> DBA_RECYCLEBIN에서 특정 테이블스페이스의 객체 삭제
PURGE TABLESPACE <TABLESPACE_NAME> USER <USER_NAME> USER절을 지정하면 DBA_RECYCLEBIN에서 특정 테이블스페이스안에서 특정 사용자의 객체만 삭제
728x90
반응형