試驗目的: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的型別...