oracle資料的閃回 刪庫跑路?老鐵別想了!

2021-10-13 12:36:00 字數 2590 閱讀 7404

在公司某個黑暗的小角落,乙個初出茅廬的小夥子,拿到了剛剛交接的文件開始躍躍欲試,結果乙個drop開始了他的噩夢!這個時候凱哥在他背後猥瑣的笑了笑,捋了捋5年了還沒掉光的頭髮。一頓操作猛如虎!

閃回技術是oracle強大資料庫備份恢復機制的一部分,在資料庫發生邏輯錯誤的時候,閃回技術能提供快速且最小損失的恢復(多數閃回功能都能在資料庫聯機狀態下完成)。需要注意的是,閃回技術旨在快速恢復邏輯錯誤,對於物理損壞或是介質丟失的錯誤,閃回技術就回天乏術了,還是得借助於oracle一些高階的備份恢復工具如ramn去完成。

oracle提供了四種可供使用的閃回技術(閃回查詢,閃回刪除,閃回歸檔,閃回資料庫),每種都有不同的底層體系結構支撐,但其實這四種不同的閃回技術部分功能是有重疊的,使用時也需要根據實際場景合理選擇最合適的閃回功能。        

檢視資料庫是否開啟閃回功能     :   select flashback_on from v$database;

1,閃回查詢    

1.1  基本閃回查詢:select * from table_name  as of timestamp to_timestamp('2016-09-10 11:00:00','yyyy-mm-dd hh24:mi:ss』)        

1.2  閃回表:alter table emp enable row movement;         flashback table table_name  to timestamp to_timestamp('2016-09-10 11:00:00','yyyy-mm-dd hh24:mi:ss』);        

2,閃回刪除        

閃回刪除可以輕鬆將乙個已經被drop的表還原回來。相應的索引,資料庫約束也會被還原(除了外來鍵約束)        

flashback table emp to before ;      

如果名字已經存在         flashback table emp to before drop rename to emp_new;

閃回資料歸檔可使表具有回退到過去任何時間點的能力,前面提到的閃回查詢,閃回表都會受限於撤銷資料是否失效,如果撤銷資料被覆蓋重寫了,閃回操作自然會失敗,閃回刪除則受限於表空間是否有足夠可用空間,而閃回資料歸檔,則沒有這些限制。      

1.建立乙個使用者閃回資料歸檔的表空間,當然,也可以使用已經存在的表空間。      

create tablespace test_tb datafile 'test.dbf' size 20m;        

2、建立乙個保留時間為2年的閃回歸檔      

create flashback archive test_fa tablespace test_tb retention 2 year;        

3、賦予使用者歸檔的許可權      

grant flashback archive on test_fa to scott;        

4、為emp表啟用閃回歸檔      

alter table emp flashback archive test_fa;

閃回資料庫可將整個資料庫回退到過去某個時間點,閃回表是某張表的時空穿梭,閃回資料庫則是整個資料庫的時空穿梭。當然,閃回點之後的所有工作就丟失了,其實就相當於資料庫的不完整恢復。      

4.1.指定閃回恢復區,也就是存放閃回日誌的位置

alter system set db_recovery_file_dest ='/flash_recovery_area』;      

4.2.指定恢復區大小      

alter system set db_recovery_file_dest_size=8g;  

4.3.指

定閃回日誌保留時間為2小時,即通過閃回操作,可以將資料庫回退到前兩小時內的任意時間點      

alter system set db_flashback_retention_target=120;      

4.4.配置閃回資料庫

shutdown immediate;  

startup mount;

alter database flashback on;

alter database open;      

4.5.使用閃回功能      

shutdown immediate;      

startup mount;    

flashback database to timestamp sysdate-60/1440;      

alter database open resetlogs;

閃回表是利用undo表空間的撤銷資料,所以能把表閃回到多久之前受到undo_retention,undo表空間的資料檔案是否啟動自動增長功能,是否設定guarantee等三種因素的影響。

關於undo的引數: show parameter undo ;

oracle裡對undo_retention預設時間是900秒,所以注意超時不候呦;

其實oracle除了貴,就是資料容災,哪怕閃回時間過了,還是可以有辦法恢復的。但是mysql也有對應的方法。最近還在玩國產資料庫「達夢」,感嘆國產的奮起直追啊!

最後 希望這次分享對大家有幫助,在下文凱,感謝老鐵的三連,大道無為,上下難求。

Oracle 閃回機制(恢復錯刪的資料)

一 恢復誤刪表 1.執行以下sql語句,找到被自己誤刪的資料表對應的object name select from user recyclebin t 檢視被刪掉的表 2.根據得到的object name恢復資料表 flashback table bin 045mlx94so24hz4 tlwdgg...

oracle 資料閃回

select from scott.dept insert into scott.dept values 50,錯誤資料 china select from scott.dept as of timestamp to timestamp 2011 12 09 10 00 00 yyyy mm dd ...

oracle oracle閃回 閃回資料庫

閃回技術 實現基於磁碟上閃回恢復區的自動備份恢復 配置閃回恢復區閃回恢復區 1 閃回資料庫 可以將資料庫恢復到以前的某個時間,使用該技術必須先配置閃回恢復區 sql connect sys newtouch as sysdba sql shutdown immediate sql startup m...