天天看點

閃回資料歸檔的實驗-oracle total recall

閃回資料歸檔:oracle total recall ORACLE全面回憶功能。

ORACLE 11G提供的新功能。

通過這一功能ORACLE将UNDO資料進行歸檔,進而提供全面的曆史資料查詢。

類似歸檔日志,11G新增的背景程序FBDA(flashback data archiver process)用于對閃回資料進行歸檔寫出。

ORACLE可以指定閃回歸檔資料儲存時間,并可以通過内部分區和壓縮算法減少空間使用。

閃回資料歸檔需要獨立的存儲,使用此特性前需要建立獨立的ASSM表空間。

DDL不允許使用在被FBDA跟蹤的table上(add column,rename和grant可以)。

開始實驗:

1.建立FBDA程序所需表空間-FLASH BACK DATA ARCHIVE-閃回資料歸檔

21:44:32 SQL> create tablespace bys_flashback datafile '/u01/app/oracle/oradata/bys001/bys_flashback.dbf' size 10m autoextend off;

Tablespace created.

21:45:35 SQL> show user

USER is "SYS"

Default的FBDA需要用sysdba登陸才能建立, 并且隻能有一個Default的FBDA

21:45:39 SQL> create flashback archive default fbda1 tablespace bys_flashback retention 7 day;

Flashback archive created.

21:46:36 SQL> create flashback archive fbda2 tablespace bys_flashback quota 7m retention 10 day;

Flashback archive created.

2.建立表并指定閃回歸檔屬性,記錄DML操作前後SCN

21:47:52 SQL> conn bys/bys

Connected.

21:49:54 SQL> create table test6(abc varchar2(9)) flashback archive;

Table created.

對已經存在的表改變或取消表的閃回歸檔可以使用

alter table test6  flashback archive fbda2;-- 網上查的,建立的閃回歸檔表名?

alter table test6 no flashback archive;

插入資料,省略示範。

21:51:27 SQL> select * from test6;

ABC

---------

1

2

3

21:51:32 SQL> select current_scn from v$database;

CURRENT_SCN

-----------

    1372223

21:51:44 SQL> delete from test6 where abc=3;

1 row deleted.

21:52:12 SQL> commit;

Commit complete.

21:52:14 SQL> host   這裡的ALERT日志是從TRACE目錄下源ALERT日志上做一個軟連結,友善檢視日志。

aa.t              back1.sh                 Desktop

alert_bys001.log  back2-20130623-1144.log  fullback.sh

archback.sh       back2.sh                 rmanlog

back0.sh          cumulative

3.從alert日志中檢視閃回歸檔表空間的建立及FBDA程序的啟動

[[email protected] ~]$ tail alert_bys001.log

SUPLOG:  unique = OFF, foreign key = OFF, all column = OFF

SUPLOG:  procedural replication = OFF

Completed: alter database add supplemental log data

Sun Jun 23 21:45:33 2013

create tablespace bys_flashback datafile '/u01/app/oracle/oradata/bys001/bys_flashback.dbf' size 10m autoextend off

Completed: create tablespace bys_flashback datafile '/u01/app/oracle/oradata/bys001/bys_flashback.dbf' size 10m autoextend off

Sun Jun 23 21:46:36 2013

Starting background process FBDA

Sun Jun 23 21:46:36 2013

FBDA started with pid=33, OS id=3961

[[email protected] ~]$ exit

exit

21:54:08 SQL> show parameter undo

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      UNDOTBS1

21:56:08 SQL> col name for a40

21:56:20 SQL> select file#,name from v$datafile where name like '%test%';

     FILE# NAME

---------- ----------------------------------------

         7 /u01/app/oracle/oradata/bys001/test1_undo.dbf

未使用此句:

drop tablespace undotbs1 including contents and datafiles;

4.使用一個空間較小的UNDO表空間,友善實驗。

21:56:21 SQL> alter system set undo_tablespace='test1_undo';

System altered.

21:58:12 SQL> show parameter undo

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

undo_management                      string      AUTO

undo_retention                       integer     900

undo_tablespace                      string      test1_undo

清除緩沖區資料

21:58:19 SQL> alter system flush buffer_cache;

System altered.

22:00:55 SQL> select * from test6;

ABC

---------

1

2

22:02:59 SQL> set autotrace on explain

5.通過執行計劃可以看到查詢來自SYS_FBA_TCRV_75320,這是屬于閃回歸檔表空間用于記錄閃回資料。

22:03:14 SQL> select * from test6 as of scn 1372223;

ABC

---------

3

1

2

Execution Plan

----------------------------------------------------------

Plan hash value: 2569713660

--------------------------------------------------------------------------------

-------------------------------

| Id  | Operation                | Name               | Rows  | Bytes | Cost (%C

PU)| Time     | Pstart| Pstop |

--------------------------------------------------------------------------------

-------------------------------

|   0 | SELECT STATEMENT         |                    |     5 |    30 |     9  (

12)| 00:00:01 |       |       |

|   1 |  VIEW                    |                    |     5 |    30 |     9  (

12)| 00:00:01 |       |       |

|   2 |   UNION-ALL              |                    |       |       |

   |          |       |       |

|   3 |    PARTITION RANGE SINGLE|                    |     1 |    32 |     3

(0)| 00:00:01 |     1 |     1 |

|*  4 |     TABLE ACCESS FULL    | SYS_FBA_HIST_75320 |     1 |    32 |     3

(0)| 00:00:01 |     1 |     1 |

|*  5 |    FILTER                |                    |       |       |

   |          |       |       |

|*  6 |     HASH JOIN OUTER      |                    |     4 |  8184 |     6  (

17)| 00:00:01 |       |       |

|*  7 |      TABLE ACCESS FULL   | TEST6              |     4 |    72 |     2

(0)| 00:00:01 |       |       |

|*  8 |      TABLE ACCESS FULL   | SYS_FBA_TCRV_75320 |     3 |  6084 |     3

(0)| 00:00:01 |       |       |

--------------------------------------------------------------------------------

-------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

   4 - filter("ENDSCN">1372223 AND "ENDSCN"<=1372730 AND ("STARTSCN" IS NULL OR

"STARTSCN"<=1372223))

   5 - filter("STARTSCN"<=1372223 OR "STARTSCN" IS NULL)

   6 - access("T".ROWID=CHARTOROWID("RID"(+)))

   7 - filter("T"."VERSIONS_STARTSCN" IS NULL)

   8 - filter(("ENDSCN"(+) IS NULL OR "ENDSCN"(+)>1372730) AND ("STARTSCN"(+) IS

NULL OR

              "STARTSCN"(+)<1372730))

Note

-----

   - dynamic sampling used for this statement (level=2)