본문 바로가기
컴퓨터관련/Oracle

[Oracle]오라클 타임스템프 이용 데이터 확인 및 복구하기

by 빛과 어둠사이 2023. 6. 15.
728x90
반응형
SMALL

오늘은 오라클에서 타임스템프 명령어를 이용하여

과거의 데이터를 확인 및 복구할 수 있는 방법에 대해서

정리를 해보고자 합니다.

 

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 명령을 통해 과거 데이터를 확인하고,

복원하는 방법이였습니다~

 

 

 

 

 

Do it! 오라클로 배우는 데이터베이스 입문:비전공자도 기초부터 확실하게!, 이지스퍼블리싱

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

728x90
반응형
LIST