실수로 디비 테이블을 날려먹고 아뿔싸... 하는 생각을 하신 분들이 꽤 되실 거라 생각 듭니다.
개발자로서 일을 처음 시작할 때 저 역시 작업하다 데이터를 날려먹고 사수한테 엄청 혼났던 기억도 났고, 후임으로 들어온 신입이 패스워드 칼럼을 전부 날려먹어서 복원했던 기억도 납니다. 롤백하면 되겠지 생각했는데 이미 커밋까지 다 해버렸고, 신입은 혼자서 어쩌지 하면서 시간을 보내고 있었네요^^
이런 경험 들은 전부 가지고 계시죠?
오라클은 데이터를 FLASHBACK이라는 임시 저장소를 가지고 있습니다. 자료가 쌓이는 로그죠. 그래서 일정 시간 이내의 자료들은 어느 정도 복구가 가능합니다.
기준자료의 데이터가 바뀐 경우 TIMESTAMP라는 함수를 써서 아주 쉽게 복원할 수 있습니다. 하지만 테이블의 칼럼을 변경 처리하거나 DROP 한 후
PUERGE를 한 경우에는 복원을 할 수가 없습니다.
복원 쿼리 안내
제가 쓰는 복원 쿼리입니다.
select *
from 테이블명 as of timestamp(systimestamp - interval '100' minute)where 조회 조건 ;
눈치 빠른 분들은 한 번에 알아보시겠죠. 100분 이내의 자료를 조회하는 쿼리입니다. 시간은 무한정 늘어나는 건 아니며 오라클 서버의 메모리 세팅에 따라 달라지니 참고 하시기 바랍니다.
쿼리만 셀렉트 한다고 될 건 아니죠.. 잘못된 칼럼을 수정하려면 업데이트를 해줘야 하는데 어려워하시는 분들을 위해 업데이트 쿼리도 만들어 보았습니다.
update테이블명 aa
set 칼럼 =
( select 컬럼
from (select 칼럼, 기준값
from 테이블
as of timestamp(systimestamp - interval '100' minute))bb where aa.기준값 = bb.기준값);
칼럼은 데이터가 변경된 칼럼이며, 기준값은 유일 키로서 ROW의 기준이 되는 값이어야 합니다.
'IT정보센터 > ORACLE' 카테고리의 다른 글
오라클에서 long type 컬럼 검색하는 방법 안내 (0) | 2022.04.12 |
---|---|
오라클 계정에 있는 모든 컬럼의 값을 검색하여 특정 값 찾기 (0) | 2021.08.05 |
ROLLUP을 이용하여 부서별 통계 및 부분합계 구하기 (0) | 2021.06.25 |
오라클 중복제거 - 고유키값이 없을경우 중복삭제 (0) | 2021.06.24 |
오라클 Base64 인코딩/디코딩 내장함수 (0) | 2021.06.23 |
오라클 힌트 및 인덱스 사용에 관한 잡담 (0) | 2016.07.13 |
오라클 시노님(SYNONYM )에 대해서 알아볼께요 (2) | 2015.12.17 |
오라클 프로시저 이름, 내용, 변수, 잡스케쥴러 조회 (0) | 2015.08.31 |
오라클 컬럼명, 테이블명, 계정별 테이블명, 코멘트 조회 (0) | 2015.08.10 |
오라클 LEVEL을 이용한 계층형쿼리 쉽게 만들기 (0) | 2015.07.31 |