- undo data
: 취소를 하기 위한 data
undo tablespace
에 저장
- redo data
: 복구를 하기 위한 data
redo log file
에 저장
rollback
을 할 수 있게 해줌flashback
을 할 수 있게 해줌- instance가 비정상적으로 종료되었을 때 복구 할 수 있게 해줌
- 읽기 일관성 보장
누군가 update를 했어도 최종적으로 commit 된 데이터만 볼 수 있음
SCOTT @ ORA19 > delete from emp;
14 행이 삭제되었습니다.
SCOTT @ ORA19 > commit;
커밋이 완료되었습니다.
💡 이때 지워진 데이터는 undo tablespace의 undo segment에 들어있음
SCOTT @ ORA19 > show parameter undo_retention
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_retention integer 900
SCOTT @ ORA19 >
900초 = 15분
SCOTT @ ORA19 > alter table emp enable row movement;
테이블이 변경되었습니다.
SCOTT @ ORA19 > flashback table emp to timestamp
2 (systimestamp - interval '10' minute);
플래시백이 완료되었습니다.
SCOTT @ ORA19 > select count(*) from emp;
COUNT(*)
----------
14
SCOTT @ ORA19 >
💡 undo segment에 undo data가 저장되어있어서 flashback이 가능한 것
select table_name, num_rows
from user_tables;
select 'select count(*) from ' || table_name || ';'
from user_tables;
select count(*) from COUNTRIES; --25
select count(*) from DEPARTMENTS; --27
select count(*) from EMPLOYEES; -- 107
select count(*) from JOBS; -- 19
select count(*) from JOB_HISTORY; --10
select count(*) from LOCATIONS; -- 23
select count(*) from REGIONS; --4
delete from JOBS;
delete from JOB_HISTORY;
delete from LOCATIONS;
delete from REGIONS;
alter table JOBS enable row movement;
alter table JOB_HISTORY enable row movement;
alter table LOCATIONS enable row movement;
alter table REGIONS enable row movement;
flashback table JOBS, JOB_HISTORY, LOCATIONS, REGIONS to timestamp
(systimestamp - interval '10' minute);