728x90
오라클 DELETE나 UPDATE를 하고 COMMIT한 데이터 복구하기
TIMESTAMP
SELECT [컬럼]
FROM [테이블] AS OF TIMESTAMP 함수
TIMESTAMP를 통한 복구 쿼리입니다.
시간으로 조회
-- 30초전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '30' SECOND)
WHERE 컬럼 = 'A'; -- 조건문 사용 가능
-- 10분전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '10' MINUTE)
-- 1시간전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '1' HOUR)
-- 1일전 데이터 조회
SELECT * FROM 테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '1' DAY)
단위: SECOND, MINUTE, HOUR, DAY
특정 날짜 조회
SELECT * FROM TESTTABLE AS OF TIMESTAMP(TO_DATE('20230714 11:30:00', 'YYYYMMDD HH24:MI:SS'));
2023년 07월 14일에 테이블 데이터를 조회
UNION ALL을 통한 데이터 비교
--현재 데이터
SELECT * FROM TESTTABLE where COLUMN1 = '테스트';
UNION ALL
SELECT * FROM TESTTABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '30' MINUTE) WHERE COLUMN1 = '테스트';
--10분전데이터
현재 데이터와 30분전 데이터 비교하는 예시입니다.
INSERT SELECT를 통한 데이터 복구
INSERT INTO [테이블]
SELECT [컬럼]
FROM [테이블] AS OF TIMESTAMP 함수
SELECT INSERT 쿼리로 간단히 테이블 삭제 후 데이터 복구 하시면 됩니다.
728x90
'STUDY > DB SQL' 카테고리의 다른 글
[SQL] 오라클 문자(CHR) 아스키코드(ASCII) 변환 방법 (0) | 2023.07.21 |
---|---|
[SQL] 오라클 trim, replace로 제거되지 않은 공백값 chr(49824) 제거하기 (0) | 2023.07.21 |
[SQL] 오라클 문자열 치환 - REPLACE 와 REGEXP_REPLACE (0) | 2023.07.13 |
[SQL] 오라클 프로시저 설명과 프로시저와 함수의 차이점 (0) | 2023.07.11 |
[SQL] 오라클 ORA-01439: 데이터 유형을 변경할 열은 비어 있어야 합니다 해결하기 (1) | 2023.07.06 |