개발 & 데이터베이스/DB

오라클 실수로 삭제한 데이터 복구하는 방법 (TIMESTAMP)

K.두부 2022. 8. 30. 12:00
반응형

오라클 작업을 하다보면 실수로 데이터를 삭제하거나 수정하는 경우가 생길 수 있습니다. 이런 경우에는 TIMESTAMP를 사용해서 이전의 데이터를 조회하고 복구할 수 있습니다.

 

오라클 9i Release 2부터 Flashback이라는 기능이 생긴 후에 Flashback의 사이즈만큼의 데이터를 보관하고 있습니다.

사용하는 방법은 아래와 같습니다.

SELECT *
  FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' SECOND);

위의 쿼리를 실행하면 10초 전 데이터를 조회할 수 있습니다. 또한 숫자와 SECOND를 변경해서 본인이 원하는 시간대를 조회할 수 있습니다.

 

SECOND
MINUTE
HOUR 시간
DAY

 

특정 시점으로 조회

추상적으로 10초 전, 3일 전을 조회하는 것뿐만아니라 특정 시점을 입력해서 조회할 수도 있습니다.

SELECT *
  FROM 테이블명 AS OF TIMESTAMP(TO_DATE('2022-08-25 11:00:25', 'YYYY-MM-DD HH24:MI:SS'))

 

TIMESTAMP 데이터 생성, 수정하는 방법
-- 삭제된 데이터 INSERT 
INSERT INTO 테이블명
SELECT *
  FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE)

-- 삭제된 데이터 UPDATE
UPDATE 테이블명
   SET 컬럼명 = (SELECT 컬럼명 
                   FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE)
                  WHERE ···)

 

반응형