1. 程式人生 > >Oracle的“回收站”-快閃恢復區

Oracle的“回收站”-快閃恢復區

快閃恢復 Oracle回收站 張晨

一、閃回技術
為了使數據庫能夠從任何邏輯誤操作中迅速恢復,oracle退出了閃回技術。采用該技術,可以對行級和事務級的數據變化進行恢復,減少了數據恢復的時間,而且操作簡單,通過sql語句就可以實現數據的恢復,大大提高了數據庫恢復的效率。閃回技術是數據庫恢復技術歷史上一次重大的進步,從根本上改變了數據恢復。

技術分享圖片
閃回技術包括以下各項:
1)閃回查詢(flashback query):查詢過去某個時間點或某個SCN(system change number,系統更改號)值時表中的數據信息。
2)閃回版本查詢(flashback version query):查詢過去某個時間段或某個SCN段內表中數據的變化情況。

3)閃回事務查詢(flashback transaction query):查看某個事務或所有事務在過去一段時間對數據進行的修改。
4)閃回數據庫(flashback database):將數據庫恢復到過去某個時間點或某個SCN值時的狀態。
5)閃回刪除(flashback drop):將已經刪除的表及相關聯的對象恢復到刪除前的狀態,利用回收站進行工作
技術分享圖片
6)閃回表(flashback table):將表恢復到過去的某個時間點或某個SCN值時的狀態。
##SCN:當Oracle數據庫更新時,由DBMS自動維護而積累遞增的一個數字。每一個SCN標識這一個數據庫的狀態。

具體的閃回技術表:
技術分享圖片

二、閃回恢復區

Oracle使用閃回恢復區作為存放備份和恢復相關文件的默認位置。本質上相當於將所有的數據copy一份存儲起來。但是他的存儲會根據時間點和SCN進行標識,所有可以做到秒級的閃回整個數據庫的數據。

閃回區主要存放的文件:
1)控制文件
2)歸檔日誌文件
3)閃回日誌
4)控制文件和SPFILE自動備份
5)RMAN的備份
6)數據文件的備份

閃回區大小的設置和管理
1)db_recovery_life_dest:指定閃回區的位置
2)db_recovery_file_dest_size:指定閃回區的空間
3)db_flashback_retention_target:控制閃回日誌中數據保留的時間

三、操作
建立閃回區

shutdown immediate; :關閉數據庫
startup mount; :mount數據庫
alter database archivelog; :開啟歸檔模式
alter database flashback on; :開啟閃回日誌,關閉 時將該命令的on改為 off即可

alter database open; :open數據庫

alter system set db_recovery_life_dest=’/opt/oracle/flashrecovery
area’ scope=both;
alter system set db_recovery_life_dest_size=100G scope=both;
:建立Oracle閃回區, 指定大小為100G

alter system set db_flashback_retention_target=1440;
:設置數據保留的時間, 單位為s;這裏1440s 也就是1天

使用SCN閃回數據庫
shutdown immediate;
startup mount; :閃回操作都需要數據 庫在mount狀態下進行 操作(後面省略)
flashback database to scn 782541;
按照時間閃回數據庫
alter session set uls_data_format=’YYYY-MM-DD HH24:MI:SS’;
flashback database to timestamp (to_timestamp(‘2018-06-09 14-42-12),
’YYYY-MM-DD HH24:MI:SS’));

閃回表
flashback table t_name to timestamp/SCN [enable/disable triggers];
註釋[enable/disable triggers]:是可選項,是否激活觸發器

閃回刪除
flashback table t_name to before drop [rename to t_name];
註釋[rename to t_name]:可進行更名
##drop table t_name purge; :刪除後不放入回收站

閃回查詢
select * from t_name as of [scn/timestamp] where ...
:根據SCN狀態或者時 間狀態查詢

Oracle的“回收站”-快閃恢復區