Flashback이란?

사용자 실수(논리적 장래)에 의한 손상된 데이터를 Database의 크기와 상관없이 복구를 할수 있는기능이다


△ 9i : Flashback query 

△ 10g : Flashback Database 

          Flashback Drop 

          Flashback Version Query 

          Flashback Transaction Query 

          Flashback Table

△ 11g : Flashback Data Archive


※Oracle Flashback Feature는 10g Standard Edition에서는 지원하지 않는다. 



Flashback Technologies

 Flashback Operation

 Implementation

 Flashback Database

 Flashback logs + Redo logs

 Flashback Drop

 Recycle bin

 Flashback Version Query

 Undo

 Flashback Transaction Query

 Undo

 Flashback Table

 Undo

 Flashback Data Archive

 Flashback archive



Flashback Database를 수행하기 위한 3가지 구성요소 

1. Archive Mode 

Flashback Database 기능을 적용하기 위해서는 Archive Mode로 설정하여야 한다. 

2. Flashback Log File 

Flashback Log File은 오라클 Database를 구성하는 Block(변경되기 이전의 이미지 Block)을 저장하는 로그 파일로서 10g에서 새롭게 소개되고 있는 데이터베이스 복구영역(database recovery area)에 생성되어진다. 

기존의 redo log와의 차이점 

- redo log의 경우에는 archive할 수 있는 기능이 함께 제공되었지만, Flashback Log는 archive 기능이 따로 제공될 필요가 없다.(db_recovery_file_dest, db_recovery_file_dest_size) 

- Flashback Log의 경우에는 물리적인 database 복구에는 사용될수 없다는 점이다. 

3. RVWR 

Background Process Flashback Database 기능이 활성화 되어지면, rvwr이라는 background process가 시작된다.


자세한 내용은 첨부된 파일 참조


006_Flashback data archive_유현재.pdf



Flashback Version Query 이용시 사용하는 가상칼럼

○ versions_startscn : 트랜잭션이 COMMIT 시 SCN즉, 해당 데이터의 버전이 시작될 때 SCN 값

 versions_endscn : 해당 버젼의 유효성이 상실된 SCN

 versions_starttime : 트랜잭션이 COMMIT 시 datetime

 versions_endtime : 해당 버젼이 유효한 최종 datetime

 versions_XID : 해당 데이터의 버전을 생성한트랜잭션-ID

 versions_operation : 해당 트랜잭션의 DML 작업 종류

(U: update, D: delete, I: insert)



Flashback Data Archive

오라클 11g 부터는 마치 Online Redo log 를 Archive 하듯이 Undo Segment 에 있는 commit 된 내용을 특정 테이블 스페이스에 Archive 하여 영구적으로 저장하는 기능을 제공하는데 이것을 Flashback Data Archive(FBDA) 라고 한다. 

FBDA -> undo segment의 내용을 비정기적으로 특정 테이블 스페이스에 저장하는 백그라운드 프로세스



Flashback Data Archive 특징

1. FBDA가 undo segment를 모두 기록하기 전에는 해당 undo segment 재활용되지 않음

2. 최대 10개까지의 FBDA 백그라운드 프로세스 동시에 작업 - 대량의 DML 시 병목현상 방지

3. FBDA 프로세스는 sleep 하고 있다가 특정 시간이 되면 자동으로 활성화 되어 undo segment의 내용을 저장함

   undo의 양이 많을 경우 자주 내려쓰게 되며 기본값은 5분.

4. 해당 데이터는 자동 파티셔닝 되어 저장. 관리자라도 그 내용을 변경할수 없다.

5. Retention time 을 설정하여 데이터를 관리. Retention time 이 지난 데이터는 자동으로 삭제

6. Inset 되는 데이터는 이 기능 사용 안함



<지원하는 DDL>

- Adds | drops | renames | modifies a Column

- Adds | drops | renames a Constraint

- Drop | Truncates a Partition or Sub partition

- TRUNCATE TABLE

- RENAME TABLE

- PARTITION OR SUB PARTITION


<지원하지 않는 DDL>

- 파티션이나 서브파티션을 변경하는 ALTER TABLE 구문

- DROP TABLE


