오늘은 오라클에서 타임스템프 명령어를 이용하여
과거의 데이터를 확인 및 복구할 수 있는 방법에 대해서
정리를 해보고자 합니다.
DB를 관리하고 사용하다보면 잘못해서 UPDATE, DELETE 등을 할 수 있습니다.
이 때 과거의 데이터가 어떻게 되어있었는지 알 수 있다면
해당 데이터를 기반으로 다시 복구를 할 수 있습니다.
Oracle에서는 이렇게 할 수 있도록 TIMESTAMP라는 명령어를
제공해주고 있습니다.
오라클에서 제공하는 타임스템프는 해당 조건에 맞게 과거 데이터를 확인할 수 있게 해줍니다.
그러면 해당 데이터를 기반으로 복구 등도 할 수 있습니다.
타임스템프를 이용하는 방법은 다음과 같습니다.
select *
from 테이블명 as of timestamp (systimestamp-interval '시간' SECOND)
where 조건
;
기본 방법은 위와 같습니다.
위처럼 하게 되면 해당 테이블의 시간만큼 초 전의
조건에 해당하는 값을 확인할 수 있습니다.
저 샘플은 초를 나타낸 것이고,
분, 시간, 날짜 등으로도 조건을 변경하여 조회할 수 있습니다.
SECOND 부분에 값을 변경해주시면 되십니다.
SECOND : 초
MINUTE : 분
HOUR : 시간
DAY : 날짜
위 명령어들을 원하는 조건에 맞게 변경을 해주시면 되십니다.
이제 실제 예제를 한번 확인해보도록 하겠습니다.
--1. 테이블 생성
CREATE TABLE tmp_table ( NM VARCHAR2(50) , AGE INTEGER )
;
--2. 데이터 입력
INSERT INTO TMP_TABLE VALUES('홍길동', 10);
INSERT INTO TMP_TABLE VALUES('홍길순', 20);
--3. 데이터 확인
SELECT * FROM tmp_table
위처럼 하여 tmp_table 테이블을 생성하고
임시데이터를 넣었습니다.
위처럼 쿼리를 작성하고 실행을 하게 되면
결과는 아래처럼 나오게 됩니다.
위처럼 데이터가 입력이 된 것을 확인할 수 있습니다.
그러면 이제 데이터를 수정해보도록 하겠습니다.
--4. 데이터 수정
UPDATE TMP_TABLE SET AGE = 25 WHERE NM= '홍길동'
;
COMMIT;
--5. 데이터 확인
SELECT * FROM tmp_table
;
위처럼 하였습니다.
홍길동의 나이를 25세로 변경하는 간단한 쿼리입니다.
위처럼 쿼리를 작성하였고
실행을 하게 되면 결과는 아래처럼 나오게 됩니다.
위처럼 홍길동의 나이가 변경이 된 것을 확인할 수 있습니다.
이제 오라클의 타임스템프 명령을 통해
과거에 데이터가 어떻게 되어있었는지 확인해보도록 하겠습니다.
데이터를 확인하기 위해 아래처럼 쿼리를 작성해보았습니다.
--7. 과거 데이터 확인
select *
from tmp_table as of timestamp (systimestamp-interval '5' MINUTE)
where NM = '홍길동'
;
위처럼 작성하였습니다.
이름이 tmp_table에서 홍길동인 사람의 5분 전 데이터를 확인하는 쿼리입니다.
위처럼 쿼리를 작성하고 실행을 하게 되면
결과는 아래처럼 나오게 됩니다.
위처럼 홍길동의 5분 전 나이는 10살이였던 것으로 확인을 할 수 있습니다.
그러면 해당 데이터를 바탕으로 잘못된 데이터를 복원할 수 있습니다.
10살로 다시 돌리거나, delete를 했었다면 다시 insert를 할 수 있는 것입니다.
오늘은 oracle에서 제공하는 timestamp 명령을 통해
과거 데이터를 확인하는 방법을 정리해보았습니다.
이런 방법을 통해 과거 데이터를 확인하고,
잘못 update, delete 등을 하였다면 복구를 할 수 있는 것입니다.
저도 얼마 전에 데이터를 백업 안해놓고 업데이트 했다가
이 timestamp 명령을 통해 값을 확인해서
복구를 할 수 있었네요.
타임스템프 명령을 이용하면 과거의 데이터를 확인할 수 있기 때문에
복원(복구)가 가능하지만
너무 타임스템프 명령만 믿지 말고 백업을 생활화 해야 할 것 같습니다.
이상으로 oracle에서 timestamp 명령을 통해 과거 데이터를 확인하고,
복원하는 방법이였습니다~
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'컴퓨터관련 > Oracle' 카테고리의 다른 글
[Oracle]테이블 정보 확인 및 검색하기 (0) | 2024.02.14 |
---|---|
[Oracle]오라클 테이블 및 인덱스 사용 용량 확인하기 (0) | 2023.08.02 |
[Oracle]오라클의 SID, Service Name의 차이점과 확인방법, Java에서 연결 설정방법 (0) | 2022.06.23 |
[Oracle]DBeaver 툴에서 ORA-00900 오류 발생 시 (0) | 2022.01.11 |
[Oracle]오라클 인덱스 생성, 제거, 재생성 확인 쿼리 (0) | 2019.03.22 |