과거의 데이터를 조회하거나 실수로 날린 데이터를 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에서 특정 테이블스페이스안에서 특정 사용자의 객체만 삭제 |
'DB (데이터베이스) > Tibero (티베로)' 카테고리의 다른 글
[TIBERO/ORACLE] 프로시저 작성 예제 (0) | 2022.02.22 |
---|---|
[TIBERO] TIBERO 접속 session 확인 (0) | 2021.06.02 |
[TIBERO] 티베로(Tibero) 인스턴스(instance) 추가하기 (멀티인스턴스) (리눅스) (0) | 2021.04.20 |
[TIBERO] JDBC-5072:Failure converting NUMBER to or from a native type.라는 티베로 오류가 발생할 때 (0) | 2021.04.05 |
[TIBERO] tbexport, tbimport사용방법 (0) | 2021.04.05 |