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)在沒(méi)有加where條件,誤將所有記錄都更新。
更新后的數(shù)據(jù)如上圖所示,全部記錄都被更新了,事務(wù)也提交了(數(shù)據(jù)庫(kù)的數(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é)果沒(méi)有問(wèn)題,下面進(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í)行以下語(yǔ)句,允許行移動(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),核心的語(yǔ)句有三個(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í)行以下語(yǔ)句,允許行移動(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ù),無(wú)法通過(guò)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í)的空格問(wèn)題解決方案
- oracle定義常用函數(shù)的過(guò)程
- Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的方法
- Oracle單實(shí)例升級(jí)補(bǔ)丁全過(guò)程記錄
- 關(guān)于Oracle數(shù)據(jù)庫(kù)dbLink的創(chuàng)建和使用詳解
- Oracle實(shí)現(xiàn)分頁(yè)三種不同的方式
- Oracle數(shù)據(jù)庫(kù)如何更改數(shù)據(jù)文件位置
- Oracle如何獲取指定表名稱批量修改表中的字段類型
- oracle設(shè)置mybatis自動(dòng)生成id插入方式
- Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)
相關(guān)文章
ORACLE常見(jiàn)錯(cuò)誤代碼的分析與解決二
ORACLE常見(jiàn)錯(cuò)誤代碼的分析與解決二...2007-03-03解決Windows 7下安裝Oracle 11g相關(guān)問(wèn)題的方法
本文將為大家介紹Windows 7下安裝Oracle 11g方面的有關(guān)問(wèn)題解決方案。希望通過(guò)本文,能讓大家對(duì)11g這款產(chǎn)品有更多的認(rèn)識(shí),需要的朋友可以參考下2015-08-08Oracle通過(guò)遞歸查詢父子兄弟節(jié)點(diǎn)方法示例
這篇文章主要給大家介紹了關(guān)于Oracle如何通過(guò)遞歸查詢父子兄弟節(jié)點(diǎn)的相關(guān)資料,遞歸查詢對(duì)各位程序員來(lái)說(shuō)應(yīng)該都不陌生,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件的方法
這篇文章主要介紹了Oracle SQLPlus導(dǎo)出數(shù)據(jù)到csv文件,需要的朋友可以參考下2020-05-05通過(guò)Navicat連接Oracle數(shù)據(jù)庫(kù)的詳細(xì)步驟
本文介紹如何通過(guò)Navicat 連接Oracle數(shù)據(jù)庫(kù),以往總是使用Oracle客戶端來(lái)連接Oracle數(shù)據(jù)庫(kù),但是Oracle客戶端一般有幾百M(fèi)的大小,而且安裝繁瑣配置麻煩,如果可以通過(guò)Navicat直接連接Oracle則會(huì)非常輕松方便,需要的朋友可以參考下2023-10-10Oracle如何獲取數(shù)據(jù)庫(kù)系統(tǒng)的當(dāng)前時(shí)間
這篇文章主要介紹了Oracle如何獲取數(shù)據(jù)庫(kù)系統(tǒng)的當(dāng)前時(shí)間問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Oracle開(kāi)發(fā)之分析函數(shù)(Top/Bottom N、First/Last、NTile)
本文主要是對(duì)Oracle分析函數(shù)查找前幾名、后幾名、最多、最少以及按層次查詢的介紹,需要的朋友可以參考下。2016-05-05