標籤:move 命名 hba 條件 alt 建表 color 進入 插入
為了使資料庫能夠從任何邏輯錯誤中迅速恢複,oracle推出了閃回技術。採用該技術,可以對行級和事物級的資料變化進行恢複,減少了資料恢複的時間,而且操作簡單。通過SQL語句就可以實現資料的恢複,大大提高了資料庫恢複的效率。閃回技術是資料庫恢複技術曆史上一次重大的進步,從根本上改變了資料恢複。
閃回技術包括以下各項:
閃回查詢:(FLASHBACK QUERY):查詢過去某個時間點或某個SCN值時表中的資料資訊
閃回版本查詢(FLASHBACK Version query):查詢過去某個時間段或某個SCN段內表中資料變化的情況。
閃回事物查詢(FLASHBACK Transaction Query):查看某個事物或所有事物在過去一段時間對資料進行的修改。
閃回資料庫(FLASHBACK Database):將資料庫恢複到過去某個時間點或某個SCN值時的狀態
閃回刪除(FLASHBACK drop):將已經刪除的表及其關聯的對象恢複到刪除前的狀態。
閃回表(FLASHBACK table):將表恢複到過去的某個時間點或某個SCN值時的狀態。
SCN是當oracle資料庫更新後,有DBMS自動維護而累積遞增的一個數字。可以通過查詢資料字典V$DATABASE中的CURRENT_SCN獲得當前的SCN號。
閃回恢複區的含義
oracle推薦指定一個閃回恢複區(FLASHRECOVERY AERA)作為存放備份與恢複相關的預設位置,這樣ORACLE就可以實現自動的基於磁碟的備份與恢複。閃回恢複區是一塊用來儲存恢複相關的檔案的儲存空間,允許使用者集中儲存所有恢複相關的檔案。以下幾種檔案可以存放在閃回恢複區。
控制檔案
歸檔記錄檔
閃回日誌
控制檔案和SPFILE自動備份
RMAN備份組
資料檔案拷貝
閃回恢複區主要通過以下3個初始化參數來設定和管理
db_recovery_file_dest:指定閃回恢複區的位置
db_recovery_file_dest_size:指定閃回恢複區的可用空間
db_flashback_retention_target:該參數用來控制閃回日誌中資料保留的時間,或者說,希望閃回資料庫能夠恢複到的最早的時間點。單位為min,預設是1440min,即一天。當然實際上可回退的時間還取決於閃回恢複區的大小,因為裡面儲存了回退所需要的閃回日誌,所以這個參數要和db_recovery_file_dest_size配合修改。
如果要撤銷閃回恢複區,把初始化參數DB_RECOVERY_FILE_DEST的值清空。
db_recovery_file_dest_size只有在DB_RECOVERY_FILE_DEST清空之後才可以清空
設定閃回資料庫
設定了閃回恢複區,要啟動閃回資料庫功能,還需要進一步配置,資料必須處于歸檔模式,在設定閃回資料庫
資料庫已經處于歸檔模式:
資料庫未啟用閃回資料庫
建立閃回地區
設定閃回資料庫的資料保留周期為一天以min為單位
啟用閃回日誌
查詢是否成功啟用閃回恢複區
查詢是否成功啟用閃回資料庫
閃回資料庫
閃回資料庫能夠使資料迅速的復原到以前的某個時間點或者某個SCN上,這對資料庫從邏輯錯誤中恢複特別有用。而且也是大多數發生邏輯損壞時恢複資料庫最佳的選擇。
使用SCN閃回資料庫
查看資料庫系統當前SCN
改變資料庫目前狀態,類比建立表TEST10,並插入一條記錄
進行閃回資料庫恢複,將資料庫恢複到建立表之前的狀態,即SCN為1238544
用RESETLOGS選項開啟資料庫
驗證資料庫的狀態,TEST10表不存在。
查詢資料庫中當前最早的閃回SCN和時間
按照指定時間閃回資料庫
查詢資料庫中目前時間和當前SCN
改變資料庫的目前狀態,類比建立表test11,並插入1條記錄
進行閃回資料庫恢複,將資料庫恢複到建立表之前的狀態。
使用RESETLOGS開啟資料庫
驗證資料庫的狀態test11表是否存在。
閃回資料庫操作的限制:
資料檔案損壞或丟失等介質故障不能使用閃回資料庫進行恢複。閃回資料庫只能基於當前正常啟動並執行資料檔案
閃回資料庫功能啟動後,如果發生資料控制檔案重建或利用備份恢複控制檔案,則不能使用閃回資料庫
不能使用閃回資料庫進行資料檔案收縮操作
不能使用閃回資料庫將資料庫恢複到在閃回日誌中可獲得的最早的SCN之前的SCN,因為閃回記錄檔在一定的條件下被刪除,而不是始終儲存在閃回恢複區中
閃回表
閃回表是將表恢複到過去的某個時間點或者指定的SCN而不用恢複資料檔案,為DBA提供了一種線上、快速、便捷的恢複方式,可以恢複對錶進行的修改、刪除、插入等錯誤的操作。
利用閃回表技術恢複表中的資料的過程,實際上是對錶進行DML操作的過程。oracle自動維護與表相關聯的索引、觸發器、約束等。
為了使用資料庫閃回功能,必須滿足下列條件
使用者具有FALSHBACKANY TABLE系統許可權,或者具有所動作表的FLASHBACK對象許可權
使用者具有所動作表的SELECT/INSERT/DELETE/ALTER對象許可權
啟動被動作表的ROW MOVEMENT特性,可以採用下列方式進行:
SQL> ALTER TABLE 表名 ENABLE ROWMOVEMENT;
閃回表文法格式:
FLASHBACK TABLE [schema].table TO SCN |TIMESTAMP expression [ENABLE|DISABLE TRIGGERS]
參數說明:
SCN:將表恢複到指定的SCN時的狀態
TIMESTAMP:將表恢複到指定額時間點
ENABLE|DISABLETRIGGERS:在恢複表中資料的過程中,表上的觸發器時禁用還是啟用(預設是引用)
舉例說明:
使用SCOTT使用者登入
建立表,插入記錄,提交事物
查詢當前SCN號,如果目前使用者沒有許可權查詢v$database,則以sys使用者登入,授予目前使用者訪問資料字典的許可權。
更新記錄,並提交事物
查看錶中的記錄
刪除ID=3的記錄
啟動test01表的ROW MOVEMENT特性
將test01表恢複到2015-11-22 05:44:48時刻的狀態
將test01表恢複到SCN為1240503的狀態。
閃回刪除
閃回刪除可以恢複使用DROP table語句刪除的表,是一種對意外刪除的表恢複機制。閃回刪除的功能的實現主要是通過oracle資料庫中的“資源回收筒”技術實現的。在oracle資料庫中,當執行DROP table操作時,並不立即收回表及其關聯對象的空間,而是將他們重新命名後放入一個稱為“資源回收筒”的邏輯容器中儲存,直到使用者決定永久刪除他們或儲存該表的資料表空間或儲存空間不足時,表才真正被刪除,為了使用資料庫的閃回刪除技術,必須開啟資料庫的“資源回收筒”
啟動“資源回收筒”將參數RECYCLEBIN設定為ON,在預設情況下“資源回收筒”已經啟動
如果沒有啟動可以使用:
查看資源回收筒。當執行DROP table 時,表及關聯的對象被命名後儲存在“資源回收筒”中,可以通過查詢USER_RECYCLEBIN DBA_RECYCLEBIN視圖獲得被刪除的表及其關聯對象。
通過USER_RECYCLEBIN查看被刪除的表
不支援sys使用者和system使用者,這兩個使用者下的表被刪除之後,無法從資源回收筒裡拿到,查詢時為“空”
如果刪除表的時候使用了PURGE短語,則表及其關聯對象唄直接釋放,空間被回收,相關資訊不會進入“資源回收筒”中
清空資源回收筒,由於被刪除的表級其關聯對象資訊儲存在“資源回收筒”中,其儲存空間並沒有釋放,因此需要定期清空“資源回收筒”。或清除“資源回收筒”中沒有用的對象(表,索引,資料表空間)釋放其所佔用的磁碟空間
文法如下:
PURGE [TABLE 表名 | INDEX index]
[RECYCLEBIN | DBA_RECYCLEBIN] | [TABLESPACEtablespace [USER user]]
參數說明:
TABLE:從資源回收筒中清除指定的表
INDEX:從資源回收筒中清除指定的索引,並回收其磁碟空間
RECYCLEBIN:清空使用者“資源回收筒”,並回收所有對象的磁碟空間
DBA_RECYCLEBIN:清空整個資料庫系統的“資源回收筒”,只有具有SYSDBA許可權的使用者才可以使用
TABLESPACE :清除“資源回收筒”中指定額資料表空間,並回收磁碟空間
USER:清除資源回收筒中指定資料表空間中特定使用者的對象,並回收磁碟空間
閃回刪除操作,閃回刪除的基本文法
FLASHBACK TABLE [schema.]table to BEFOREDROP [RENAME TO table]
閃回刪除
閃回刪除舉例說明:
需要注意:只有本地管理的,非系統資料表空間中的表可以使用閃回刪除操作。
閃回查詢
允許根據時間點timestamp或SCN查看就的資料,除了可以查看舊資料,需要時可以通過檢索舊資料來撤銷錯誤的更改。
使用SCOTT使用者登入,對EMP表基於AS of TIMESTAMP的閃回查詢
SQL> show user;
USER is "SCOTT"
更新員工號為7900的工資,更新為2000,並提交事物
更新員工號為7900的工資,更新兩次,提交事物。
更新員工號為7900的工資,更新為3500,並提交事物
查看7900號員工的更新後工資。
查詢7900號員工前一個小時的工資是多少
查詢第一個事物提交,第二個事物還沒有提交時7900員工的工資
查詢第二個事物提交,第三個事物還沒有提交時的7900號員工的工資
如果需要,可以將資料恢複到過去某個時刻的狀態。
如果對此有興趣,請掃下面二維碼免費擷取更多詳情
Oracle 11g R2 閃回技術