steadilee
FRACTAL
steadilee
전체 방문자
오늘
어제
  • 분류 전체보기 (47)
    • Knowledge (0)
      • 컴퓨터 (0)
    • Data Analysis (7)
      • 공부 (4)
      • Simple Analysis (0)
      • ML,DL (3)
      • Kaggle (0)
    • Skill (40)
      • SQL 이론 (3)
      • Oracle (18)
      • MySQL (0)
      • Python (5)
      • Linux (2)
      • C,C#,C++ (8)
      • Java (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
steadilee

FRACTAL

Skill/Oracle

Oracle 중급 7 : Flashback

2022. 5. 10. 20:14

예제 99. 데이터 복구 : FLASHBACK QUERY


- commit까지 완료한 삭제작업 에 대해 복구

- 5분전 테이블 상태 보기

 select * 
      from 테이블명
      as of timestamp(systimestamp - interval '5' minute);

- 위의 select문을 서브쿼리로 사용하여 갱신 및 삽입(MERGE, INSERT,...)


cf. systimestamp : 현재날짜 시간 보는 것.

select systimestamp from dual;


- show parameter undo; 에서
  undo_retention 의 시간(초 단위) 까지만 가능
  ( 이 시간은 회사마다 다름)

예제100. 데이터 복구 : FLASHBACK TABLE


- 테이블을 어떤 시간 전 상태로 되돌리기

alter table 테이블명 enable row movement; 
flashback table 테이블명 to timestamp(systimestamp - interval '5' minute) ;

commit;


1. alter table 테이블명 enable row movement;   --> flashback 가능한 상태로 만들기
2. flashback table 테이블명 to timestamp(systimestamp - interval '5' minute) ;
    --> 5분전 상태로 flashback
3. comit;
   --> 새로 insert 한 것이므로 commit 해야함

- 이 또한, undo_retention 시간에 따라 가능한 시간이 제한됨.

 

예제101. FLASHBACK DROP


- drop 하면 휴지통으로 들어감
- drop은 구조도 사라지는 것

select *
	from user_recyclebin
	order by droptime desc;

 

order by droptime desc
    : drop한 시간에 따라 휴지통 볼 수 있음

 

flashback table 테이블명 to before drop;


cf. 휴지통 비우기

purge recyclebin;

 

 

 

예제102. FLASHBACK VERSION QUERY


- 테이블의 변경 history확인
- 이 때, version 업데이트 이력(변경 이력)은 commit이 이루어진 것에 대해만 볼 수 있음.
   (commit이 되어야 version업데이트 됨)
- 과거 어떤시간부터 현재까지 데이터의 변경, 변경유형(UPDATE(U), DELETE(D)), 시간보기

select 컬럼명, versions_starttime, versions_endtime, versions_operation
	from 테이블명
	VERSIONS BETWEEN TIMESTAMP to_timestamp( '22/05/10 15:19:10', 'RRRR-MM-DD HH24:MI:SS')
	AND MAXVALUE
	WHERE 조건
	ORDER BY versions_starttime NULLS FIRST;



- between timestamp에서 종료지점도 설정가능
- maxvalue 는 현재시간 의미
- version_starttime은 초기값이 null로 되어있으므로,
  order by에서 nulls first를 작성하여 순서대로 확인 가능

 



저작자표시 비영리 변경금지 (새창열림)

'Skill > Oracle' 카테고리의 다른 글

Oracle 초급 : 데이터 분석 함수  (0) 2022.05.24
Oracle 중급8 : 데이터 품질 높이기(primary key,unique)  (0) 2022.05.10
Oracle 중급6 : 뷰, 인덱스, 시퀀스  (0) 2022.05.10
Oracle 중급5 : DDL  (0) 2022.05.10
Oracle 중급 4: 계층형 질의문  (0) 2022.05.10
    'Skill/Oracle' 카테고리의 다른 글
    • Oracle 초급 : 데이터 분석 함수
    • Oracle 중급8 : 데이터 품질 높이기(primary key,unique)
    • Oracle 중급6 : 뷰, 인덱스, 시퀀스
    • Oracle 중급5 : DDL
    steadilee
    steadilee

    티스토리툴바