Oracle RMA異機不完全恢復

2021-08-22 16:36:23 字數 1505 閱讀 6598

試驗目的:a、b  兩台機,把a的備份在b上還原。

試驗背景:在a上誤刪test資料表,現需恢復;

在a主機需要做的操作如下:

在a資料庫新增test表,並插入一些資料;(這一步應該都會,故不作演示)

用rman做全庫備份;

切換日誌(多次切換);

刪除test表中的資料;(delete from test)

切換日誌(多次切換);

刪除test表;

drop table test purge;

切換日誌(多次切換);

建立根據spfile建立pfile檔案;

將rman的全庫備份檔案及建立的pfile傳入b主機;

日誌挖掘

由於不知道是在什麼時間點做的刪除表的動作,所以需要對日誌進行挖掘。

exec dbms_logmnr.add_logfile('日誌檔案',dbms_logmnr.new);

exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

select scn,sql_redo from v$logmnr_contents where lower(sql_redo) like 'drop%' and seg_owner='sys';

執行以上3條語句進行挖掘。

因為不知道是什麼時候刪除的表,所以首先挖掘當前日誌。

查詢當前日誌

可以看到當前日誌組為1,組1對應的日誌檔案為redo01.log,吧這個檔案的完整路徑帶入上面的語句進行挖掘即可。

如果第三條語句沒有查詢到結果,則表示刪除操作不是在當前日誌內操作的,則要繼續挖掘上乙個日誌(歸檔日誌);

查詢歸檔日誌路徑:

其中archive destination對應的值就是歸檔日誌的路徑。

也可通過select name,thread#,sequence#,status from v$archived_log;查詢出歸檔日誌。

從最後乙個開始挖。

當挖到編號為1_125_***x.arc的歸檔日誌的時候找到了

在scn為2917972的時候做的刪除動作。

當我們在b機器上恢復的時候就要恢復到這個scn當時的狀態,找回test表。

在b主機需要做的操作如下:

使用a資料庫的pfile檔案生成spfile,然後將資料庫啟動到nomount

在rman中利用a機的全庫備份檔案恢復controlfile;

將資料庫啟動到mount狀態

利用rman恢復資料庫到指定點;

執行:run

語句,可以通過全備份檔案恢復到指定的scn

但是我們執行恢復的時候提示錯誤,這裡的意思是我們還缺少116到120號的歸檔日誌,我們需要從a機上copy到b機的歸檔路徑下

這裡多copy了幾個日誌,以免又需要其他的。

然後重新執行恢復語句。

執行最後可以看到資料庫已經開啟了。

驗證test表是否存在,且沒有資料

至此,說明不完全恢復成功了。

不完全型別

c 允許在乙個 檔案中存放多個類,但這樣往往不便於類的管理,所以一向是提倡乙個檔案中只存放乙個類。不過呢,隨著類規模的不斷膨脹,乙個檔案中存放乙個類也有些顯得臃腫,或者是在某個角度上不便於 的組織。因此,c 2.0中引入了不完全型別的概念,即啟用了新的修飾符partial。借助該修飾符,我們可以在多...

不完全型別

不完全型別指 函式之外 型別的大小不能被確定的型別 總結一下,c的型別分為 結構體的宣告就是乙個不完全型別的典型例子。struct woman tag struct man tag struct woman tag 這樣是沒問題的。如果將man tag結構中的struct woman tag wif...

不完全型別

有時候我們在一些編譯器寫 的時候會碰見不完全型別這個編譯錯誤,那麼什麼是不完全型別,為啥會出現呢 不完全型別指 函式之外 型別的大小不能被確定的型別 只能以有限方式使用。不能定義該型別的物件。不完全型別只能用於定義指向該型別的指標及引用 1 或者用於宣告使用該型別作為形參型別或者返回值型別。c的型別...