<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評論-209  文章-0  trackbacks-0

    上一回演示了運用閃回表查詢恢復delete刪除的數據以及其原理,今天了解下閃回表。

    原理:

      閃回表(Flashback table)與閃回查詢(Flashback query)的原理大致相同,也是利用undo信息來恢復表對象到以前的某一個時間點(一個快照),因此也要確保AUM有足夠的Retention值。但閃回表不等于閃回查詢,其區別如下:

    閃回查詢只是查詢以前的一個快照而已,并不改變當前表的狀態。

    閃回表則是將恢復當前表及附屬對象一起回到以前的時間點。

    特性:

    1.  在線操作

    2.  恢復到指定的時間點(或者SCN)的任何數據

    3.  自動恢復相關屬性

    4.  滿足分布式的一致性

    5.  數據的一致性,所有相關對象將自動一致。

    語法:

     SQL> flashback table tab_test to timestamp to_timestamp('2010-06-30 22:43:07', 'yyyy-mm-dd hh24:mi:ss');

     SQL> flashback table tab_test to scn 1154953;

     SQL> flashback table tab_test to timestamp to_timestamp('2010-06-30 22:43:07', 'yyyy-mm-dd hh24:mi:ss') enable triggers;

    運用閃回表前提

      1.普通用戶中需要有Flashback any table的系統權限。命令如:

      SQL>grant flashback any table to scott;

      2.有該表的select、insert、delete、alter權限。

      3.必須保證該表有row movement(行移動)。

    示例:

     1.創建tab_test表

    SQL> create table tab_test as select * from all_objects;

    Table created

    2.查詢tab_test表中數據量

    SQL> select count(*) from tab_test;

     COUNT(*)

    ----------

        40699

    3.為tab_test表創建索引和觸發器(觸發器為null,不做任何操作)

    SQL> create index ind_test on tab_test(object_name);

    Index created

    SQL> create or replace trigger tr_test

     2 after update on tab_test

     3 for each row

     4 begin

     5     null;

     6 

     7 end tr_test;

     8 /

    Trigger created

    4.記錄當時的時間點,試圖恢復到該時間點

    SQL> select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time, to_char(dbms_flashback.get_system_change_number) scn from dual;

    TIME               SCN

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

    2010-06-30 23:02:37 1160764

    5.刪除tab_test表中數據

    SQL> delete from tab_test;

    40699 rows deleted

    SQL> commit;

    Commit complete

    6.查詢刪除數據后的tab_test,確定其表中已沒有數據

    SQL> select count(*) from tab_test;

     COUNT(*)

    ----------

    7.刪除tab_test表中索引ind_test

    SQL> drop index ind_test;

    Index dropped

    8.更改tr_test觸發器

    SQL> create or replace trigger tr_test

     2 after insert on tab_test

     3 for each row

     4 begin

     5     null;

     6 

     7 end tr_test;

     8 /

    Trigger created

    9.確保該表中的行遷移(row movement)功能

    SQL> alter table tab_test enable row movement;

    Table altered

    10.恢復tab_test表到剛記錄的時間點(或scn),由于表中存在觸發器,因此使用了關鍵字enable triggers;

    SQL> flashback table tab_test to timestamp to_timestamp('2010-06-30 23:02:37', 'yyyy-mm-dd hh24:mi:ss') enable triggers;

    Done

    11.查看恢復結果如下:

    SQL> select count(*) from tab_test;

     COUNT(*)

    ----------

        40699

    SQL> select index_name from user_indexes where table_name = 'TAB_TEST';

    INDEX_NAME

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

    SQL> select object_name, status from user_objects where object_name in('TR_TEST', 'IND_TEST');

    OBJECT_NAME                                                                     STATUS

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

    TR_TEST            VALID

    SQL> set pages 0

    SQL> set lines 1000

    Cannot SET LINES

    SQL> set long 2000

    SQL> select text from user_source t where t.name = 'TR_TEST' order by line;

    trigger tr_test

    after insert on tab_test

    for each row

    begin

       null;

    end tr_test;

    總結:

    1. Flashback table在真正的高可用環境中,使用意義不大,受限比較多,要必須確保行遷移功能

    2. Flashback table過程中,阻止寫操作

    3. 表中數據能恢復,而表中索引確不能正常恢復

    4. 恢復的觸發器本身還是修改后的,并不隨表flashback到修改以前的時間點。說明關鍵字enable triggers只能保證觸發器的狀態正常,而不是內容回滾.

    5. 由于原理利用其undo信息,來恢復其對象,因此也是不能恢復truncate數據

    6. 恢復數據用flashback query實現比較好

    posted on 2010-08-04 20:39 xzc 閱讀(3086) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: www成人免费视频| 最近高清中文字幕无吗免费看| 亚洲人精品午夜射精日韩 | 亚洲熟妇无码爱v在线观看| aa级一级天堂片免费观看| 国产在亚洲线视频观看| 亚洲国产精华液网站w| 99久久综合国产精品免费| 美女又黄又免费的视频| 亚洲宅男永久在线| 日韩免费一级毛片| 中文在线免费看视频| 亚洲香蕉久久一区二区| 精品国产亚洲男女在线线电影| 免费观看国产网址你懂的| 欧美亚洲精品一区二区| 亚洲国产精品久久| 免费人成激情视频| www.免费在线观看| 久久性生大片免费观看性| 亚洲人成人77777网站不卡| 亚洲一区二区三区免费| 9久9久女女免费精品视频在线观看 | 亚洲一区二区三区免费在线观看 | 国产免费久久精品| 91精品国产免费久久国语蜜臀| 精品女同一区二区三区免费播放 | 美女露隐私全部免费直播| 亚洲AV人人澡人人爽人人夜夜 | 亚洲国产成人精品无码一区二区| 亚洲国产成人久久精品99 | 久久久久亚洲av无码尤物| 免费在线一级毛片| 成人免费毛片内射美女-百度| 国产情侣久久久久aⅴ免费| 国产亚洲精品91| 亚洲第一综合天堂另类专| 亚洲理论在线观看| 亚洲成人精品久久| 亚洲一级黄色视频| 国产免费一区二区三区VR|