update문을 쳤는데 commit을 하고 나서야
where 조건이 빠진 채 전체 데이터가 update 된 걸 발견했다.
찾아보니 timestamp를 이용해서 되돌릴 수 있다고 해서 실행했다.
select *
from AA
as of timestamp(systimestamp - interval '20' minute);
이 쿼리로 20분 전의 AA 테이블 데이터를 조회했더니 update 하기 전의 데이터가 있었다.
create table bak_AA
as
select *
from AA
as of timestamp(systimestamp - interval '20' minute);
bak_AA 테이블을 생성하며 20분 전의 데이터를 넣었다.
alter table AA rename to bak_AA_2022;
alter table bak_AA rename to AA;
잘못된 데이터가 있는 AA테이블을 bak_AA_2022라고 테이블명을 바꾸고,
20분 전의 데이터가 있는 bak_AA 테이블을 AA 테이블로 이름을 변경했다.
select *
from AA;
AA테이블을 조회하니 정상적으로 데이터가 되돌려진 것을 확인했다.
그리고,
drop table bak_AA_2022;
임시로 만든 테이블은 삭제했다!
항상 commit하기 전에 데이터가 잘 들어왔는지 확인하는 습관을 가져야겠다!!ㅠㅠ
그럼 rollback으로 바로 되돌릴 수 있으니!