程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracle閃回表詳解

oracle閃回表詳解

編輯:Oracle教程

--- 說明閃回數據庫

--- 使用閃回表將表內容還原到過去的特定時間點

--- 從刪除表中進行恢復

--- 使用閃回查詢查看截止到任一時間點的數據庫內容

--- 使用閃回版本查詢查看某一行在一段時間內的各個版本

--- 使用閃回事務查詢查看事務處理歷史記錄或行

優點:

閃回技術由於只能處理更改數據,所以從根本上改變了恢復技術。使用這個技術時,從錯誤中恢復花費的時間等於制造錯誤所花費的時間。當閃回技術使用時,它與介質恢復相比,在易用性、可用性和還原時間方面有明顯的優勢。

閃回數據庫使用閃回日志執行閃回。閃回刪除使用回收站。其他所有功能都使用還原數據。

 

\

閃回表 -----使用這個功能時,會還原表及其關聯對象(如索引、約束條件、觸發器等)中的數據。

所謂閃回表,就是將表裡的數據回退到歷史的某個時間點,比如回退到用戶誤刪除數據之前的時間點,從而將誤刪除的數據恢復回來,在這個操作過程中,數據庫仍然可用而且不需要額外的空間。

閃回表利用的是UNDO表空間裡記錄的數據被改變前的值,因此,如果閃回表時所需要的undo數據,由於保留時間超過了初始化參數undo_retention所指定的值,從而導致該undo數據庫數據被其他事務覆蓋的話,那麼就不能恢復到指定的時間了,除非在UNDO表空間上指定了retention guarantee選項。

使用閃回表,可將一組表恢復到特定的時間點,而不需要執行傳統時間點恢復操作。

在數據庫聯機時,通過只回退對指定表及其相關對象所做的更改,閃回表操作可原位完成。

閃回表語句可作為單個事務處理來執行。必須成功閃回所有表,否則會回退整個事務處理。

· 使用閃回表,可將一個或多個表恢復到特定的時間點,而不需要還原備份

· 從回滾段表空間檢索數據後可執行閃回表操作

· 執行閃回表操作需要FLASHBACK TABLE 權限

· 必須對要執行閃回操作的表啟動行移動

//由於閃回表的操作會修改表裡的數據,從而有可能引起數據行的移動。比如某一行數據當前在A數據塊裡,而在把表閃回到以前的某個時間點時,在那個時間上,該行數據位於B數據塊裡,於是在閃回表的操作中,數據行從當前A數據塊轉移到B數據塊,因此在閃回表之前,必須啟動數據行移動特性。

閃回表:注意事項

· 整個FLASHBACK TABLE 語句是在一個事務處理中執行的。有可能會閃回所指定表,也可能不閃回任何指定表。

· 操作進行中,閃回表獲取了該語句指定的所有表上的數據操作語言(DML)互斥鎖。

· 不會閃回受影響對象的統計信息。(該對象的統計信息不會閃回)

· 會保留所有現有的索引。不會重新創建刪除的索引。還會自動保留相關的提交時實體化視圖。

· FLASHBACK TABLE 語句會寫入預警日志文件。

· 只要不違反任何表約束條件,就閃回FLASHBACK TABLE 語句中指定的表。如果在閃回執行期間違反了任何約束條件,則會中止操作,此時表的狀態與FLASHBACK TABLE語句調用之前的狀態相同。

· (閃回不能跨DDL,比如,在閃回數據之前,做過刪除一個字段的操作,那麼是無法閃回的。)不能將表閃回到早於執行數據定義語言(DDL)操作時的某個特定時間。

· 不能對系統表、遠程表和固定表執行閃回表操作。

1. 實驗:閃回表用法

SYS@ORCL>conn tyger/tyger
Connected.
TYGER@ORCL>create table tyger as select * from scott.emp;


Table created.


TYGER@ORCL>select count(*) from tyger;


COUNT(*)
----------
14


TYGER@ORCL>select dbms_flashback.get_system_change_number from dual; //查看當前系統SCN


GET_SYSTEM_CHANGE_NUMBER
------------------------
1045621


TYGER@ORCL>delete from tyger where rownum <5;


4 rows deleted.


TYGER@ORCL>commit;


Commit complete.


TYGER@ORCL>select count(*) from tyger;


COUNT(*)
----------
10


TYGER@ORCL>alter table tyger enable row movement; //啟用表tyger的行移動


Table altered.


TYGER@ORCL>flashback table tyger to scn 1045621;


Flashback complete.


TYGER@ORCL>select count(*) from tyger;


COUNT(*)
----------
14


TYGER@ORCL>

關於閃回數據庫詳解:http://blog.csdn.net/wanghui5767260/article/details/20993843

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved