Oracle數(shù)據(jù)庫閃回功能詳解和相關(guān)命令總結(jié)
前言
今日看了Oracle原廠老師講的數(shù)據(jù)庫閃回技術(shù)的公開課,感覺受益匪淺。整理了一下關(guān)于數(shù)據(jù)庫閃回功能的一些知識和相關(guān)測試,在此做下分享。
什么是閃回?
Oracle數(shù)據(jù)庫閃回技術(shù)是一組獨特而豐富的數(shù)據(jù)恢復(fù)解決方案,通過有選擇地、有效地消除錯誤的影響,可以逆轉(zhuǎn)人為錯誤。
查看數(shù)據(jù)的過去狀態(tài)
可沿時間軸向前或向后閃回
協(xié)助用戶進行錯誤分析和恢復(fù)
簡單的命令行操作(或者DBMS_FLASHBACK包)
閃回時間與數(shù)據(jù)庫大小無關(guān)
閃回支持不同級別的恢復(fù),包括行、事務(wù)、表和整個數(shù)據(jù)庫:
- Flashback Database
- Flashback Table
- Flashback Drop
- Flashback Transaction
- Flashback Transaction Query
- Flashback Query
- Flashback Version Query

基于UNDO的閃回:閃回查詢、閃回版本查詢、閃回表
閃回查詢技術(shù)
閃回查詢某精確時間點
select * from table_name AS OF TIMESTAMP TO_TIMESTAMP('2023-02-23 13:14:00', 'YYYY-MM-DD HH24:MI:SS');
閃回查詢到多久之前(例如 一分鐘前)
select * from table_name AS OF TIMESTAMP sysdate-1/24/60;
閃回查詢到指定scn
select * from table_name as of scn 55124124;閃回版本查詢技術(shù)
查看某一時間段內(nèi)數(shù)據(jù)的變化
SELECT versions_startscn,
versions_starttime,
versions_endscn,
versions_endtime,
versions_xid,
versions_operation,
last_name,
salary
FROM employees VERSIONS BETWEEN TIMESTAMPTO_TIMESTAMP('2023-03-08 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2023-03-08 17:00:00', 'YYYY-MM-DD HH24:MI:SS')
WHERE first_name = 'John';字段含義
- VERSIONS_STARTSCN:數(shù)據(jù)版本被創(chuàng)建時的SCN
- VERSIONS_STARTTIME:數(shù)據(jù)版本被創(chuàng)建時的時間戳
- VERSIONS_ENDSCN:數(shù)據(jù)版本消逝時的SCN
- VERSIONS_ENDTIME:數(shù)據(jù)版本消逝時的時間戳
- VERSIONS_XID:數(shù)據(jù)版本被創(chuàng)建時的事務(wù)號
- VERSIONS_OPERATION: 數(shù)據(jù)版本創(chuàng)建時的事務(wù)類型
閃回表技術(shù)
可以將表恢復(fù)到過去的指定時間點
開啟行移動功能
alter table table_name enable row movement;
閃回表到指定時間點
flashback table table_name to timestamp to_timestamp('2023-02-23 13:14:00','yyyy-mm-dd hh24:mi:ss');
閃回表到多久之前
flashback table table_name to timestamp to sysdate-1/24/60;
閃回表到指定scn號
flashback table table_name to scn 3823947923;FDA閃回數(shù)據(jù)歸檔技術(shù)
因為undo有保留時間限制,可以被覆蓋,時間久遠的數(shù)據(jù)無法通過undo進行閃回,此時可以利用閃回數(shù)據(jù)歸檔技術(shù),根據(jù)時間限制將undo數(shù)據(jù)持久化在其他表空間上,不受undo的時間限制
閃回數(shù)據(jù)歸檔步驟:
- 創(chuàng)建一個供閃回數(shù)據(jù)庫使用的表空間在該表空間
- 創(chuàng)建閃回數(shù)據(jù)歸檔,時間期限自定義
- 創(chuàng)建一個用戶并授予DBA的角色
- 授予用戶操作的必要權(quán)限登錄
- 創(chuàng)建一個表啟用閃回數(shù)據(jù)歸檔
- 執(zhí)行查詢來確定歸檔創(chuàng)建的對象
先創(chuàng)建普通表空間 然后在表空間中創(chuàng)建FDA CREATE FLASHBACK ARCHIVE DEFAULT fla1 TABLESPACE tbs1QUOTA 10G RETENTION 1 YEAR;
基于Recyclebin(回收站)的閃回刪除技術(shù)
閃回刪除技術(shù):
針對非system 表空間
適用于通過drop 操作和非purge 的方式刪除的對象可以在recyclebin使用閃回刪除操作還原刪除的對象(包括相關(guān)索引,約束,觸發(fā)器)
回收站(recycle bin)
通過數(shù)據(jù)字典視圖快速查看:USER_RECYCLEBIN 和DBA_RECYCLEBIN。
刪除的表在回收站中被重新命名
閃回被刪除的表 flashback table table_name to before drop;
基于閃回數(shù)據(jù)庫日志的閃回數(shù)據(jù)庫技術(shù)
需開啟數(shù)據(jù)庫閃回日志
查看數(shù)據(jù)庫是否開啟閃回日志
select flashback_on from v$database;

開啟閃回日志之前必須要設(shè)置閃回恢復(fù)區(qū)的路徑和大小
show parameter recover

總結(jié)
到此這篇關(guān)于Oracle數(shù)據(jù)庫閃回功能詳解和相關(guān)命令總結(jié)的文章就介紹到這了,更多相關(guān)Oracle閃回功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle 12c新特性之如何檢測有用的多列統(tǒng)計信息詳解
這篇文章主要給大家介紹了Oracle 12c新特性之如何檢測有用的多列統(tǒng)計信息的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03

