Oracle數(shù)據(jù)回滾的全過(guò)程
前言
最近在修復(fù)一個(gè)比較老的項(xiàng)目報(bào)表的bug的時(shí)候,因?yàn)閷?duì)該項(xiàng)目不太熟悉,導(dǎo)致生產(chǎn)環(huán)境數(shù)據(jù)修改有誤,于是求助導(dǎo)師幫忙回滾數(shù)據(jù),現(xiàn)學(xué)習(xí)一下Oralce數(shù)據(jù)回滾以備不時(shí)之需。
查看某個(gè)時(shí)間點(diǎn)的表的數(shù)據(jù)
select * from 表名 as of timestamp to_timestamp('2019-04-15 22:00:38', 'yyyy-mm-dd hh24:mi:ss');
開(kāi)啟閃回,如果不開(kāi)啟無(wú)法進(jìn)行閃回
alter table 表名 enable row movement;
關(guān)閉閃回,回滾數(shù)據(jù)之后需要進(jìn)行關(guān)閉
alter table 表名 disable row movement;
閃回表數(shù)據(jù)到某個(gè)時(shí)間點(diǎn)
flashback table 表名 to timestamp TO_TIMESTAMP('2019-04-15 22:00:38', 'yyyy-mm-dd hh24:mi:ss');
drop表
drop table 表名;
查詢(xún)數(shù)據(jù)庫(kù)回收站記錄
select object_name,original_name, type from user_recyclebin;
查詢(xún)被刪除的表對(duì)象
上面的object_name便是這里被刪除的表在數(shù)據(jù)庫(kù)回收站中的臨時(shí)表名BIN$djh3J69WQfGWda1D76/9NA==$0
select * from "BIN$djh3J69WQfGWda1D76/9NA==$0";
閃回恢復(fù)被刪除的表對(duì)象
FLASHBACK TABLE 表名 TO BEFORE DROP;
查看 DELETE 及 UPDATE 操作修改的數(shù)據(jù)
SELECT * FROM 表名 AS OF TIMESTAMP to_timestamp('2019-04-16 21:43:38', 'yyyy-mm-dd hh24:mi:ss') MINUS SELECT * FROM 表名;
恢復(fù) DELETE 及 UPDATE 操作修改的數(shù)據(jù)
將恢復(fù) 表至 2019-04-16 21:43:38 時(shí)點(diǎn),恢復(fù)數(shù)據(jù)為因 DELETE 及 UPDATE 操作修改的數(shù)據(jù)。
注意:需要通過(guò)唯一條件id 定位數(shù)據(jù)。
MERGE INTO 表名 a USING (SELECT * FROM 表名 AS OF TIMESTAMP to_timestamp('2019-04-16 21:43:38', 'yyyy-mm-dd hh24:mi:ss') MINUS SELECT * FROM 表名) b ON (a.id = b.id) WHEN MATCHED THEN UPDATE SET a.col = b.col, WHEN NOT MATCHED THEN INSERT VALUES (b.id, b.col);
查看 INSERT 操作修改的數(shù)據(jù)
SELECT * FROM 表名 MINUS SELECT * FROM 表名 AS OF TIMESTAMP to_timestamp('2019-04-16 21:45:38', 'yyyy-mm-dd hh24:mi:ss');
恢復(fù) INSERT 操作修改的數(shù)據(jù)
其中將恢復(fù) 表至 2019-04-16 21:45:38 時(shí)點(diǎn),恢復(fù)數(shù)據(jù)為因 INSERT 操作修改的數(shù)據(jù)。
注意:需要通過(guò)唯一條件 unique_id 定位數(shù)據(jù)。
DELETE FROM 表名 a WHERE EXISTS (SELECT 1 FROM (SELECT * FROM 表名 MINUS SELECT * FROM 表名 AS OF TIMESTAMP to_timestamp('2019-04-16 21:45:38', 'yyyy-mm-dd hh24:mi:ss')) b WHERE a.id = b.id);
如果相隔時(shí)間過(guò)長(zhǎng)的話,數(shù)據(jù)就回滾不了了,所以一旦數(shù)據(jù)出現(xiàn)問(wèn)題,就要立即進(jìn)行處理。
參考博客
https://www.cnblogs.com/autopenguin/p/5952671.html
http://www.dbjr.com.cn/article/147509.htm
到此這篇關(guān)于Oracle數(shù)據(jù)回滾的文章就介紹到這了,更多相關(guān)Oracle數(shù)據(jù)回滾內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle數(shù)據(jù)庫(kù)中建立索引的基本方法講解
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)中建立索引的基本方法,包括對(duì)性能方面進(jìn)行衡量而給出的一些索引的設(shè)計(jì)和使用建議,需要的朋友可以參考下2016-01-01PLSQL Developer連接oracle數(shù)據(jù)庫(kù)配置教程
這篇文章主要介紹了PLSQL Developer連接oracle數(shù)據(jù)庫(kù)配置步驟,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)建表、查詢(xún)方式
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)實(shí)現(xiàn)建表、查詢(xún)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2007-02-02Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法
Oracle7.X 回滾表空間數(shù)據(jù)文件誤刪除處理方法...2007-03-03Oracle的用戶、角色及權(quán)限相關(guān)操作
這篇文章主要介紹了Oracle的用戶、角色及權(quán)限相關(guān)操作,需要的朋友可以參考下2017-07-07Oracle字段根據(jù)逗號(hào)分割查詢(xún)數(shù)據(jù)的方法
項(xiàng)目需求是這樣的表里的某個(gè)字段存儲(chǔ)的值是以逗號(hào)分隔開(kāi)來(lái)的,要求根據(jù)分隔的每一個(gè)值都能查出來(lái)數(shù)據(jù),但是不能使用like查詢(xún)。這篇文章主要介紹了Oracle字段根據(jù)逗號(hào)分割查詢(xún)數(shù)據(jù),需要的朋友可以參考下2018-08-08delete archivelog all無(wú)法清除歸檔日志解決方法
最近在因歸檔日志暴增,使用delete archivelog all貌似無(wú)法清除所有的歸檔日志,究竟是什么原因呢?本文將為您解答,需要的朋友可以參考下2012-12-12如何實(shí)現(xiàn)只授予用戶查看存儲(chǔ)過(guò)程定義的權(quán)限
本文對(duì)如何授予某個(gè)用戶只能查看某些存儲(chǔ)過(guò)程的定義權(quán)限,而不能讓用戶去修改、執(zhí)行存儲(chǔ)過(guò)程,進(jìn)行了梳理和總結(jié),供大家參考。2015-09-09oracle?mysql?拼接值遇到的坑及雙豎線?||?concat詳解
在Oracle中,字符串拼接有兩種方法,分別是CONCAT()函數(shù)和“||”拼接,本文給大家講解oracle?mysql?拼接值遇到的坑及雙豎線?||?concat詳解,感興趣的朋友跟隨小編一起看看吧2023-04-04