oracle 刪除恢復

2021-08-25 09:24:51 字數 2353 閱讀 1133

寫道

同事找回時操作的資料庫為oracle 10g , 之前刪除方式為delete 不曉得trancate好使不

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

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

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

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

這兩個名詞經常被交替使用。

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

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

1.原表記錄 $ sqlplus eygle/eygle

sql*plus: release 10.1.0.2.0 - production on wed mar 30 08:52:04 2005

connected to:

oracle database 10g enterprise edition release 10.1.0.2.0 - 64bit production

with the partitioning, olap and data mining options

sql>select count(*) from t1;

count(*)

----------

9318

2.誤刪除所有記錄

並且提交更改。

sql>delete from t1;

9318 rows deleted.

sql>commit;

commit complete.

sql>select count(*) from t1;

count(*)

---------- 0

3.獲得當前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 10671000;

count(*)

---------- 0

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

count(*)

----------

9318

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

4.恢復資料.

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

9318 rows created.

sql>commit;

commit complete.

sql>select count(*) from t1;

count(*)

----------

9318

文章2

誤刪資料後的還原

select timestamp_to_scn(to_timestamp('2009-03-13 09:00:00','yyyy-mm-dd hh:mi:ss')) from dual;

結果:13526973

將刪除時間轉換為scn

select * from reportinfo

as of scn 13526973

將reportinfo表中的scn點的資料取出

然後可以根據這個資料進行還原操作

create table reporttest as select * from reportinfo where 1=0;

insert into reporttest select * from reportinfo as of scn 13526973;

--上面兩句應該可以合成一句

--create table reporttest as select * from reportinfo as of scn 13526973;

這是reporttest表中就是scn點的reportinfo資料.處理即可

Oracle刪除表恢復

恢復當天刪除了表而沒有記住表的名稱 儲存過程如下 create or replace procedure proc databack deletetime in varchar2 as 把當天已經刪除的資訊查詢出來放入游標 cursor mycursor is select object name ...

oracle資料刪除恢復

分為兩種方法 scn和時間戳兩種方法恢復。一 通過scn恢復刪除且已提交的資料 1 獲得當前資料庫的scn號 select current scn from v database 切換到sys使用者或system使用者查詢 查詢到的scn號為 1499223 2 查詢當前scn號之前的scn sel...

恢復Oracle刪除的資料

select t.time dp,t.scn from sys.smon scn time t order by t.time dp desc 1 2014 7 1 11 05 47 225286134 2 2014 7 1 11 00 19 225285926 3 2014 7 1 10 57 4...