• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計

            最新評論

            oracle 10g flashback(閃回) 學(xué)習筆記

            flashback:即回閃,是從oracle9i就開始提出的一種操作恢復(fù)的功能,在oracle10g中進行了增強和修改,通過回閃,用戶可以完成許多不可能恢復(fù)的工作,目前oracle10g的回閃包括以下特性;

            1〉oracle falshback Database. 特性允許oracle通過Flashback database語句,將數(shù)據(jù)庫會滾到前一個時間點或者scn上,而不需要作時間點的恢復(fù)工作!
            2〉oracle falshback table. 特性允許oracle通過flashback table語句,將表會滾到前一個時間點或者scn上。
            3〉oracle falshback drop. 特性允許oracle把恢復(fù)drop掉的table或者索引。
            4〉oracle falshback version query. 特性可以得到特定的表在某一個時間段內(nèi)的任何修改記錄!
            5〉oracle falshback transaction query 特性可以限制用戶在某一個事務(wù)級別上檢查數(shù)據(jù)庫的修改操作,適用于診斷問題、分析性能、審計事務(wù)。

            一:oracle falshback table

            oracle flashback table即回閃表
            可以進行的操作:操作1>flashback table tablename to befor drop;
            對于誤drop的table此可以使用本操作,還原drop的table!
            此操作需要用戶有以下的權(quán)限:
            A:falshback any table的系統(tǒng)權(quán)限或者是某一個表的flashback權(quán)限。
            B:有table的select、insert、delect、alter權(quán)限。
            C:有table的row Movement權(quán)限
            SQL> set serveroutput on
            SQL> set time on
            11:24:37 SQL> set feadback off;
            11:24:59 SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            A1 TABLE
            A TABLE
            ----------------------
            可以看到本用戶下有table A,現(xiàn)在drop它;
            -----------------------
            11:25:01 SQL> drop table a;
            11:26:18 SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            BIN$dFFlS6jJQLShRwRQ+kLJMg==$0 TABLE
            A1 TABLE
            ----------------------
            table 已經(jīng)刪除,可以看到table并不是真正意義上的刪除掉了,而是多了一個"BIN$dFFlS6jJQLShRwRQ+kLJMg==$0"的表,這個表 是原來的A表,這是oracle的recyclebin,一個類似垃圾回收站的機制。當用戶刪除表以后把表放到recyclebin中,而不是刪除掉!
            ----------------------
            現(xiàn)在使用命令恢復(fù)表A
            11:26:29 SQL> flashback table a to before drop;
            11:30:45 SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            A1 TABLE
            A TABLE
            可以看到表A已經(jīng)恢復(fù)!

            可以進行的操作:操作2>flashback table tablename to scn/timestamp(a timestamp);
            此操作可以利用scn(在后面介紹)或者timestamp將table恢復(fù)到某一個時間點!
            -----給table row movement權(quán)限
            11:41:49 SQL> alter table a enable row movement;
            ----插入一條記錄
            11:44:16 SQL> insert into a values('www',11);
            11:45:15 SQL> commit;
            ----得到該記錄的scn:1576479
            11:45:20 SQL> select a.*,ora_rowscn from a;

            NAME AGE ORA_ROWSCN
            ---------- ---------- ----------
            500 65 1576479
            600 65 1576479
            111 10 1576479
            222 100 1576479
            333 30 1576479
            444 40 1576479
            555 50 1576479
            www 11 1576479
            888 34 1573035
            ---刪除一條記錄
            11:45:55 SQL> delete from a where name ='www';
            11:46:19 SQL> commit;
            ---利用scn命令恢復(fù)刪掉的紀錄!
            11:46:20 SQL> flashback table a to scn 1576479;
            11:46:49 SQL> select * from a;

            NAME AGE
            ---------- ----------
            500 65
            600 65
            111 10
            222 100
            333 30
            444 40
            555 50
            www 11
            888 34
            ---利用timestamp命令恢復(fù)刪掉的紀錄!
            11:46:54 SQL> flashback table a to timestamp to_timestamp('2007-04-27 11:45:20','yyyy-mm-dd hh24:mi:ss');
            11:56:28 SQL> select * from a;

            NAME AGE
            ---------- ----------
            500 65
            600 65
            111 10
            222 100
            333 30
            444 40
            555 50
            888 34
            附:--關(guān)于scn的介紹:
            SCN:system change numbers,oracle10g的每一個表都有ora_rowscn列!但是desc是看不到改列的。
            可以通過select ora_rowscn from table 得到每一條結(jié)果集當前的SCN,timestamp_to_scn()將scn轉(zhuǎn)換到stmestamp;scn_to_timestamp()將timestamp轉(zhuǎn)換到scn。
            二:flashback drop
            利 用flashback drop oracle10g可以對DDL操作進行恢復(fù),oracla提供類似回收站的recyclebin來收集被刪除的對象,其實對象在刪除的時候oracle 把對象寫到一個數(shù)據(jù)字典表中,當用戶不需要該對象的時候,可以利用purge命令來從回收站進行清除。
            --察看用戶下所有表
            SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            SYS_TEMP_FBT TABLE
            A1 TABLE
            A TABLE

            Executed in 0.078 seconds
            --drop 表A1
            SQL> drop table a1;

            Executed in 0.047 seconds
            --再察看此時用戶所擁有的所有表;
            SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            SYS_TEMP_FBT TABLE
            A TABLE
            BIN$fPHKLxsBTBq6+bjBLPEJaw==$0 TABLE

            Executed in 0.078 seconds

            --如上可以看到A1表drop的同時,當前用戶下又產(chǎn)生了一個以BIN開頭的新表BIN$fPHKLxsBTBq6+bjBLPEJaw==$0,這就是原來的A1表
            SQL> set timing off
            SQL> set time on
            14:25:40 SQL> select t.object_name,t.original_name from recyclebin t;

            OBJECT_NAME ORIGINAL_NAME
            ------------------------------ --------------------------------
            BIN$fPHKLxsBTBq6+bjBLPEJaw==$0 A1
            ---采用flashback table命令恢復(fù)剛才刪除的表A1
            14:29:45 SQL> flashback table a1 to before drop;
            14:29:49 SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            SYS_TEMP_FBT TABLE
            A1 TABLE
            A TABLE
            --當用戶確實不需要該對象時候,可以采用pruge來徹底刪除改對象
            14:29:55 SQL> drop table a1;
            14:31:13 SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            SYS_TEMP_FBT TABLE
            A TABLE
            BIN$N+i42FTvSSemvMrH6frCQg==$0 TABLE

            14:31:32 SQL> purge table "BIN$N+i42FTvSSemvMrH6frCQg==$0";
            14:31:49 SQL> select * from tab;

            TNAME TABTYPE CLUSTERID
            ------------------------------ ------- ----------
            B TABLE
            STEST TABLE
            TA TABLE
            GROUPINGTEST TABLE
            COLTABLE TABLE
            ROWTABLE TABLE
            COLTABLE1 TABLE
            ROWTABLE1 TABLE
            SYS_TEMP_FBT TABLE
            A TABLE
            --用purge命令收站想清空回收站里的別的表
            14:31:56 SQL> purge recyclebin;
            14:34:02 SQL> select object_name from recyclebin;

            OBJECT_NAME
            ------------------------------
            三:oracle falshback version query--閃回版本查詢
            oracle10g falshback 能將所有做了提交的行進行記錄,就類似于審計的功能,通過falshback可以查詢什么時候執(zhí)行了什么操作,非常方便,包括閃回版本的查詢和審計等。
            1〉閃回版本的查詢
            14:41:22 SQL> insert into a values('zhao',24);
            14:42:01 SQL> commit;
            --查詢當前版本
            14:34:45 SQL> select a.*,ora_rowscn from a;

            NAME AGE ORA_ROWSCN
            ---------- ---------- ----------
            500 65 1577059
            600 65 1577059
            111 10 1577059
            222 100 1577059
            333 30 1577059
            444 40 1577059
            555 50 1577059
            888 34 1573035

            14:41:22 SQL> insert into a values('zhao',24);
            14:42:01 SQL> commit;
            14:42:03 SQL> select a.*,ora_rowscn from a;

            NAME AGE ORA_ROWSCN
            ---------- ---------- ----------
            500 65 1577059
            600 65 1577059
            111 10 1577059
            222 100 1577059
            333 30 1577059
            444 40 1577059
            555 50 1577059
            888 34 1573035
            zhao 24 1585133
            --A:利用scn查詢以前版本的記錄
            14:42:18 SQL> select * from a as of scn 1577059;

            NAME AGE
            ---------- ----------
            500 65
            600 65
            111 10
            222 100
            333 30
            444 40
            555 50
            888 34
            --B:利用timestamp查詢以前版本的記錄
            14:42:51 SQL> select * from a as of timestamp scn_to_timestamp(1577059);

            NAME AGE
            ---------- ----------
            500 65
            600 65
            111 10
            222 100
            333 30
            444 40
            555 50
            www 11
            888 34
            2〉審計的功能:
            14:50:06 SQL> select a.*,versions_operation,versions_xid,versions_starttime from a
            2 versions between timestamp minvalue and maxvalue;

            NAME AGE VERSIONS_OPERATION VERSIONS_XID VERSIONS_STARTTIME
            ---------- ---------- ------------------ ---------------- --------------------
            600 65
            111 10
            222 100
            333 30
            444 40
            555 50
            888 34
            zhao 24 I 0500110006030000 27-4月 -07 02.42.00 下午
            --可以看出 在27-4月 -07 02.42.00 下午 插入(I)了一條記錄

            14:50:53 SQL> a order byversions_starttime;
            14:51:23 SQL> run;

            NAME AGE VERSIONS_OPERATION VERSIONS_XID VERSIONS_STARTTIME
            ---------- ---------- ------------------ ---------------- ----------------------
            500 65
            600 65
            111 10
            222 100
            333 30
            444 40
            555 50
            888 34
            zhao 24 I 0500110006030000 27-4月 -07 02.42.00 下午
            四:oracle falshback transaction query回閃事務(wù)查詢
            oracle10回閃事務(wù)功能提供對過去某段時間內(nèi)所完成的事務(wù)的查詢和撤銷!
            14:59:56 SQL> select undo_sql,table_name from flashback_transaction_query x where x.table_owner=upper('zxt') and x.xid ='0500110006030000';

            UNDO_SQL TABLE_NAME
            -------------------------------------------------------------------------------- --------------
            delete from "ZXT"."A" where ROWID = 'AAANOsAAGAAAAMWAAA'; A
            --其中UNDO_SQL 就是當時對表A的DML操作;
            五:oracle falshback Database:閃回數(shù)據(jù)庫
            oracle10g提供數(shù)據(jù)庫級別的閃回,可以使整個數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)到某一個時間點或者SCN上!由于牽扯到數(shù)據(jù)庫的批量操作,這個方面的知識暫時無法研究了!

            posted on 2012-04-12 17:48 大龍 閱讀(289) 評論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久青草青青国产亚洲免观| 日产精品99久久久久久| 久久影院久久香蕉国产线看观看| 久久精品国产精品亚洲人人 | 久久精品国产99国产电影网| 久久精品国产福利国产秒| 青青青青久久精品国产h久久精品五福影院1421 | 天天躁日日躁狠狠久久| 色综合色天天久久婷婷基地| 亚洲精品无码久久久久AV麻豆| 久久精品人人做人人爽电影蜜月| 久久综合狠狠综合久久激情 | 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲va久久久噜噜噜久久狠狠 | 99久久国产亚洲高清观看2024| 亚洲а∨天堂久久精品9966| 99久久精品日本一区二区免费| 国产激情久久久久影院老熟女| 人妻无码αv中文字幕久久琪琪布| 日韩精品久久久久久| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 久久精品9988| 久久棈精品久久久久久噜噜| 久久久久国产| 国产综合成人久久大片91| 色8久久人人97超碰香蕉987| 欧美日韩精品久久免费| 一本一本久久a久久精品综合麻豆| 午夜不卡888久久| 99久久精品免费看国产| 99久久99久久久精品齐齐| 国产亚洲综合久久系列| 日产精品久久久久久久性色| 伊人久久大香线蕉av不变影院| 色妞色综合久久夜夜| 亚洲乱码中文字幕久久孕妇黑人| 亚洲性久久久影院| 亚洲va久久久噜噜噜久久| 色欲久久久天天天综合网| 国产精品免费看久久久| 久久综合欧美成人|