반응형
오라클에서 삭제나 수정된 데이터를 복구할 수 있을까? DB 운영을 하다 보면 실수로 쿼리를 잘못 날렸을 때나 현업의 요청에 의해서 과거 데이터를 되살려야 할 때가 있습니다. 이때 사용할 수 있는 오라클의 기능이 있는데 바로 타임스탬프(TIMESTAMP)입니다. 단, 오래된 데이터는 복구가 어려울 수 있으니 최대한 빨리 처리하는 것이 좋습니다.
오라클 9i 부터 Flashback이라는 기능이 생겨서 아주 쉽게 데이터를 복구할 수 있게 되었습니다. 설정해 놓은 Flashback 사이즈만큼의 과거 데이터를 오라클은 갖고 있기 때문에 수정이 자주 이루어지는 테이블은 복구 가능 시점이 짧을 수 있습니다. 사용방법은 아래와 같습니다.
SELECT *
FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '5' MINUTE)
테이블 뒤에 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '5' MINUTE) 구문을 붙여 주면 된다. INTERVAL 뒤에 원하는 시점을 적어주면 됩니다. 위 쿼리를 실행해보면 해당 테이블의 5분전 시점의 데이터가 조회되는 것을 확인할 수 있습니다.
단위는 SECOND, MINUTE, HOUR, DAY로 바꿔서 쓸 수 있습니다. 아래처럼 특정 시점을 명시할 수도 있습니다.
SELECT *
FROM 테이블명 AS OF TIMESTAMP(TO_DATE('2022-06-19 04:10:00', 'YYYY-MM-DD HH24:MI:SS'))
단, INTERVAL을 너무 크게 지정하면 아래와 같은 에러가 발생합니다. 그럴 경우 INTERVAL을 조금씩 줄여가면서 실행해 보시면 됩니다.
반응형
'컴퓨터&프로그래밍' 카테고리의 다른 글
[오라클] Oracle merge into 장단점과 사용법 (0) | 2022.09.15 |
---|---|
[DB] 토드 Toad 단축키 (0) | 2022.06.21 |
[한글] 한글 맞춤법 빨간줄 없애기 (맞춤법 검사 끄기) (0) | 2022.06.20 |
[파이썬] 장고 (Django) 모델 스키마 연동 제외(이미 존재하는 테이블, 뷰 연결) (0) | 2022.06.16 |
[파이썬] 장고 (Django) 모델 테이블 이름 지정 (0) | 2022.06.16 |