반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- authenticationprovider 설정
- SQL Mapper
- 멀티태스킹
- spring security 설정
- 프로그래머스
- 자바의 정석
- 객체지향
- java
- CPU
- 개인정보 수집 유효기간 자바
- 다형성
- 공원 산책 자바
- spring security
- 달리기 경주 자바
- 자바의정석
- 오블완
- 로그인 핸들러 구현
- over()
- 오버로딩
- 쿠키
- 입출력
- 바탕화면 정리 자바
- 멀티프로세싱
- 리눅스
- 오버라이딩
- hackerrank
- 캡슐화
- 혼공얄코
- 티스토리챌린지
- userdetailsservice 설정
Archives
- Today
- Total
쉽게 쉽게
[Oracle] DB 삭제한 테이블 복구 본문
반응형
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
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
반응형
'DB > Oracle' 카테고리의 다른 글
[Oracle] 중복된 데이터 중 1개만 남기고 지우기 (1) | 2023.10.13 |
---|