前言
今日看了Oracle原廠老師講的數(shù)據(jù)庫(kù)閃回技術(shù)的公開(kāi)課,感覺(jué)受益匪淺。整理了一下關(guān)于數(shù)據(jù)庫(kù)閃回功能的一些知識(shí)和相關(guān)測(cè)試,在此做下分享。
什么是閃回?
Oracle數(shù)據(jù)庫(kù)閃回技術(shù)是一組獨(dú)特而豐富的數(shù)據(jù)恢復(fù)解決方案,通過(guò)有選擇地、有效地消除錯(cuò)誤的影響,可以逆轉(zhuǎn)人為錯(cuò)誤。
查看數(shù)據(jù)的過(guò)去狀態(tài)
可沿時(shí)間軸向前或向后閃回
協(xié)助用戶進(jìn)行錯(cuò)誤分析和恢復(fù)
簡(jiǎn)單的命令行操作(或者DBMS_FLASHBACK包)
閃回時(shí)間與數(shù)據(jù)庫(kù)大小無(wú)關(guān)
閃回支持不同級(jí)別的恢復(fù),包括行、事務(wù)、表和整個(gè)數(shù)據(jù)庫(kù):
Flashback Database
Flashback Table
Flashback Drop
Flashback Transaction
Flashback Transaction Query
Flashback Query
Flashback Version Query
基于UNDO的閃回:閃回查詢、閃回版本查詢、閃回表
閃回查詢技術(shù)
閃回查詢某精確時(shí)間點(diǎn)
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ù)
查看某一時(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)建時(shí)的SCN
VERSIONS_STARTTIME:數(shù)據(jù)版本被創(chuàng)建時(shí)的時(shí)間戳
VERSIONS_ENDSCN:數(shù)據(jù)版本消逝時(shí)的SCN
VERSIONS_ENDTIME:數(shù)據(jù)版本消逝時(shí)的時(shí)間戳
VERSIONS_XID:數(shù)據(jù)版本被創(chuàng)建時(shí)的事務(wù)號(hào)
VERSIONS_OPERATION: 數(shù)據(jù)版本創(chuàng)建時(shí)的事務(wù)類(lèi)型
閃回表技術(shù)
可以將表恢復(fù)到過(guò)去的指定時(shí)間點(diǎn)
開(kāi)啟行移動(dòng)功能
alter table table_name enable row movement;
閃回表到指定時(shí)間點(diǎn)
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號(hào)
flashback table table_name to scn 3823947923;
FDA閃回?cái)?shù)據(jù)歸檔技術(shù)
因?yàn)閡ndo有保留時(shí)間限制,可以被覆蓋,時(shí)間久遠(yuǎn)的數(shù)據(jù)無(wú)法通過(guò)undo進(jìn)行閃回,此時(shí)可以利用閃回?cái)?shù)據(jù)歸檔技術(shù),根據(jù)時(shí)間限制將undo數(shù)據(jù)持久化在其他表空間上,不受undo的時(shí)間限制
閃回?cái)?shù)據(jù)歸檔步驟:
創(chuàng)建一個(gè)供閃回?cái)?shù)據(jù)庫(kù)使用的表空間在該表空間
創(chuàng)建閃回?cái)?shù)據(jù)歸檔,時(shí)間期限自定義
創(chuàng)建一個(gè)用戶并授予DBA的角色
授予用戶操作的必要權(quán)限登錄
創(chuàng)建一個(gè)表啟用閃回?cái)?shù)據(jù)歸檔
執(zhí)行查詢來(lái)確定歸檔創(chuàng)建的對(duì)象
先創(chuàng)建普通表空間 然后在表空間中創(chuàng)建FDA
CREATE FLASHBACK ARCHIVE DEFAULT fla1 TABLESPACE tbs1QUOTA 10G RETENTION 1 YEAR;
基于Recyclebin(回收站)的閃回刪除技術(shù)
閃回刪除技術(shù):
針對(duì)非system 表空間
適用于通過(guò)drop 操作和非purge 的方式刪除的對(duì)象可以在recyclebin使用閃回刪除操作還原刪除的對(duì)象(包括相關(guān)索引,約束,觸發(fā)器)
回收站(recycle bin)
通過(guò)數(shù)據(jù)字典視圖快速查看:USER_RECYCLEBIN 和DBA_RECYCLEBIN。
刪除的表在回收站中被重新命名文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-539287.html
閃回被刪除的表
flashback table table_name to before drop;
基于閃回?cái)?shù)據(jù)庫(kù)日志的閃回?cái)?shù)據(jù)庫(kù)技術(shù)
需開(kāi)啟數(shù)據(jù)庫(kù)閃回日志
查看數(shù)據(jù)庫(kù)是否開(kāi)啟閃回日志
select flashback_on from v$database;
開(kāi)啟閃回日志之前必須要設(shè)置閃回恢復(fù)區(qū)的路徑和大小
show parameter recover文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-539287.html
開(kāi)啟閃回日志
alter database flashback on;
閃回?cái)?shù)據(jù)庫(kù):把數(shù)據(jù)庫(kù)閃回到過(guò)去的時(shí)間點(diǎn),針對(duì)邏輯故障,或者對(duì)相同數(shù)據(jù)做循環(huán)迭代測(cè)試。
flashback database to timestamp to_timestamp('2023-03-08 16:18:00','yyyy-mm-dd hh24:mi:ss');
到了這里,關(guān)于Oracle數(shù)據(jù)庫(kù)閃回功能的詳解和相關(guān)命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!