컴공생의 다이어리
[Oracle] 오라클 실수로 삭제 후 커밋한 데이터 복구 - AS OF TIMESTAMP 본문
Development/Database & SQL
[Oracle] 오라클 실수로 삭제 후 커밋한 데이터 복구 - AS OF TIMESTAMP
컴공 K 2024. 1. 30. 23:00[Oracle] 오라클 실수로 삭제 후 커밋한 데이터 복구 - AS OF TIMESTAMP
최근 실수로 데이터를 삭제하고 커밋(commit)해버려 엄청 당황스러웠던 일이 있었다. 어떻게 복구할 수 있을까 찾던 중 AS OF TIMESTAMP 를 활용하여 복구하는 방법에 대해 알게 되었고 그 방법에 대해 이 글에 정리하고자 한다.
FlashBack은 DB에서 데이터 수정 및 삭제를 하고 커밋을 한 이후더라도 특정한 시간이나 특정 시점으로 되돌릴 수 있는 기능이다. Oracle 9i 이후부터 지원되는 기능으로 잘못된 DML operation으로 인한 복구를 쉽게 할 수 있다. FlashBack 기능을 통해 AS OF TIMESTAMP를 활용하여 삭제 전 데이터를 조회할 수 있으며 이를 활용하여 데이터 복구가 가능하다.
참고 : FlashBack을 사용하기 위한 조건
- 자동 UNDO 관리 시스템을 사용 : UNDO_MANAGEMENT = AUTO
- UNDO 정보를 어느 시점까지 보유할지 설정 : UNDO_RETENTION = {시간(단위:초)}
- UNDO 관련 파라미터 값 확인 : SHOW PARAMETER UNDO;
아래와 같이 기존 select 문처럼 테이블명과 조회 조건을 넣고 AS OF TIMESTAMP 부분에 수치와 단위 부분을 원하는 조건으로 넣고 조회하면 된다. 단위는 SECOND(초), MINUTE(분), HOUR(시간), DAY(일)이 있다.
-- 단위 : SECOND, MINUTE, HOUR, DAY
SELECT *
FROM {테이블명} AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '수치' 단위)
WHERE {조회조건};
-- EXAMPLE
SELECT *
FROM TEST AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' SECOND) -- 10초 전 TEST 테이블의 데이터 조회
WHERE NAME LIKE 'K%';
http://www.gurubee.net/lecture/1869
https://youngram2.tistory.com/66
https://www.youtube.com/watch?v=CqqNRKaVwqg
728x90
'Development > Database & SQL' 카테고리의 다른 글
[SQL] WITH 절 (0) | 2024.03.10 |
---|---|
[MySQL] 한번에 여러개의 데이터 삽입(insert) (0) | 2023.10.31 |
MySQL 테이블 생성(CREATE) 스크립트(script) 보기 (0) | 2022.09.25 |
DBeaver(디비버) Public Key Retrieval is not allowed 에러 (0) | 2022.09.20 |
[SQLite3] 테이블 존재하는지 확인 (0) | 2022.09.05 |
Comments