반응형
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 | 31 |
Tags
- 캡슐화
- 중첩 break
- 오블완
- SQL Mapper
- break 사용법
- 자바의정석
- 멀티프로세싱
- 자바의 정석
- 리눅스
- 다형성
- 오버라이딩
- 멀티태스킹
- java
- CPU
- contiune
- hackerrank
- 티스토리챌린지
- 붕대 감기 자바
- 입출력
- 혼공얄코
- 오버로딩
- 객체지향
- spring security 설정
- 붕대 감기
- 프로그래머스
- 프로그래머스 붕대 감기
- over()
- spring security
- 쿠키
- continue 사용법
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 |
---|