11g R1 과 11g R2에서 지원되는 DDL 차이

 

 11g R1

11g R2 

Truncate 

Alter table

Drop






'OraclE' 카테고리의 다른 글

Auditing Enhancements (aud$ 테이블 관리)  (0) 2016.04.11
dbms_scheduler 변경  (2) 2016.01.04
append 힌트 재대로 사용하시나요?  (0) 2015.03.30
object 변경시 dependency  (0) 2015.01.06
pid로 port 찾기 (lsof)  (0) 2014.09.17

[출처] http://www.cyworld.com/pistory314/2813122


[oracle@localhost ~]$ sqlplus "/as sysdba"                                   <<<sys사용자 접속

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Dec 2 09:03:46 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> startup mount                                          <<<DB mount단계실행(archive log가능상태)
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  1220988 bytes
Variable Size             364908164 bytes
Database Buffers          260046848 bytes
Redo Buffers                2969600 bytes
Database mounted.
SQL> archive log list                                                               <<<archive log리스트    
Database log mode              No Archive Mode                                                           <<<현재 log상태
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     67
Current log sequence           69

SQL> alter database archivelog;                                              <<<arvhive log상태 변경

Database altered.

*만약 alterdatabase archivelog; 명령시 아래 Err발생시

ORA-00265: instance recovery required, cannot set ARCHIVELOG mode

이 명령어 전에 shutdown abort를 하였을 경우이다. 따라서 shutdown immediate/normal을 하여 startup을 정상적으로 시켜서 SMON이 복구를 하여 open이 된 후, 다시 shutdown - startup mount하여 alterdatabase archivelog;할 것

SQL> archive log list                                                                      <<<변경확인
'Database log mode             Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     67
Next log sequence to archive   69
Current log sequence           69


SQL> show parameter db_flashback                                               <<<flashback파라미터

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440
SQL> alter system set db_flashback_retention_target=2880;             <<<flashback저장시간변경

System altered.

SQL> alter database flashback on;                                              <<<flashback작동

Database altered.

SQL> alter database open;                                                            <<<DB open

Database altered.

SQL> conn hr/hr                                                                         <<<hr사용자 접속
Connected.
SQL> create table dem_dept_80                                        <<<table생성(flashback지점생성)
  2  as select * from employees where department_id=80;

Table created.

SQL> conn /as sysdba                                                    <<<sys사용자 접속
Connected.
SQL> select current_scn                                                           <<<scn정보확인
  2  from v$database;

CURRENT_SCN
-----------
    4023682

SQL> drop table hr.dem_dept_80;                                          <<<hr사용자 테이블 삭제

SQL> select current_scn                                                       <<<scn확인(flashback발생)
  2  from v$database;

CURRENT_SCN
-----------
    4023712

SQL> shut immediate                                                          <<<DB정상종료
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount                                                             <<<DB mount
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  1220988 bytes
Variable Size             364908164 bytes
Database Buffers          260046848 bytes
Redo Buffers                2969600 bytes
Database mounted.
SQL> flashback database to scn 4023682;                             <<flashback scn지점으로 복원

Flashback complete.

SQL> alter database open read only;                                     <<<DB open

Database altered.

SQL> shut immediate                                                             <<<DB정상종료
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount                                                                <<<DB mount
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  1220988 bytes
Variable Size             364908164 bytes
Database Buffers          260046848 bytes
Redo Buffers                2969600 bytes
archive log Database mounted.
SQL> archive log list                                                             <<<리스트
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     67
Next log sequence to archive   69
Current log sequence           69
SQL> alter database open resetlogs;                                             <<<로그정보 reset

Database altered.

SQL> archive log list                                                                
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     0
Next log sequence to archive   1
Current log sequence           1
SQL> shut immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  629145600 bytes
Fixed Size                  1220988 bytes
Variable Size             369102468 bytes
Database Buffers          255852544 bytes
Redo Buffers                2969600 bytes
Database mounted.

SQL> alter database flashback off;                               <<<flshback끄기(작업후 꼭 끄기)

Database altered.

SQL> alter database open;                                         <<<DB open

Database altered.

SQL>

+ Recent posts