Flashback Data Archive(11g)
DML 작업을 하면서 실수를 저질러버리고 commit까지 해버리는 경우가 있습니다. 예를 들어 실수로 delete문에 조건절을 포함하지 않아 모든 데이터가 사라지는... 그런 경우가 생길 수 있습니다. Flashback 기능을 사용하면 이런 상황에서 복구가 가능합니다. 하지만 Undo Data를 기본적으로 사용하는 Flashback 기능은 undo_retention 파라미터에 따라 데이터를 복구하지 못하는 상황이 발생할 수 있습니다. undo_retention은 기본으로 900이므로 15분이 지나면 undo에서 데이터를 읽어오지 못하여 Flashback 기능을 사용해서 복구가 안될 수 있습니다. 이럴때는 Flashback Data Archive를 생성하여 Undo Data를 오랜 기간 보존하여 Flashback 기능을 사용할 수 있습니다.
Flashback Data Archive 실습
실습환경
OS : Red Hat Enterprise Linux Server release 6.10
DB : Oracle 11.2.0.1
SID : orcl
host : 601d2fce71dc
Flashback Data Archive 전용 Tablespace 생성
SYS@orcl> create tablespace flash_tbs datafile '/opt/oracle/app/oradata/orcl/flash_tbs01.dbf' size 50m;
Tablespace created.
Flashback Data Archive를 이용하여 Undo Data가 저장될 Tablespace를 생성합니다.
Flashback Data Archive 관리 유저 생성
SYS@orcl> create user fra_admin identified by oracle default tablespace flash_tbs;
User created.
Flashback Data Archive를 관리할 유저를 생성해주고 위에서 생성한 tablespace를 default로 지정해줍니다.
SYS@orcl> grant resource, connect, unlimited tablespace to fra_admin;
Grant succeeded.
세션접속과 기본적으로 오브젝트를 다루는데 필요한 권한과 tablespace에 대한 접근 권한을 부여해줍니다.
SYS@orcl> grant flashback archive administer to fra_admin;
Grant succeeded.
Flashback Archive Segment를 생성할 수 있는 권한을 부여합니다.
Flashback Data Archive 생성
SYS@orcl> conn fra_admin/oracle
FRA_ADMIN@orcl> create flashback archive fra1 tablespace flash_tbs retention 6 month;
Flashback archive created.
fra_admin으로 접속 후, Undo Data 보존 기간이 6개월인 Flashback Data Archive를 생성했습니다.
FRA_ADMIN@orcl> create flashback archive fra2 tablespace flash_tbs retention 2 year;
Flashback archive created.
Undo Data 보존 기간이 2년인 Flashback Data Archive를 생성했습니다.
FRA_ADMIN@orcl> conn / as sysdba
Connected.
SYS@orcl> alter flashback archive fra2 set default;
Flashback archive altered.
fra2를 Default Flashback Data Archive로 설정했습니다.
FRA_ADMIN@orcl> col flashback_archive_name for a10
FRA_ADMIN@orcl>
select
flashback_archive_name
,retention_in_days
,status
from dba_flashback_archive;
생성이 완료된것을 확인할 수 있습니다.
Historical Data Access
FRA_ADMIN@orcl> grant flashback archive on fra1 to sh;
Grant succeeded.
Flashback Archive에 접근할 수 있는 권한을 부여합니다. sh계정에서 fra1에 Undo data의 내용을 저장할 수 있도록 권한을 부여해줬습니다.
FRA_ADMIN@orcl> conn sh/sh
Connected.
SH@orcl> alter table sales flashback archive fra1;
Table altered.
fra1에 sales 테이블에서 발생하는 Undo의 데이터를 기록하도록 설정했습니다.
SH@orcl> conn fra_admin/oracle
Connected.
FRA_ADMIN@orcl> select * from dba_flashback_archive_tables;
Fashback Archive에 등록된 테이블의 정보를 확인할 수 있습니다.
Flashback Archive에 등록된 테이블에 한해서 undo_rention 파라미터의 값이 아닌 Flashback Archive의 retention 기간만큼 데이터가 보존되어 Flashback 기능을 사용할 수 있습니다.
원칙상으로 undo_retention값이 지나면 더이상 Undo에 데이터를 보존하지 않습니다. 하지만 실제로 테스팅 작업을 해보면 undo_retention 기간만큼 지나도 undo의 데이터가 읽어지는 경우가 있습니다. 11g, 12c 버전에서 테스팅 작업을 해봤는데 undo_retention 기간이 지나도 해당 데이터가 읽히는 것을 확인했습니다. 이는 OS 환경이나 버전에 따란 일종의 Oracle Bug와 비슷한 것이라고 봐야할 것 같습니다.
댓글0