最簡單的Oracle資料恢複 select as of使用方法_oracle

來源:互聯網
上載者:User

You perform a Flashback Query by using a SELECT statementwith an AS OF clause.You use a flashback query to restrieve data as it existed at some time in the past.The query explicitly references a past time by menasof timestamp or SCN.It returns committed data that was current at that point intime.
通過執行一個帶as of 子句的select語句進行閃回查詢,可以閃回檢索過去某個時間存在的資料,一個閃回查詢被用來重現過去存在過的資料,這個查詢明確的引用了過去的一個時間段或SCN號,閃回查詢返回的資料都是過去某時刻已經提交的資料。

Potential uses of Flashback Query include:
可能使用到閃回查詢的地方:
⊙Recovering lost data or undoing incorrect,committed changes.For example,if you mistakenly delete or update rows,and then commit them,you can immediately undo the mistake.
恢複丟失的資料或撤銷已經提交的錯誤。例如如果你不小心刪除或更新了行,並且做了提交操作,你可以立刻撤銷這個錯誤。
⊙Comparing current data with the corresponding data at some time in the past.For example,you might run a daily report that shows the change in data from yesterday.You can compare the individual rows of table data or find intersections or unions of sets of rows.
比較當前資料和曆史資料的一致性。例如,你可能需要產生一份前一天資料更新的日報告,你可以分別比較表的每一行或找到行的交集和並集。
⊙Checking the state of transactional data at a particular time.For example,you could verify the account balance of a certain day.
在某個特殊時間檢查事務型資料的狀態。例如,你可以在某一天驗證賬戶收支。
⊙Simplifying the application design,by removing the need to store some kinds of temporal data.By using a Flashback Query, you can retrieve past data directly from the database.
移除某些因需求儲存的暫時資料以簡化應用設計。通過閃回查詢你可以從資料庫中直接擷取到過去的資料。
⊙Applying the packaged applications such as report generation tools to past data.
使用封裝應用(例如報表產生工具)的曆史資料
⊙Providing self-service error correction for anapplication,thereby enabling users to undo and correct their errors.
為應用提供自服務錯誤更正,因此可以讓使用者撤銷或更正他們的錯誤。
 
樣本:
 
SQL> conn /as sysdba;
已串連。
SQL> set pagesize 200
SQL> select * from scott.dept;
 
    DEPTNO DNAME                        LOC
---------- ---------------------------- -------------------------
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                         CHICAGO
        40 OPERATIONS                   BOSTON
現在,我們來增加一條資料,並提交:
 
SQL> insert into scott.dept values(50,'錯誤資料','CHINA');
已建立 1 行。
 
SQL> select * from scott.dept;


    DEPTNO DNAME                        LOC
---------- ---------------------------- -------------------------
        10 ACCOUNTING               NEW YORK
        20 RESEARCH                 DALLAS
        30 SALES                         CHICAGO
        40 OPERATIONS               BOSTON
        50 錯誤資料                     CHINA
 
SQL> commit;(2011-12-9 10:51:00)


提交完成。
正常情況下,由於已經做了commit操作,所以rollback已經無效了,要想得到2011-12-9 10:51:00之前的資料,怎麼辦?
使用timestamp時間點閃回:
SQL> select * from scott.dept as of timestamp to_timestamp('2011-12-09 10:00:00','yyyy-mm-dd hh24:mi:ss');
 
    DEPTNO DNAME                        LOC
---------- ---------------------------- -------------------------
        10  ACCOUNTING                   NEW YORK
        20  RESEARCH                      DALLAS
        30  SALES                         CHICAGO
        40  OPERATIONS                   BOSTON
閃回查詢,主要依靠資料表空間的undo資料,如果想要追溯更久的資料,就需要設定較大的undo_tablespaces大小和undo_retention。
 
如果想直接更新當前的表到曆史的某個時間狀態,可以直接使用flashback關鍵字:
 
 
SQL> alter table scott.dept enable row movement;


表已更改。
 
SQL> flashback table scott.dept to timestamp to_timestamp('2011-12-09 10:00:00','yyyy-mm-dd hh24:mi:ss');


閃回完成。
 
【注意】:
閃回不是萬能的,當一個表的資料較大或時間過長時,如果沒有設定較大的閃回空間和時間,閃回操作將會失敗,可能會出現以下錯誤:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.