오늘 실수로 개발 서버 DB의 테이블의 데이터를 살짝 날려 버렸는데, 리얼 서버 DB의 데이터를 insert 쿼리로 긁어서 다시 넣을 까, 하다 옆에 분에게 물어보니 이런 멋진 쿼리를 알려 주셨다.
insert into [대상테이블]
select * from [대상테이블] as of timestamp (systimestamp-interval '30' minute)[조건절];
systimestamp-interval은 데이터를 되돌릴 수 있는 시간(분)이라고 한다. 최대 30분이라고 하니 날려 먹었다고 생각한 순간, 시간을 계산해서 실행하고 데이터를 확인해보도록 한다.
- 검색해보니 오라클 9i 이후부터 지원한다.
- ora-1555: 너무이전 스냅샷, ora-22924: 너무오래된 스냅샷입니다. –> 이런 에러가 발생할 경우 조건절을 주어서 데이터를 조금씩 잘라서 가져옵니다.
- delete 와 같은 DML 쿼리 실행 시 한번 더 생각하는 습관을 가져야겠습니다.