2021. 1. 21. 11:48 DB/oracle
오라클 TIMESTAMP 활용
데이터 베이스 사용자들은 종종 칼럼의 값을 변경하는 상황이 자주 생긴다. (DELETE 는 지양하는편)
그런데 아무리 익숙한 사용자...라도 방심을 하는 경우가 있다.
where 을 생략하는 것이다.
복잡한 쿼리 일수록 더 조심을 하게 되는데
간단하고 일상적인 쿼리일수록 방심을 한다.
귀찮아서 백업도 받지 않음.
그래서 겪었던 일이다. 간단하게 한 칼럼만 update 하는 것이었는데 where 절을 뺴먹고
신나게 타이핑 하고 컨트롤엔터 하고 바로 commit 을 날림........
수십만건이 일괄로 업데이트 되었다. 운영서버.
머리가 하얗게 됨.... 손이 떨려서 타자도 안쳐진다
구글링 후 오라클의 TIMESTAMP 를 활용한다. 버전에 따라 다르고 디비서버에서 설정하기 다른데
일정 시간 전의 데이터를 select 할 수 있었다.
임시테이블을 만들고 조회 후 확인 하고 MERGE로 update 한다 그리고 확인하고
commit
create 임시테이블 as
SELECT *
FROM 실수한테이블 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '22' MINUTE);
select * from 임시테이블;
merge into 실수한테이블 a
using (select * from 임시테이블) b
on (a.doc_id = b.doc_id)
when matched then
update set a.칼럼명 = b.칼럼명
;
select * from 실수한테이블
order by AAA desc;
select * from 실수한테이블
where DDD = '353tsd1';
commit;
'DB > oracle' 카테고리의 다른 글
SQL 포매팅 보기좋게 (0) | 2021.04.21 |
---|---|
오라클 예약어를 알리아스 걸려면 (0) | 2021.04.21 |
엑셀 데이터 임포트 및 해당 데이터 MERGE (0) | 2021.01.21 |
오라클 테이블 생성 기존 테이블 구조 가져오기 (0) | 2021.01.21 |
오라클 디비링크 조회 (0) | 2020.09.06 |