DB/Oracle
[Oracle] DB 삭제한 테이블 복구
곱마2
2023. 10. 28. 14:35
반응형
1. 이슈
DB작업을 진행하던 도중 지우면 안되는 테이블을 삭제하고 습관적으로 커밋까지 눌러버렸다.
이 테이블을 복구하기 위해 방법을 찾아봤다.
2. 오라클 DB 삭제한 테이블 복구
FLASHBACK : 특정한 시간 또는 시점으로 되돌릴 수 있는 기능
1) 휴지통에서 지운 테이블 확인
SELECT * FROM RECYCLEBIN;
단 휴지통이 비어있는 경우 복구를 못한다.(PURGE를 한 경우)
2) 휴지통에 있는 테이블 복원
FLASHBACK TABLE 테이블명 TO BEFORE DROP;
3. 데이터 실수로 지우고 커밋 한 경우 복구 방법
1) SYSTIMESTAMP를 이용한 데이터 검색
-- 10초전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' SECOND)
WHERE 컬럼 = 'A'; -- 필요에 따라서 조건문
-- 10분전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)
-- 3시간전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '3' HOUR)
-- 1일전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '1' DAY)
-- 특정시간 기준으로 데이터 조회
SELECT * FROM USER_TB AS OF TIMESTAMP(TO_DATE('20231028000000', 'YYYYMMDDHH24MISS'));
2) 데이터 복구
-- select insert 를 이용하여 삭제된 데이터 처리
-- 10분전 데이터 insert
INSERT INTO 테이블명
SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)
where 조건절 ;
-- select update 를 이용하여 변경된 데이터 처리
UPDATE 테이블명 a
SET
a.컬럼 = (SELECT B.컬럼 FROM 테이블명 B AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE) where a.컬럼 = b.컬럼)
WHERE 조건절;
참고
https://taicorn.tistory.com/entry/Oracle-Table-Data-Restoration
오라클 테이블 및 데이터 복구 (Oracle Table & Data Restoration)
1. 테이블이 삭제된 경우 FLASHBACK : 특정한 시간 또는 시점으로 되돌릴 수 있는 기능 1. FLASHBACK을 사용하여 복구 1) 휴지통에서 지운테이블 확인 > SELECT * FROM RECYCLEBIN; ※ 휴지통이 비어있는 경우 복
taicorn.tistory.com
[ORACLE] 오라클 데이터 복구 TIMESTAMP 사용법
오라클(ORACLE) 데이터를 TIMESTAMP를 사용하여 복구 데이터베이스를 이용하다보면 실수로 데이터를 삭제하거나, 잘못 업데이트를 하는 경우가 있습니다. commit을 하기전이라면 상관이 없습니다. 하
lnsideout.tistory.com
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |

반응형