RM新时代国际平台

  • <div id="r605l"></div>
      1. <th id="r605l"></th>
      2. Oracle Rman 不完全恢復(fù)實操講解

        引起不完全恢復(fù)的原因有很多,如丟失了聯(lián)機重做日志或歸檔的重做日志,或者出現(xiàn)重大的用戶錯誤。

        不完全恢復(fù)會影響整個數(shù)據(jù)庫,換句話,不能只對數(shù)據(jù)庫的一部分執(zhí)行不完全恢復(fù)操作,因為這個會使數(shù)據(jù)庫的一部分具有與這個數(shù)據(jù)庫其余部分不同的SCN和時間點。

        0F27K81D62FO_DSC_0047.jpg

        要將數(shù)據(jù)庫數(shù)據(jù)還原到與數(shù)據(jù)庫剩余部分不同的時間點,可以用基于表空間時間恢復(fù)或者用閃回技術(shù)。

        不完全恢復(fù)方法包括:基于時間、SCN、日志序列、取消的恢復(fù)。

        使用RMAN執(zhí)行不完全恢復(fù)操作時需要完成一個工作是建立恢復(fù)目標。恢復(fù)目錄是恢復(fù)進程的終點,通常基于一個時間點,一個指定的SCN 或者一個日志序列號來表示它。我們可以采用許多不同的方法建立恢復(fù)目標。

        在run 代碼塊中使用set 命令與until time,until SCN 或 until sequence參數(shù)

        Run

        {

        set until time "to_date('2019-07-26 13:47:00','yyyy-mm-dd hh24:mi:ss')";

        Restore database;

        Recover database;

        }

        執(zhí)行命令時,RMAN 會查找與恢復(fù)目標時間最近(并非恢復(fù)目標時間本身也不能是位于恢復(fù)目標之間的時間)的備份集,并且從這個備份集中還原數(shù)據(jù)庫。 如果數(shù)據(jù)庫置于noarchivelog 模式中,恢復(fù)操作會在備份集的時間停止;否則在執(zhí)行recover命令期間,oracle 會在所定義的恢復(fù)目標(不包含恢復(fù)目標本身)上應(yīng)用歸檔的重做日志(以及需要應(yīng)用的任何增量備份)。

        注意: 如果嘗試恢復(fù)到特定備份的完成點,則必須恢復(fù)到備份集中文件的CKP SCN 或 CKP TIME,在不同備份集的RMAN list命令中會列出這些內(nèi)容。有時使用備份的CKP TIME 并不夠,還可能導(dǎo)致ORA-1152錯誤。

        在restore 和recover 命令中直接使用until time,until SCN 和 until sequence 參數(shù)

        這種方法避免使用run代碼塊,也傾向與使用這種方法。

        Startup mount;

        Restore database until time "to_date('2019-07-26 14:30:39','yyyy-mm-dd hh24:mi:ss')";

        Recover database until time "to_date('2010-07-05 14:02:00','yyyy-mm-dd hh24:mi:ss')";

        Alter database open resetlogs;

        這種恢復(fù)類型允許用戶將數(shù)據(jù)庫恢復(fù)到與指定時間一致的狀態(tài)。當然,如果不存在能將數(shù)據(jù)庫還原到用戶請求的時間的有效備份或歸檔重做日志,Oracle 就會報RMAN-03002 和 RMAN-20207的錯誤。

        必須具備在我們指定的恢復(fù)時間之前生成的數(shù)據(jù)庫備份,此外還需要所有歸檔的重做日志。

        Oracle允許用戶將數(shù)據(jù)庫恢復(fù)到指定的SCN,實際上,這并不是一種常見的恢復(fù)方法。示例如下:

        Startup mount;

        Restore database until SCN 1000;

        Recover database until SCN 1000;

        Alter database open resetlogs;

        注意:該示例可以將數(shù)據(jù)庫還原到SCN 1000,但是不會包含SCN.

        RMAN 允許用戶將數(shù)據(jù)庫恢復(fù)到指定序列號的歸檔重做日志。如果歸檔的重做日志中存在間隙,使用這種恢復(fù)方法就非常方便。 間隙通常意味著我們只能將數(shù)據(jù)庫還原到間隙的開始點。

        Startup mount;

        Restore database until sequence 100 thread 1;

        Recover database until sequence 100 thread 1;

        Alter database open resetlogs;

        在默認情況下,即使丟失了只讀的數(shù)據(jù)文件,RMAN也不會在執(zhí)行完全恢復(fù)數(shù)據(jù)庫還原操作時還原只讀的數(shù)據(jù)文件。要在完全恢復(fù)期間還原只讀的數(shù)據(jù)文件,就必須在restore 命令中使用check readonly 參數(shù),如:

        Restore database check readonly;

        注意,執(zhí)行recover tablespace或recover datafile命令時,RMAN的工作情況是不一樣的。 使用這兩個命令時,不管表空間是否為只讀狀態(tài)都會執(zhí)行恢復(fù)操作。

        在使用RMAN的普通恢復(fù)過程中,不必恢復(fù)歸檔的重做日志。 不過,偶爾也會要求還原一個或多個歸檔的重做日志。 例如,我們可能需要使用LogMiner 在備份中存儲的歸檔重做日志文件里查找一些信息。

        Restore archivelog all;

        Restore archivelog from logseq=20 thread=1;

        Restore archivelog from logseq=20 until logseq=30 thread=1;

        還可以將歸檔的重做日志還原到默認位置以外的位置上:

        Run

        {

        Set archivelog destination to "d:/arch";

        Restore archivelog all;

        }

        注意:

        1. 上例中的set 命令沒有替代方法,必須要求使用set;

        2. 如果RMAN 認為一個歸檔的重做日志已存在,就不會在磁盤上還原這個歸檔的重做日志,即使設(shè)置的還原位置不同與默認的歸檔日志位置,Oracle 也不會在這個新的位置上恢復(fù)歸檔的重做日志。

        可以從數(shù)據(jù)文件副本(不是備份集)中還原數(shù)據(jù)庫的數(shù)據(jù)文件。 要實現(xiàn)這個功能,需要先使用restore from datafilecopy命令,然后再使用恢復(fù)數(shù)據(jù)庫(或表空間,數(shù)據(jù)文件)的recover。

        RMAN>Restore (datafile 5) from datafilecopy; -- 此處的圓括號是必須的,如果沒有就報錯

        RMAN>Recover datafile 5;

        SQL>Alter database datafile 5 online;


        下一篇:2024如何選擇自己的電腦 硬盤篇
        RM新时代国际平台
      3. <div id="r605l"></div>
          1. <th id="r605l"></th>
          2. <div id="r605l"></div>
              1. <th id="r605l"></th>
              2. 新时代RM|国际平台 新时代软件下载 RM新时代官网网址 rm新时代是正规平台 新时代rm平台入口