티스토리 뷰
"혹시 삭제한 데이터 다시 살릴 수 있나요?"
이런 연락을 가끔 받습니다.
오라클을 사용하고 삭제된지 얼마 안된 경우 간단하게 복구를 할 수 있습니다.
먼저 어느 정도 시간 까지 복구 가능한지 확인을 해야 합니다.
sql> show parameter undo;
NAME TYPE VALUE
--------------- ------- --------
undo_management string AUTO
undo_retention integer 1800
undo_tablespace string UNDOTBS1
위의 경우 undo_retention 값이 1800으로 되어 있는 것을 확인할 수 있습니다.
1800/60초 = 30분
commit된지 30분 이내 실행 된 것이라면 아직 오라클에 남아 있어 복구가 가능하다는 것입니다.
해당 시간을 조정할려면 아래 처럼 하면됩니다.
alter system set undo_retention = [원하는시간(초)] ;
삭제된 데이터 조회
SELECT * FROM [테이블명] AS TIMESTAMP(SYSTIMESTAMP-INTERVAL '[시간]' [단위, SECOND/MINUTE/HOUR/DAY]) WHERE 조건
-- 예제
SELECT * FROM USER AS TIMESTAMP(SYSTIMESTAMP-INTERVAL '25' MINUTE) WHERE STAT='Y'
-- 25분전 USER테이블 데이터 조회
복구 예제
INSERT INTO USER
SELECT * FROM USER OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '25' MINUTE) WHERE STAT = 'Y'
만약 삭제 후 새로운 데이터가 삽입 된 경우 충돌이 날 수 있습니다.
필요시 조건을 추가 하거나 새로운 데이터를 삭제해야 할 수 있습니다.
여러가지 문제로 완벽하게 복구할 수 없을 지 모르지만 그래도 급할 때는 유용합니다.
'DB' 카테고리의 다른 글
MYSQL - WITH 구문 (0) | 2023.07.19 |
---|---|
[ORACLE]LISTAGG 함수, ONE TO MANY, SINGLE ROW로 보여주기 (0) | 2020.04.03 |
[mysql]암복화 예제 (0) | 2020.04.02 |
[MyBatis]mapper에서 공통 property 사용 (0) | 2020.04.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- sample
- AG-GRID
- Spring Boot
- cache
- springboot
- Javascript
- 샘플
- 스프링
- UI
- restful서비스
- 엑셀
- java
- mapToList
- example
- listToMap
- RESTful
- 메시지
- lombok
- REST
- oracle
- 예제
- 타임리프
- spring
- ag grid
- thymeleaf
- 그리드
- mybatis
- 스프링부트
- 설정
- SHEETJS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함