본문 바로가기
Database

ORACLE 데이터 복구 ( as of timestamp 활용 )

by 모닝위즈 2021. 12. 31.
반응형
-- 1분전 데이터 개수
select count(*) from 테이블명 as of timestamp(systimestamp - interval '1' MINUTE );
-- 1시간전 데이터 개수
select count(*) from 테이블명 as of timestamp(systimestamp - interval '1' HOUR );
-- 1일 이전의 해당 테이블의 데이터 조회 
select * from 테이블명 as of timestamp (SYSTIMESTAMP - INTERVAL '1' DAY);


-- 예를 들어, 현재 189 라는 코드의 데이터가 날아갔다면,
insert into 테이블명
select * from 테이블명 as of timestamp(systimestamp - interval '1' MINUTE ) 
WHERE 코드칼럼='189';

-- 두번째 방법 이 방법은 완전한 되돌리기이므로, 그사이에 새로운 데이터가 나타났다면 
-- 그 시간 사이에 새로운 데이터들이 삭제된다. 
-- 예시, 2분전 데이터로 되돌린다.
FLASHBACK TABLE 테이블명 TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '2' MINUTE);

* 상황에 따라, insert로 복구할지, update로 복구할지, flashback 명령어를 사용할지 선택.
* 이 부분은 ORACLE 설정에서 FlashBack 옵션이 켜져있어야 한다. 
  (9i 버전 이후 사용가능이 가능하다.)

댓글