DB/SQL

[Oracle] 데이터 복구 쿼리(TIMESTAMP)

토킹포테토 2023. 5. 4. 15:35
728x90

* 데이터를 실수로 변경 OR 삭제하고 COMMIT 했을 시, 데이터 복구하는 방법

 

* 기존 데이터 ( SELECT * FROM TEST)

NAME AGE ID
홍길동 26 HONG@TEST.COM

 

기존데이터 이름을 실수로 고길동이라고 변경했다고 가정할 경우 테이블을 조회해보면 아래와 같다.

 

* 변경된 데이터 (SELECT * FROM TEST)

NAME AGE ID
고길동 26 HONG@TEST.COM

 

기존데이터 데이터를 확인하고 싶다면 아래와 같이 쿼리를 날리면된다.

//10분전 NAME=홍길동인 데이터 SELECT
SELECT * 
   FROM test AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '10' MINUTE)    
  WHERE name = '홍길동'

결과

NAME AGE ID
홍길동 26 HONG@TEST.COM

 

이후 바뀐 데이터를 비교하여 다시 UPDATE 하면 복구 완료.

 

특정시점도 가능하다.

 SELECT * 
   FROM test AS OF TIMESTAMP(TO_DATE('2023-05-04 13:10:00', 'YYYY-MM-DD HH24:MI:SS'))    
  WHERE name = '홍길동';

'DB > SQL' 카테고리의 다른 글

[SQL] INDEX 가공  (0) 2023.05.10
[Oracle] SQL SELECT 쿼리 실행 순서  (0) 2023.05.10
[Oracle] 날짜 및 형식 변환(TO_CHAR)  (0) 2023.05.03
[MSSQL]사용자 정의 함수Function 만들기  (0) 2023.04.27
[MSSQL] 권한 있는 테이블 조회  (0) 2023.04.27