- flashback query : 특정 시점의 데이터의 상태를 조회하는 기능
- flashback table : 테이블 데이터를 특정 시점으로 복구
- flashback drop : 삭제된 테이블을 복구
- flashback version query : 특정 기간동안 데이터 변경내역 조회
- flashback transaction query : 트랜잭션 변경 내역과 관련 정보를 조회
- flashback database : 전체 데이터베이스를 특정 시점으로 복구
- flashback archive ( total recall ) : 데이터 베이스 내의 특정 테이블의 모든 변경이력을 책임지고 저장하는 기능
휴지통(recyclebin) 비우기
purge recyclebin;
drop table emp purge;
-- 아무것도 안나옴
show recyclebin;
purge를 쓰면 recyclebin으로 들어가지 않고 바로 삭제됨
권장하지 X
💡 실제로 drop 할 때는 가급적 purge 옵션 쓰지 X. 혹시 복구가 필요할 수도 있기 때문
update emp
set sal = 0
where ename='KING';
commit;
update emp
set job='ANALYST'
where ename='KING';
commit;
delete from emp
where ename='KING';
commit;
select versions_starttime, ename, sal, job, versions_operation
from emp
versions between timestamp to_timestamp('2025/07/15 13:54:00', 'RRRR/MM/DD HH24:MI:SS')
and maxvalue
where ename='KING'
order by versions_starttime asc nulls first;
U: update
select versions_starttime, ename, sal, job, versions_operation
from emp
versions between timestamp to_timestamp('2025/07/15 13:54:00', 'RRRR/MM/DD HH24:MI:SS')
and maxvalue
where ename='KING'
order by versions_starttime asc nulls first;
alter table emp enable row movement;
flashback table emp to timestamp to_timestamp('25/07/15 13:57:52','RRRR/MM/DD HH24:MI:SS');
select ename, sal, job from emp where ename='KING';
#1. 부서번호 20번의 loc 를 kkkkk 로 변경하시오! commit 하세요
#2. 부서번호 20번의 dname 을 hhhh 로 변경하시오! commit 하세요
#3. 부서번호 20번의 데이터를 지우시오! commit 하세요
update dept
set loc = 'kkkkk'
where deptno = 20;
commit;
update dept
set dname = 'hhhh'
where deptno = 20;
commit;
delete from dept
where deptno = 20;
commit;
select * from dept;
#1. 부서번호 20번의 loc 를 kkkkk 로 변경하시오! commit 하세요
#2. 부서번호 20번의 dname 을 hhhh 로 변경하시오! commit 하세요
#3. 부서번호 20번의 데이터를 지우시오! commit 하세요
select versions_starttime, deptno, loc, dname, versions_operation
from dept
versions between timestamp to_timestamp('2025/07/15 14:15:00', 'RRRR/MM/DD HH24:MI:SS')
and maxvalue
order by versions_starttime asc nulls first;
select * from dept;
alter table dept enable row movement;
flashback table dept to timestamp to_timestamp('25/07/15 14:15:22','RRRR/MM/DD HH24:MI:SS');
select * from dept;
💡 flashback version 쿼리는 테이블을 과거로 flashback 하기 전에 어느 시점으로 복구하는게 맞는지 그 정확한 시간을 확인하기 위해서 필요