1、首先新建一張測(cè)試表TEST,里面輸入記錄。由于刪除/更新/插入恢復(fù)步驟相同,這里僅演示刪除數(shù)據(jù)的情況。
創(chuàng)新互聯(lián)建站主打移動(dòng)網(wǎng)站、網(wǎng)站制作、成都網(wǎng)站制作、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名注冊(cè)、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
2、刪除其中1條記錄,查看表中記錄情況,由下圖可見,記錄2被刪除了。
3、恢復(fù)之前先確定要恢復(fù)到的時(shí)間點(diǎn),下圖可以看出2018-03-07 15:33:00數(shù)據(jù)是正確的。
SELECT *
FROM TEST AS OF TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');
4、下面進(jìn)行表數(shù)據(jù)恢復(fù)。
FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');
可以看到報(bào)錯(cuò)了,原因是沒(méi)有開啟行移動(dòng)。
5、開啟該表的行移動(dòng)。
ALTER TABLE TEST ENABLE ROW MOVEMENT;
6、再次執(zhí)行數(shù)據(jù)恢復(fù)。
FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS');
然后查看數(shù)據(jù)情況,可以看到已經(jīng)恢復(fù)了。
1、獲得當(dāng)前數(shù)據(jù)庫(kù)的scn號(hào)
select
current_scn
from
v$database;
(切換到sys用戶或system用戶查詢)
查詢到的scn號(hào)為:1499223
2、查詢當(dāng)前scn號(hào)之前的scn
select
*
from
表名
as
of
scn
1499220;
(確定刪除的數(shù)據(jù)是否存在,如果存在,則恢復(fù)數(shù)據(jù);如果不是,則繼續(xù)縮小scn號(hào))
3、恢復(fù)刪除且已提交的數(shù)據(jù)
flashback
table
表名
to
scn
1499220;
恢復(fù)的前提是備份;
數(shù)據(jù)庫(kù)有什么備份,exp還是rman
如果有exp備份:直接imp數(shù)據(jù)
如果有rman備份:可以基于時(shí)間不完全恢復(fù),將數(shù)據(jù)庫(kù)恢復(fù)到誤刪除之前的時(shí)刻
如果沒(méi)有備份但是開閃回了,可以閃回?cái)?shù)據(jù)庫(kù)或閃回表
刪除表后,可以采用如下操作:
在 user_recyclebin中找到最近操作過(guò)的表名稱,然后用閃回(只能用于10G及以上版本)。
FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;
如果是刪了或修改里面的數(shù)據(jù),可以先建立一個(gè)快表將刪除修改之前狀態(tài)的數(shù)據(jù)找回到這個(gè)表中:
CREATE TABLE QUICK_TABLE AS
SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小時(shí)前的),減去的時(shí)間可以自己定。如樓上F_253那位老兄的寫法就不錯(cuò),能自由定制時(shí)間
刪除表后,可以采用如下操作:
在 user_recyclebin中找到最近操作過(guò)的表名稱,然后用閃回(只能用于10G及以上版本)。
FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;
如果是刪了或修改里面的數(shù)據(jù),可以先建立一個(gè)快表將刪除修改之前狀態(tài)的數(shù)據(jù)找回到這個(gè)表中:
CREATE TABLE QUICK_TABLE AS
SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSDATE-1/24 (一小時(shí)前的),減去的時(shí)間可以自己定 如:select * from TABLE_NAME AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' MINUTE)
oracle數(shù)據(jù)庫(kù)恢復(fù),主要包括(1)系統(tǒng)崩潰只剩下數(shù)據(jù)文件的情況下的恢復(fù),甚至沒(méi)有system表空間而只有數(shù)據(jù)表空間的情況下的恢復(fù).只要提供數(shù)據(jù)文件就可恢復(fù).(2)undosystem表空間損壞數(shù)據(jù)恢復(fù).(3)非歸檔或者歸檔模式下誤delete數(shù)據(jù)的恢復(fù)、誤刪除表空間的恢復(fù)、droptruncate表的恢復(fù).(4)數(shù)據(jù)庫(kù)中有大量CLOBBLOB對(duì)象數(shù)據(jù)恢復(fù)等情況以及各種ora-錯(cuò)誤的修復(fù).(5)DMP文件損壞導(dǎo)致文件不能導(dǎo)入數(shù)據(jù)庫(kù)的數(shù)據(jù)恢復(fù)(6)oracle數(shù)據(jù)庫(kù)中數(shù)據(jù)文件出現(xiàn)壞塊情況下的恢復(fù).(7)oracle數(shù)據(jù)庫(kù)無(wú)數(shù)據(jù)文件但有日志的情況下的恢復(fù).(8)UNIX、WINDOWS下ORACLE數(shù)據(jù)文件被誤刪除情況下的數(shù)據(jù)庫(kù)恢復(fù).(9)Oracle10G、Oracle11G的ASM損壞的數(shù)據(jù)庫(kù)恢復(fù).(10)Oracle10G、Oracle11GBIFGILETABLESPACE大文件表空間損壞數(shù)據(jù)恢復(fù)(11)Oracle9i、Oracle10G、Oracle11G壓縮表壓縮表空間損壞數(shù)據(jù)恢復(fù)(12)Oracle10GOracle11GExpdp導(dǎo)出Impdp導(dǎo)入DMP文件錯(cuò)誤數(shù)據(jù)恢復(fù)恢復(fù)成功率高達(dá)90%以上,在數(shù)據(jù)恢復(fù)領(lǐng)域處于國(guó)內(nèi)領(lǐng)先的地位。具體案例見廣州拓飛官方網(wǎng)站