Oracle數(shù)據(jù)回退的實(shí)現(xiàn)
在使用plsql工具,對(duì)表數(shù)據(jù)進(jìn)行操作后,提交了事務(wù),發(fā)現(xiàn)數(shù)據(jù)更新或者刪除錯(cuò)了,這時(shí)候還是有方法可以把數(shù)據(jù)回退的,下面進(jìn)行操作。
對(duì)emp表數(shù)據(jù)進(jìn)行操作,更新前數(shù)據(jù)如下所示:

現(xiàn)在對(duì)SAL字段進(jìn)行更新,原本想更新一條數(shù)據(jù),現(xiàn)在沒有加where條件,誤將所有記錄都更新。

更新后的數(shù)據(jù)如上圖所示,全部記錄都被更新了,事務(wù)也提交了(數(shù)據(jù)庫的數(shù)據(jù)已經(jīng)被修改)。 此時(shí)更新的時(shí)間是13:51分。
下面進(jìn)行數(shù)據(jù)回退操作,將數(shù)據(jù)回退到13:50分,也就是update操作之前:
在回退之前,先查詢13:50分的數(shù)據(jù),是不是我們想要的數(shù)據(jù),也就是進(jìn)行數(shù)據(jù)確認(rèn):
SELECT * FROM emp as of timestamp to_timestamp('2023-08-20 13:50:00','yyyy-MM-dd HH24:MI:SS');
查詢結(jié)果沒有問題,下面進(jìn)行數(shù)據(jù)回退的執(zhí)行操作:
--閃回恢復(fù)數(shù)據(jù) flashback table emp to timestamp to_timestamp('2023-08-20 13:50:00','yyyy-MM-dd HH24:MI:SS');
如果閃回恢復(fù)數(shù)據(jù)提示:因?yàn)槲磫⒂眯幸苿?dòng)功能,不能閃回表。 執(zhí)行以下語句,允許行移動(dòng)
alter table emp enable row movement;
再次執(zhí)行閃回恢復(fù)數(shù)據(jù)的SQL。執(zhí)行完畢后,再次查詢表數(shù)據(jù):

數(shù)據(jù)已經(jīng)回退到update之前的內(nèi)容了。
總結(jié):數(shù)據(jù)閃回是將數(shù)據(jù)退回到某個(gè)時(shí)間點(diǎn),核心的語句有三個(gè):
--查詢指定時(shí)刻的數(shù)據(jù)
SELECT * FROM emp as of timestamp to_timestamp('2023-08-20 13:50:00','yyyy-MM-dd HH24:MI:SS');
--如果閃回恢復(fù)數(shù)據(jù)提示:因?yàn)槲磫⒂眯幸苿?dòng)功能,不能閃回表。 執(zhí)行以下語句,允許行移動(dòng)
alter table emp enable row movement;
--閃回恢復(fù)數(shù)據(jù)
flashback table emp to timestamp to_timestamp('2023-08-20 13:50:00','yyyy-MM-dd HH24:MI:SS');注意:使用 truncate table 命令刪除的表數(shù)據(jù),無法通過flashback的方式找回?cái)?shù)據(jù)。
到此這篇關(guān)于Oracle數(shù)據(jù)回退的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Oracle數(shù)據(jù)回退內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Oracle和MySQL中生成32位uuid的方法舉例(國(guó)產(chǎn)達(dá)夢(mèng)同Oracle)
- Oracle中XML插入數(shù)據(jù)時(shí)的空格問題解決方案
- oracle定義常用函數(shù)的過程
- Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的方法
- Oracle單實(shí)例升級(jí)補(bǔ)丁全過程記錄
- 關(guān)于Oracle數(shù)據(jù)庫dbLink的創(chuàng)建和使用詳解
- Oracle實(shí)現(xiàn)分頁三種不同的方式
- Oracle數(shù)據(jù)庫如何更改數(shù)據(jù)文件位置
- Oracle如何獲取指定表名稱批量修改表中的字段類型
- oracle設(shè)置mybatis自動(dòng)生成id插入方式
- Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)
相關(guān)文章
Oracle數(shù)據(jù)庫中l(wèi)ead和lag函數(shù)用法示例
lag與lead函數(shù)是跟偏移量相關(guān)的兩個(gè)分析函數(shù),通過這兩個(gè)函數(shù)可以在一次查詢中取出同一字段的前N行的數(shù)據(jù)(lag)和后N行的數(shù)據(jù)(lead)作為獨(dú)立的列,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中l(wèi)ead和lag函數(shù)用法的相關(guān)資料,需要的朋友可以參考下2024-06-06
oracle中關(guān)于case?when?then的使用
這篇文章主要介紹了oracle中關(guān)于case?when?then的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
將Oracle數(shù)據(jù)庫中的數(shù)據(jù)寫入Excel
本文主要分享了將Oracle數(shù)據(jù)庫中的數(shù)據(jù)寫入Excel的關(guān)鍵代碼。具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12
ORACLE中查找定位表最后DML操作的時(shí)間小結(jié)
在Oracle數(shù)據(jù)庫中,如何查找,定位一張表最后一次的DML操作的時(shí)間呢? 方式有三種,不過都有一些局限性,下面簡(jiǎn)單的解析、總結(jié)一下。感興趣的朋友跟隨小編一起看看吧2018-11-11
Oracle 臨時(shí)表 OracleDataAdapter 批量更新的實(shí)現(xiàn)思路
這篇文章主要介紹了Oracle 臨時(shí)表 OracleDataAdapter 批量更新的實(shí)現(xiàn)思路,實(shí)現(xiàn)代碼需要注意字段名必需大小寫一致,需要的朋友可以參考下2024-07-07
Oracle數(shù)據(jù)庫實(shí)現(xiàn)查詢所有表
文章總結(jié)了在數(shù)據(jù)庫中查詢表和列信息的方法,包括查詢所有表、特定用戶的表、表的列名和注釋,以及如何根據(jù)表名進(jìn)行模糊查詢,它還提供了如何查詢數(shù)據(jù)庫中所有表的大小并進(jìn)行排序的指令2025-12-12

