본문 바로가기

Start

오라클 commit 잘못 했을때 당황하지 말고 timestamp

반응형

제목만 봐도 아찔한 상황 이다 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

일어나서는 안될일! 이지만.

 

그래도 일하다 보면 한번쯤은 있을법한 거라 정리해본다.

 

--일
SELECT *
FROM CONTENTS_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL'1'day)
where 1=1 --이런식으로 where 작성 가능
;

-- 시간
SELECT *
FROM CONTENTS_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL'1'hour)
;

--분
SELECT *
FROM CONTENTS_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL'30'minute)
;

 

where 절로 조건을 줘서 조회도 가능하고 day, hour, minute 앞에 값을 바꿔서 조회 가능하다.

 

그리고 해당 시간 전의 테이블 데이터를 볼 수 있으므로

 

잘못 update 하고 commit 한 테이블에 바로 수정도 가능하다. 

 

 

UPDATE CONTENTS_TABLE A SET
 (contents_seq
 ,contents_text
 ,contents_date) = (
 					SELECT contents_seq,
                    		contents_text,
                            contents_date
					FROM CONTENTS_TABLE AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL'4'hour) B
                    WHERE A.contents_seq = B.contents_seq
                    )
WHERE CONTENTS_SEQ = '10000'
;

 

이런식으로 조건에 맞는 데이터를 설정하고 원복을 시켜줄 수 있다.

 

당황하지 말자.

그래도

실수하지 말자.

반응형