데이터를 실수로 삭제를 해버렸다...
오라클에서는 데이터를 삭제 또는 수정후 COMMIT했을때 Oralce의 Flashback을 통해 TIMESTAMP를 사용해서 이전의 데이터를 조회해서 복구할 수 있는 기능이 있다(해당 기능은 오라클 9i 버전 이상부터 지원)
주의할점은 Flashback은 Undo Data를 사용하기 때문에 undo_retention 파라미터값에 의해 보존되는 시간이 정해져있습니다. (기본값 900초)
undo_retetion 조회 쿼리
select * from v$parameter where name = 'undo_retention';
사용방법
SELECT *
FROM [TABLE 명] AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) -- 단위는 SECOND, MINUTE, HOUR, DAY
WHERE [조회조건]
예를들어 실수로 ITEM_HISTORY의 데이터를 모두 DELETE후 커밋을 해버렸다.
이 경우 10분전에 ITEM_HISTORY 테이블의 데이터를 조회할 수 있다.
SELECT *
FROM ITEM_HISTORY AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)
만약 10분전의 데이터로 테이블을 복구하고 싶다면 아래와 같이 사용하면 된다.
INSERT INTO [TABLE] SELECT * FROM [TABLE] AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' MINUTE); -- 10분이전 데이터로 복구
'RDBMS' 카테고리의 다른 글
[Oracle] 오라클 소수점 반올림(ROUND), 절사(TRUNC) (0) | 2023.02.15 |
---|---|
[Oracle] MERGE INTO -> 데이터가 있는지 확인(SELECT) 하고 데이터를 삽입하거나 업데이트(INSERT, UPDATE)하자 (2) | 2022.09.17 |
MySQL에서 특정 문자로 문자열 SPLIT 하기 - SUBSTRING_INDEX (2) | 2022.04.19 |