일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MessageQueue
- Jenkins
- ORM
- ci/cd
- QueryDSL
- stream api
- 스트림
- 대용량 업로드
- 자동배포
- 자동빌드
- apache.poi
- 자바8
- mssql
- 그리드
- 제이쿼리그리드
- 엑셀 업로드
- 보안
- Javascript
- spring
- JQuery
- JPA
- mom
- sqlserver
- docker
- rabbitmq
- Stream
- jqGrid
- java
- DevOps
- poi
- Today
- Total
개발 메모장
[Oracle] TimeStamp - 데이터 원복 본문
#. DB를 다루다 보면 있어선 안 되지만 실수하는 경우가 발생할 수 있습니다.
#. TimeStamp를 이용하여 원복 해보도록 하겠습니다.
Step 0. 현재 테이블에는 아래와 같은 데이터가 있고 이후 데이터를 삭제하고 이후 데이터를 추가해 테스트 환경을 만듦
Step 1-1. TimpStamp를 이용하여 조회(현재 시간 기준 - 지정한 이전 시간의 데이터 조회)
- 원하는 만큼의 시간과 SECOND / MINUTE / HOUR / DAY를 조합하여 사용
- Example - INTERVAL '30' MINUTE를 이용해 30분 전의 데이터를 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '30' MINUTE)
Step 1-2. TimpStamp를 이용하여 조회(지정한 날짜로 조회)
SELECT *
FROM 테이블
AS OF TIMESTAMP(TO_DATE('20231120000000', 'YYYYMMDDHH24MISS'));
Step 2. Union All을 이용해 현재 데이터와 이전 데이터를 같이 조회
SELECT * FROM 테이블
UNION ALL
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '30' MINUTE);
Step 3. Edit Mode로 데이터 복사 또는 Insert, Update 문을 이용해 데이터 추가, 수정하기
- Insert 시 필요에 따라 조건을 넣고, Update 시 조건 넣어주기
INSERT INTO 테이블
SELECT * FROM 테이블
AS OF TIMESTAMP(SYSTIMESTAMP - (INTERVAL '30' MINUTE));
#. Insert 하여 삭제된 데이터를 테이블에 정상적으로 복구하였습니다.
#. 참고로 오라클이 데이터를 보존하는 기간은 최대 5일이므로 5일이 지난 데이터는 복구가 불가합니다.
#. 주기적으로 백업을 하는 것이 가장 현명한 방법입니다!
#. 추가로 테이블 자체를 특정 시간 전으로 돌리는 방법은 아래와 같으나 Oracle Enterprise Edition에서 가능하며, Standard Edition에서 실행 시 ORA-00439: 기능이 사용으로 설정되지 않음: Flashback Table이라는 문구가 나옵니다.
FLASHBACK TABLE 테이블 TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE);
===========================================================
틀린 내용이 있거나 이견 있으시면 언제든 가감 없이 말씀 부탁드립니다!
===========================================================
'DBMS' 카테고리의 다른 글
[Oracle] SQL 튜닝 (2) | 2023.12.05 |
---|---|
[MS-SQL] 프로시저 오류 발생 시 메일 발송(장단점, SMTP, 스케줄러) (0) | 2023.11.28 |
[MS-SQL] SQL Server 로그인 계정 생성하기 (0) | 2023.11.22 |
[MS-SQL] 테이블 및 프로시저, 스케줄러에서 사용하는 내용 찾기 (0) | 2023.11.22 |
[MS-SQL] Open Query 사용 방법 (0) | 2023.11.21 |