首頁  >  文章  >  資料庫  >  三種方法快速還原誤刪oracle資料庫

三種方法快速還原誤刪oracle資料庫

WBOY
WBOY轉載
2022-06-01 12:02:287340瀏覽

本篇文章為大家帶來了關於Oracle的相關知識,其中主要介紹了關於誤刪oracle資料庫中的數據,在不考慮全庫備份和利用歸檔日誌情況,怎樣快速恢復資料的相關問題,下面一起來看看,希望對大家有幫助。

三種方法快速還原誤刪oracle資料庫

推薦教學:《Oracle影片教學

誤刪oracle資料庫中的數據,在不考慮全庫備份利用歸檔日誌狀況,怎麼快速恢復資料呢?

以下介紹3種方法。

1. 利用oracle提供的閃回方法進行資料恢復,適用於delete刪除方式

##首先取得刪除資料的時間點:

select * from v$sql where sql_text like '%table_name%' ;
1
根據結果中的

sql_text內容,找到delete執行語句對應的刪除時間點,執行下面語句查詢出刪除的資料。

select * from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
12
檢查資料無誤後,執行下方操作,將資料插回原始表中。

注意主鍵不重複

insert into table_name
select * from from table_name as of timestamp to_timestamp(‘删除时间点’,‘yyyy-mm-dd hh24:mi:ss’)
where (删除时的条件)
123

2. 利用oracle虛擬回收站功能

原理是因為oracle資料庫在刪除表時會將刪除訊息存放於某虛擬

回收站中而非直接清空,在此種狀態下資料庫標記該表的資料庫為可以複寫,所以在該區塊未被重新使用前依然可以恢復資料。此方法多用於drop刪除。

先查詢

user_table視圖,找到被刪除的表:

select table_name,dropped from user_tables;
select object_name,original_name,type,droptime from user_recyclebin;
12
注意此時的,

object_nameoriginal_name 就是回收站存放的表名和原來刪除的表名,如果表名沒有被重新命名,可以透過下面語句進行恢復:

flashback table original_name to before drop;
1
如果不知道來源表名,或者需要重新命名新的表名存放數據,則可以透過回收站中的

object_name進行恢復,命令如下:

flashback table object_name to before drop new_table_name;
1

3. 用oracle資料庫的閃回功能可以將資料庫恢復到過去某一狀態

注意,此時是

整庫恢復,具體語法如下:

SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp(‘frombyte 2021-09-02 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’);
123

4. 徹底刪除資料

如果確定需要刪除的資料又不想無謂的佔用空間,我們可以使用以下3種方式:

    採用truncate方式進行截斷。 (無法進行資料回恢復)
  1. 在drop時加上purge選項:
  2. drop table table_name purge
  3. 透過刪除
  4. recyclebin區域來永久性刪除表格,drop table table_name cascade constraints purge table table_name;
##5. 關於清空回收站

    #刪除目前使用者回收站
  1. purge recyclebin;

  2. #刪除全體使用者在回收站的資料
  3. purge dba_recyclebin;

  4. 推薦教學:《
Oracle影片教學


#

以上是三種方法快速還原誤刪oracle資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除