컴공생의 다이어리

[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

 

Undo Segment 관리

초기화 파라미터 환경구성 ① UNDO_MANAGEMENT   - 테이타베이스의 Undo 모드를 자동 모드로 사용 할지 수동 모드를 사용할지 여부를 결정 합니다. ..

www.gurubee.net

https://youngram2.tistory.com/66

 

Oracle FlashBack 플래시백 ( 데이터 복원)

Oracle Flashback 기능이란? DB관리중에 실수로 데이터를 삭제하거나 데이터값을 잘못 변경하는 실수가 가끔 발생 합니다. 이러한 실수는 commit 이전이라면 rollback명령어로 수행한 작업을 원복 시킬수

youngram2.tistory.com

https://www.youtube.com/watch?v=CqqNRKaVwqg

 

728x90
Comments