Oracle 閃回技術

閃回技術是Oracle強大數據庫備份恢復機制的一部分,在數據庫發生邏輯錯誤的時候,閃回技術能提供快速且最小損失的恢復(多數閃回功能都能在數據庫聯機狀態下完成)sql

1. 閃回查詢

UNDO_MANAGEMENT數據庫

指定回滾段的管理方式,若是設置爲 AUTO,則採用撤銷表空間自動管理回滾信息express

UNDO_TABLESPACE大數據

指定用於回滾信息自動管理的撤銷表空間名code

UNDO_RETENTIONit

指定回滾信息的最長保留時間io

  • 使用 ALTER SYSTEM 命令修改各個參數值
ALTER SYSTEM SET UNDO_RETENTION=1200;
  • 基本語法
SELECT column_name [,...]
FROM table_name
[AS OF SCN|TIMESTAMP expression]
[WHERE condition]
  • 基於 AS OF TIMESTAMP 的閃回查詢
ALTER SESSION 
SET_NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
--
SET TIME ON

--查詢當前狀態
SELECT * FROM scott.emp
WHERE empno=7844;

--查詢前一個小時
SELECT * FROM scott.emp
AS OF TIMESTAMP SYSDATE-1/24
WHERE empno=7844;

--查詢某個時刻
SELECT * FROM scott.emp
AS OF TIMESTAMP TO_TIMESTAMP('2009-3-23 09:14:41','YYYY-MM-DD HH24:MI:SS')
  • 基於 AS OF SCN 的閃回查詢

若是須要對多個相互有主外鍵約束的表進行恢復,使用 AS OF TIMESTAMP 方式,可能會因爲時間點的不統一而形成數據恢復失敗,使用 AS OF SCN 方式則可以確保約束的一致性。table

-- 查詢當前的 SCN
SELECT current_scn
FROM v$database;

-- 查詢當前表的數據
SELECT * FROM scott.emp
WHERE empno=7844;

--查詢某個 SCN 的數據
SELECT * FROM scott.emp
AS OF SCN 617244
WHERE empno=7844;

系統時間與 SCN 之間的關係能夠經過查詢 SYS 模式下的 SMON_SCN_TIME 表得到class

SELECT scn, TO_CHAR(time_dp, 'YYYY-MM-DD HH24:MI:SS') time_dp
FROM sys.smon_scn_time;
相關文章
相關標籤/搜索