쉽게 쉽게

[Oracle] DB 삭제한 테이블 복구 본문

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

https://lnsideout.tistory.com/entry/ORACLE-%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%B5%EA%B5%AC-TIMESTAMP-%EC%82%AC%EC%9A%A9%EB%B2%95

 

[ORACLE] 오라클 데이터 복구 TIMESTAMP 사용법

오라클(ORACLE) 데이터를 TIMESTAMP를 사용하여 복구 데이터베이스를 이용하다보면 실수로 데이터를 삭제하거나, 잘못 업데이트를 하는 경우가 있습니다. commit을 하기전이라면 상관이 없습니다. 하

lnsideout.tistory.com

잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다.

 

 

반응형

'DB > Oracle' 카테고리의 다른 글

[Oracle] 중복된 데이터 중 1개만 남기고 지우기  (1) 2023.10.13