DB

oracle 데이터 복구(TIMESTAMP) 사용 방법

I장군T 2022. 8. 22. 11:49
반응형

oracle을 사용하다보면 삭제한 데이터를 조회하거나 복구해야할 경우가 있다. 

그럴땐 TIMESTAMP를 사용한다. 

 

쿼리>

SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INVERVAL '시간' 조건(날짜,시,분,초) WHERE 조건문;

 

사용 예>

1. 10초전 데이터 조회

    SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INVERVAL '10' SECOND) WHERE 컬럼명 = 'A';

2. 10분전 데이터 조회

    SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INVERVAL '10' MINUTE) WHERE 컬럼명 = 'A';

3. 10시간전 데이터 조회

    SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INVERVAL '10' HOUR) WHERE 컬럼명 = 'A';

4. 하루전 데이터 조회

    SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INVERVAL '1' DAY) WHERE 컬럼명 = 'A';

5. 특정시간 기준 데이터 조회

    SELECT * FROM 테이블명 AS OF TIMESTAMP(TO_DATE('20220822000000', 'YYYYMMDDHH24MISS');

6. 10분전 변경된 데이터 비교

    SELECT * FROM 테이블명 WHERE 컬럼명 = 'A'

    UNION ALL

    SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INVERVAL '10' MINUTE) WHERE 컬럼명 = 'A';

7. 업데이트 방법

    UPDATE 테이블명 a

    SET a.ID = (SELECT b.ID FROM 테이블명  b AS OF TIMESTAMP(SYSTIMESTAMP-INVERVAL '10' MINUTE)

                         WHERE  a.NM = b.NM AND b.NM = '1')

    WHERE a.NM = '1';

 

 

반응형