一、還原數據與還原表空間 還原數據是: • 原始的、修改之前的數據副本 • 針對更改數據的每個事務處理而捕獲 • 至少保留到事務處理結束 • 用於支持: – 回退操作 – 讀取一致性查詢 – Oracle 閃回查詢、Oracle 閃回事務處理和 Oracle 閃回表 – 從失敗的事務處理中進行恢復 ...
一、還原數據與還原表空間
還原數據是:
• 原始的、修改之前的數據副本
• 針對更改數據的每個事務處理而捕獲
• 至少保留到事務處理結束
• 用於支持:
– 回退操作
– 讀取一致性查詢
– Oracle 閃回查詢、Oracle 閃回事務處理和 Oracle 閃回表
– 從失敗的事務處理中進行恢復
還原信息存儲在還原段中,還原段又存儲在還原表空間中。
還原表空間:
• 僅用於還原段
• 有特殊的恢復註意事項
• 只能與單個實例相關聯(集群情況還原表空間是分開的)
• 在任意給定時間,一個給定的實例只能有一個表空間是當前可寫還原表空間
二、事務處理與還原數據
• 每個事務處理僅分配一個還原段。
• 一個還原段可以同時服務多個事務處理。
三、還原數據與重做數據
四、相關參數說明
以上為預設值。
啟用自動還原管理:UNDO_MANAGEMENT='AUTO'
設置還原保留時間:UNDO_RETENTION=10800 --這個參數一般設置3小時,設置大點200G左右
設置還原表空間:UNDO_TABLESPACE='UNDOTBS1'
五、設置 還原保留時間
腳本修改立即生效無需重啟:
alter system set undo_retention=10800
UNDO_RETENTION 指定已提交的還原信息要保留多長時間(秒),預設為900秒。
僅在以下情況下才必須設置此參數:
• 還原表空間啟用了 AUTOEXTEND 選項
• 需要設置 LOB 的還原保留時間
• 需要保證保留時間
還原保留時間是建議值,當UNDO表空間滿了且沒到900秒也會覆蓋,如果需要確保必須保留900秒,則需要設置保證還原保留時間
六、設置 保證還原保留時間
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;--保證還原保留時間
SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;--不保證還原保留時間
在有guarantee的保證下,ORACLE將會保證undo信息能夠保存到undo_retention設定的值之後才被覆蓋,如果這個時候同時執行了很多事物,將undo表空間耗完了,那麼那個事物會失敗,會報ORA-30036 錯誤,所以使用guarantee一定要慎用,如果非要使用guarantee,那麼儘量將undo 表空間設大一點。
七、還原數據的使用
1、閃回查詢
說明:查詢指定時間點的所有數據
select empno, ename, job, mgr, sal
from scott.emp
as of timestamp to_timestamp('2016-01-21 15:10:00', 'yyyy-mm-dd hh24:mi:ss')
where mgr = 7566;
2、閃回版本查詢
說明:
(1)查看兩個時間點之間行的所有版本。
(2)查看更改了行的事務處理。
註意:
(1)不能使用 VERSIONS 子句查詢外部表、臨時表、固定表、視圖。
(2)VERSIONS 子句不能跨 DDL 命令使用。
(3)段收縮操作已過濾掉。
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;--獲取SCN
update…commit;inset…commit;delete…commit;
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;--獲取SCN
select VERSIONS_STARTSCN,versions_starttime,VERSIONS_ENDSCN,versions_endtime,versions_xid,versions_operation
from employees versions between scn 2797818 and 2797868
order by VERSIONS_STARTTIME;
select VERSIONS_STARTSCN,versions_starttime,VERSIONS_ENDSCN,versions_endtime,versions_xid,versions_operation
from employees versions between timestamp minvalue and maxvalue
order by VERSIONS_STARTTIME;
3、閃回表
說明:
(1)需要具有對特定表的 FLASHBACK ANY TABLE 或 FLASHBACK 對象許可權和具有 SELECT、INSERT、DELETE 和 ALTER 許可權。
(2)FLASHBACK TABLE 命令作為單個事務處理執行,要求獲取 DML 排它鎖。
(3)不閃回統計信息,保留當前索引和從屬對象。
(4)操作不能對系統表執行,不能跨DDL操作,會生成還原數據和重做數據。
ALTER TABLE temp_liutao ENABLE ROW MOVEMENT;
FLASHBACK TABLE temp_liutao TO TIMESTAMP TO_TIMESTAMP('2016-01-20 16:10:00','YYYY-MM-DD HH24:MI:SS');
flashback table temp_liutao to timestamp(systimestamp - interval '3'minute);
flashback table t_topcommsc_request to scn 13884734132482;
ALTER TABLE temp_liutao DISABLE ROW MOVEMENT;