Oracle RMAN還原與恢複講解(四)如何在非歸檔模式中還原與恢複資料庫

來源:互聯網
上載者:User

如果資料庫在noarchivelog模式下,我們將從完全的離線備份中恢複這個資料庫,並且不可能實現時間點恢複。

1、還原的準備工作

如果在noarchivelog 模式中運行資料庫並且假定擁有資料庫的一個備份,就可以非常容易地執行資料庫的完全恢複。 首先要清理所有的資料檔案,以及舊的重做日誌和控制檔案。 雖然不是一定要這麼做,但由於使用了noarchivelog模式,我們希望一切從頭開始。

清理完資料檔案,控制檔案和重做日誌後,就可以開始啟動恢複進程。 首先,可以從最近產生的備份中恢複控制檔案,或者可以使用在某個時間點(備份完成後的時間內)建立的備份控制檔案。 如果使用create control file命令,就需要在還原資料庫之前把與RMAN 備份相關的檔案編程目錄。

如果恢複了伺服器參數檔案和控制檔案,就可以忽視使用恢複目錄和不使用恢複目錄之間的差異。 因此,我們只介紹不使用恢複目錄的恢複操作。 此外,使用FRA 和不使用FRA的恢複操作也沒有很大區別。

恢複操作的RMAN 命令如下:

Startup mount;

Restore database;

Recover database noredo; -- 如果聯機日誌存在,可以用recover database代替

Alter database open resetlogs;

這裡假定已經恢複了伺服器參數檔案和資料庫控制檔案。 第一條命令startup mount 載入資料庫,因此Orace 會讀取準備用於資料庫還原操作的控制檔案。 第二條命令restore database將使RMAN 啟動資料庫的還原作業。 第三條命令指示RMAN執行最後的恢複操作以準備開啟這個資料庫。  由於是noarchivelog 模式,並且不應用任何歸檔的重做日誌並且丟失了聯機重做日誌,所以在這條命令中使用noredo 參數。 如果存在完整的聯機重做日誌,就不需要使用noredo 參數。 最後,使用alter database open resetlogs 命令開啟這個資料庫。 由於已經還原了控制檔案,並且需要重新構建聯機重做日誌,所以必須使用resetlogs 命令。

Resetlogs 表示一個資料庫邏輯生命週期的結束與另一個邏輯生命週期的開始,使用resetlogs後,SCN不會被重設,但是會重設記錄序號,重設redo log。 以防止不完全恢複後日誌序列發生衝突。

2、從舊備份中還原資料庫

有事,我們可能需要還原多個備份,並且想要從最新備份之外的某些備份中恢複資料庫。 在這種情況下,需要使用set命令和其他還原進程。 下面是實現比預設備份更早的備份中還原資料庫:

Startup mount;

Run

{

Set until time "to_date('2010-6-28 17:04:00','yyyy-mm-dd hh24:mi:ss')";

Restore database;

Recover database noredo;

Alter database open resetlogs;

}

這裡的set until time 命令被限定在run 代碼塊中。 如果要使用set until time命令,就必須滿足這個要求。 我們設定的時間是2010-6-28 17:04:00,Oracle會尋找最接近但是不會超過這個設定值的時間產生備份。 如果說在6-28日產生了3個備份。 分別是8點,18點,22點。 那麼RMAN 會選擇18點的備份。

如果不使用run 代碼塊,就必須在restore 命令中設定時間限制:

Startup mount;

Restore database until time "to_date('2010-6-28 17:04:00','yyyy-mm-dd hh24:mi:ss')";

Recover database noredo;

Alter database open resetlogs;

3、在不同的位置上還原資料庫

我們並不是總是希望將資料庫還原到Oracle檔案的原始檔案位置。 例如,在一個災難恢複練習中,我們可以將資料庫恢複到一個大的檔案系統中。

RMAN 預設將資料檔案還原到備份時資料檔案所在的原始位置。如果想更換位置,輸入set newname for datafile 和switch命令即可。 如:

Set newname for datafile 'D:/app/Administrator/oradata/orcl/dave01.dbf' to 'E:/app/Administrator/oradata/orcl';

這裡定義的是資料檔案的原始位置和RMAN應當將檔案複製到新的位置。 一旦對所有要還原到不同位置的資料檔案都執行了set newname for datafile命令,就可以使用restore 和 recover 命令。 最後,在開啟資料庫之前,必須告訴Oracle以後永久的使用已還原,重定位的資料檔案。 這裡我們使用swithch命令就可以。

Switch 命令可以修改資料庫控制檔案中資料檔案的位置,以反映Oracle資料庫檔案新的位置。 通常,使用switch datafile all命令,可以知識Oracle 轉換控制檔案中所有資料檔案位置。 此外switch datafile命令也可以轉換特定資料檔案的位置。

如果使用set newname for datafile命令但不轉換所有還原的資料檔案,RMAN 就會將沒有轉換的資料檔案當作資料檔案的副本,並且在恢複資料庫時RMAN不會嘗試使用這些沒有轉換的資料檔案。 樣本如:

Startup nomount;

Restore controlfile from autobackup;

Alter database mount;

Run

{

Set newname for datafile 'D:/app/Administrator/oradata/orcl/dave01.dbf' to 'E:/app/Administrator/oradata/orcl/dave01.dbf';

Set newname for datafile 'D:/app/Administrator/oradata/orcl/user01.dbf' to 'E:/app/Administrator/oradata/orcl/user01.dbf';

Restore database;

Recover database noredo;

Alter database open restlogs;

Switch datafile all;  -- 修改控制檔案中資料檔案位置

}

注意的是,如果恢複操作不成功,但是卻成功的還原了資料檔案,那麼還原的資料檔案就會成為資料檔案副本,並且不會被刪除。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.