
- rollback을 가능하게 해줌
- 오라클 인스턴스가 갑자기 shutdown이 되었을 때 instance recovery를 가능하게 해줌
- flashback table, flashback query 등의 flashback 기능을 가능하게 해줌

--> undo tablespace가 undo segment로 가득찬 상태에서 undo_retention을 1시간으로 변경해놓고 심지어 undo tablespace의 retention 마저 guarantee로 해놓으면, 새로운 update 문장과 같은 transaction이 실패하게됨. 그래서 오라클에서 나온 해결 방법이 “total recall”
- flashback을 위한 전용 테이블스페이스를 따로 생성하겠다는 것
- undo tablespace는 순수하게 rollback만 충실히 수행하게 하겠다는 것
- flashback drop
- flashback table
- flashback query
- flashback version query
: 과거에 특정 테이블에 어떠한 DML 작업을 했는지에 대한 이력정보- flashback transaction query
: 과거로 되돌리기 위한 DML문을 볼 수 있음- flashback database
: database 전체를 과거로 되돌리는 것- total recall
: flashback을 위한 전용 tablespace를 따로 생성
alter tablespace undotbs1 retention noguarantee;
select tablespace_name, retention
from dba_tablespaces;
--- scott 에게 flashback 할 수 있는 권한을 부여합니다.
grant flashback archive administer to scott;
-- total recall 을 위한 tablespace 를 생성합니다.
create tablespace fda_tbs
datafile '/u01/app/oracle/oradata/ORA19/fda_tbs01.dbf' size 5m;
alter database datafile
'/u01/app/oracle/oradata/ORA19/fda_tbs01.dbf' resize 50m;
--- flashback data archive 생성
-- FLASHBACK ARCHIVE ADMINISTER 권한이 있는 scott 계정에서 하기
CREATE FLASHBACK ARCHIVE fda1
TABLESPACE fda_tbs
QUOTA 5M
RETENTION 1 YEAR;
-- SCOTT 계정에서 EMP 테이블에 FDA 적용
alter table emp flashback archive fda1;
-- 앞으로 emp 테이블에 관련해서 flashback 은 1년동안 가능합니다.
💡 SCOTT 계정에서 emp 테이블에 fda 적용을 해제하는 방법
alter table emp no flashback archive fda1
SCOTT @ ORA19 > connect scott/tiger
연결되었습니다.
SCOTT @ ORA19 >
SCOTT @ ORA19 >
SCOTT @ ORA19 > delete from emp;
14 행이 삭제되었습니다.
SCOTT @ ORA19 > commit;
커밋이 완료되었습니다.
SCOTT @ ORA19 > select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
25/09/05 10:14:40.358785 +09:00
SCOTT @ ORA19 > flashback table emp to timestamp
2 to_timestamp('25/09/05 10:10:00','RR/MM/DD HH24:MI:SS');
플래시백이 완료되었습니다.
SCOTT @ ORA19 > select count(*) from emp;
COUNT(*)
----------
14
SCOTT @ ORA19 > select table_name, row_movement
2 from user_tables
3 where table_name='EMP';
TABLE_NAME
----------------------
ROW_MOVE
--------
EMP
ENABLED
SCOTT @ ORA19 > select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------
PLAN_TABLE
EMP
DEPT
SYS_FBA_DDL_COLMAP_74422
SYS_FBA_TCRV_74422
SYS_TEMP_FBT
SYS_FBA_HIST_74422
7 행이 선택되었습니다.
SCOTT @ ORA19 > grant flashback archive administer to scott;
권한이 부여되었습니다.
SCOTT @ ORA19 > alter table dept flashback archive fda1;
테이블이 변경되었습니다.
SCOTT @ ORA19 >
-- emp 테이블의 FDA 를 해제하기
SCOTT @ ORA19 > alter table emp no flashback archive;
테이블이 변경되었습니다.
-- FLASHBACK Archive 삭제하기
SCOTT @ ORA19 > drop flashback archive fda1;
플래시백 아카이브가 삭제되었습니다.
-- sys 유져에서 tablespace 도 삭제합니다.
SCOTT @ ORA19 > connect / as sysdba
연결되었습니다.
SYS @ ORA19 >
SYS @ ORA19 > drop tablespace fda_tbs including contents and datafiles;
테이블스페이스가 삭제되었습니다.