oracle誤刪資料恢復

2021-07-05 04:19:39 字數 1616 閱讀 5758

–oracle誤刪資料恢復

scn(系統改變號),它的英文全拼為:system change number ,它是資料庫中非常重要的乙個資料結構。

scn提供了oracle的內部時鐘機制,可被看作邏輯時鐘,這對於恢復操作是至關重要的

注釋:oracle 僅根據 scn 執行恢復。

它定義了資料庫在某個確切時刻提交的版本。在事物提交時,它被賦予乙個唯一的標示事物的scn 。一些人認為 scn 是指, system commit number ,而通常 scn 在提交時才變化,所以很多情況下,這兩個名詞經常被交替使用。

究竟是哪個詞其實對我們來說並不是最重要的,重要的是我們知道 scn 是 oracle 內部的時鐘機制, oracle 通過 scn 來維護資料庫的一致性,並通過scn 實施 oracle 至關重要的恢復機制。

具體執行流程我們可從以下幾個示例圖中體會;

2.誤刪除所有記錄並且提交更改。

sql>delete from t1;

9318 rows deleted.

sql>commit;

commit complete.

sql>select count(*) from t1;

count(*)

———-

03.獲得當前scn

如果能夠確切知道刪除之前scn最好,如果不知道,可以進行閃回查詢嘗試.

sql>select dbms_flashback.get_system_change_number from dual;

get_system_change_number

————————

10671006

sql>select count(*) from t1 as of scn 10671006;

count(*)

———-

0

此時可以看到 scn=10671006沒有資料,可以變動scn逐個嘗試。

另外,scn是跟時間有關的,如果記得刪除操作時的時間,也可以根據時間算出scn

sql> select timestamp_to_scn(to_timestamp('2015-09-08 17:59:39','yyyy-mm-dd hh24:mi:ss')) from dual;

timestamp_to_scn(to_timestamp(

------------------------------

13252830786571

sql>select count(*) from t1 as of scn 13252830786571;

count(*)

———-

9318

我們看到在scn=13252830786571 時,資料都在。

4.恢復資料.

sql>insert into t1 select * from t1 as of scn 13252830786571;

9318 rows created.

sql>commit;

commit complete.

sql>select count(*) from t1;

count(*)

———-

9318

ORACLE誤刪資料恢復

有很多原因導致了資料記錄的誤刪,怎樣恢復誤刪的記錄呢?先來看看這個概念 scn 系統改變號 它的英文全拼為 system change number 它是資料庫中非常重要的乙個資料結構。scn提供了oracle的內部時鐘機制,可被看作邏輯時鐘,這對於恢復操作是至關重要的 注釋 oracle 僅根據 ...

oracle恢復誤刪資料

1.delete誤刪除的解決方法 原理 利用oracle提供的閃回方法,如果在刪除資料後還沒做大量的操作 只要保證被刪除資料的塊沒被覆寫 就可以利用閃回方式直接找回刪除的資料 具體步驟為 確定刪除資料的時間 在刪除資料之前的時間就行,不過最好是刪除資料的時間點 用以下語句找出刪除的資料 select...

ORACLE誤刪資料的恢復

有很多原因導致了資料記錄的誤刪,怎樣恢復誤刪的記錄呢?先來看看這個概念 scn 系統改變號 它的英文全拼為 system change number 它是資料庫中非常重要的乙個資料結構。scn提供了oracle 的內部時鐘機制,可被看作邏輯時鐘,這對於恢復操作是至關重要的 注釋 oracle 僅根據...