Backup

Oracle 12cR2 - 映像副本備份方案

  • November 18, 2020

備份類型:映像副本。

場景:我想要 1 個完整數據庫 + 6 個增量備份,並在儲存上保留最近 7 天的備份。

這是我的腳本:

RUN {

allocate channel c1 device type disk format '/path/%U';

allocate channel c2 device type disk format '/path/%U';

allocate channel c3 device type disk format '/path/%U';

allocate channel c4 device type disk format '/path/%U';

allocate channel c5 device type disk format '/path/%U';

allocate channel c6 device type disk format '/path/%U';

allocate channel c7 device type disk format '/path/%U';

allocate channel c8 device type disk format '/path/%U';

CROSSCHECK ARCHIVELOG ALL;

CROSSCHECK BACKUP;

CROSSCHECK BACKUPSET;

CROSSCHECK COPY;

DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;

DELETE NOPROMPT EXPIRED BACKUP;

DELETE NOPROMPT EXPIRED BACKUPSET;

DELETE NOPROMPT EXPIRED COPY;

BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'my_tag_01' DATABASE;

RECOVER COPY OF DATABASE WITH TAG 'my_tag_01';

DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3';

BACKUP SPFILE FORMAT '/path/spfile_%T_%U';

BACKUP CURRENT CONTROLFILE FORMAT '/path/cfile_%T_%U';

}

exit

如何根據我的場景設計我的腳本?

非常感謝。

最好的祝福,

我假設你想要這樣的東西

跑
{
恢復數據庫副本
帶有標籤'incr_update'
直到時間'SYSDATE - 7';
備份
遞增級別 1
使用標籤“incr_update”恢復副本
數據庫;
}

第一次執行需要 0 級備份(即使備份語句具有level 1)所有以下備份都是level 1備份,僅包含與先前備份的差異。恢復語句恢復到SYSDATE-7,即直到一周前。刪除所有不需要的備份後,磁碟上有以下備份:

  • 7 天前的 0 級備份
  • 過去 6 天的每日 1 級備份,包括今天的備份
  • 過去 7 天的存檔日誌備份

我從未嘗試過這種策略,但我認為 7 天的恢復視窗是合適的策略。

對於控製文件,可以在數據庫備份和恢復使用者指南中找到以下內容

使用 RMAN 備份控製文件

您可以在安裝或打開數據庫時備份控製文件。

如果 CONFIGURE CONTROLFILE AUTOBACKUP 命令設置為 ON(預設為 OFF),則 RMAN 會在每次備份後和數據庫結構更改後自動備份控製文件和伺服器參數文件。控製文件自動備份包含有關先前備份的元數據,這對於災難恢復至關重要。

如果未設置自動備份功能,則必須通過以下方式之一手動備份控製文件:

  • 執行備份電流控製文件。
  • 通過使用 BACKUP 命令的 INCLUDE CURRENT CONTROLFILE 選項在任何備份中包括控製文件的備份。
  • 備份數據文件 1,因為 RMAN 自動將控製文件和伺服器參數文件包含在數據文件 1 的備份中。

我們對包含數據文件 1 備份的整個數據庫進行備份,因此它也將包含控製文件的備份。但我也建議啟用控製文件的自動備份。

配置控製文件自動備份;

或者

將設備類型磁碟的控製文件自動備份格式配置為“/path/autobackup/%U”;

您希望能夠恢復到過去 7 天的每個時間點,因此您應該配置

將保留政策配置為 7 天的恢復視窗;

此刪除策略還包括存檔日誌的備份。

您還可以配置歸檔日誌刪除策略:

將歸檔日誌刪除策略配置為備份 1 次到設備類型磁碟;

此刪除策略與存檔目標有關,與存檔日誌備份無關。通常歸檔到“recovery_file_dest”。

歸檔日誌刪除策略適用於所有日誌歸檔目的地,包括快速恢復區。該策略不適用於備份集中的歸檔重做日誌文件。

只有快速恢復區的歸檔重做日誌文件才會被數據庫自動刪除。您可以執行 BACKUP … DELETE INPUT、DELETE ARCHIVELOG 或 DELETE OBSOLETE 命令從日誌歸檔目標(包括恢復區)手動刪除日誌。如果刪除命令上沒有指定 FORCE,則這些刪除命令遵循歸檔日誌刪除策略。如果指定了 FORCE,則刪除命令將忽略歸檔日誌刪除策略。

所以最後你有以下腳本:

您必須執行一次的配置腳本:

將設備類型磁碟的控製文件自動備份格式配置為“/path/autobackup/%U”;
將保留政策配置為 7 天的恢復視窗;
將歸檔日誌刪除策略配置為備份 1 次到設備類型磁碟;

每日備份的腳本:

跑 {
分配通道 c1 設備類型磁碟格式 '/path/%U';
分配通道 c2 設備類型磁碟格式 '/path/%U';
分配通道 c3 設備類型磁碟格式 '/path/%U';
分配通道 c4 設備類型磁碟格式 '/path/%U';
分配通道 c5 設備類型磁碟格式 '/path/%U';
分配通道 c6 設備類型磁碟格式 '/path/%U';
分配通道 c7 設備類型磁碟格式 '/path/%U';
分配通道 c8 設備類型磁碟格式 '/path/%U';
恢復數據庫副本
帶有標籤'incr_update'
直到時間'SYSDATE - 7';
備份
遞增級別 1
使用標籤“incr_update”恢復副本
數據庫; 
備份存檔所有刪除輸入;
刪除過時的;
}

以及用於頻繁備份存檔日誌的以下腳本。也許您想為歸檔日誌使用更少的通道。

跑 {
分配通道 c1 設備類型磁碟格式 '/path/%U';
分配通道 c2 設備類型磁碟格式 '/path/%U';
分配通道 c3 設備類型磁碟格式 '/path/%U';
分配通道 c4 設備類型磁碟格式 '/path/%U';
分配通道 c5 設備類型磁碟格式 '/path/%U';
分配通道 c6 設備類型磁碟格式 '/path/%U';
分配通道 c7 設備類型磁碟格式 '/path/%U';
分配通道 c8 設備類型磁碟格式 '/path/%U';
備份存檔所有刪除輸入;
}

如果您不希望在每次備份後進行恢復,那麼另一種方法是使用增量備份的以下策略

每週執行一次以下腳本以獲得 0 級備份

備份
增量級別 0
數據庫;

每隔一天進行一次 1 級備份

備份
遞增級別 1
數據庫;

或者你可以做一個

備份
增量級別 0 累積
數據庫;

同樣,您應該指定 7 天的恢復視窗並經常進行歸檔日誌備份。

您避免在每次備份後恢復數據庫副本,但現在您需要更多空間用於備份,因為現在您的備份空間上始終有兩個完整備份。1 級備份的數量也超過 6 個。

假設您的保留策略是 7 天,並且您總是在同一天同一時間進行 0 級備份(這是通常的做法),例如,您總是在周日 12:00 開始備份。現在我們有星期天 29日12:00。我們已經在磁碟上有兩個 0 級備份,一個在 22日12:00開始,一個在 15日12:00 開始。如果您現在想將數據庫恢復到 22 日 12:00 的時間點,這應該是可能的,因為您的保留策略是 7 天。但是對於此還原,您需要 15日的備份,因為備份在 22 日12:00還沒有完成(甚至沒有開始)。因此,如果您在 29日發出“DELETE OBSOLETE”命令, 12:00,這不會刪除從 15日12:00 開始的 0 級備份。如果您現在開始 0 級備份,您將在磁碟上擁有三個 0 級備份。如果您想避免這種情況以節省空間,您可以考慮使用 6 天而不是 7 天的恢復視窗。DELETE OBSOLETE然後您可以在 29日12:00發出聲明,然後再開始備份,15日進行的備份將被刪除。

所以最後你會得到這些腳本:

您必須執行一次的配置腳本:

將設備類型磁碟的控製文件自動備份格式配置為“/path/autobackup/%U”;
將保留政策配置為 6 天的恢復視窗;
將歸檔日誌刪除策略配置為備份 1 次到設備類型磁碟;

每週 0 級備份的腳本

跑 {
分配通道 c1 設備類型磁碟格式 '/path/%U';
分配通道 c2 設備類型磁碟格式 '/path/%U';
分配通道 c3 設備類型磁碟格式 '/path/%U';
分配通道 c4 設備類型磁碟格式 '/path/%U';
分配通道 c5 設備類型磁碟格式 '/path/%U';
分配通道 c6 設備類型磁碟格式 '/path/%U';
分配通道 c7 設備類型磁碟格式 '/path/%U';
分配通道 c8 設備類型磁碟格式 '/path/%U';
刪除過時的;
備份
增量級別 0
DATABASE PLUS ARCHIVELOG 刪除輸入; 
}

級別 1 備份的每日腳本(級別 0 執行的那一天除外):

跑 {
分配通道 c1 設備類型磁碟格式 '/path/%U';
分配通道 c2 設備類型磁碟格式 '/path/%U';
分配通道 c3 設備類型磁碟格式 '/path/%U';
分配通道 c4 設備類型磁碟格式 '/path/%U';
分配通道 c5 設備類型磁碟格式 '/path/%U';
分配通道 c6 設備類型磁碟格式 '/path/%U';
分配通道 c7 設備類型磁碟格式 '/path/%U';
分配通道 c8 設備類型磁碟格式 '/path/%U';
刪除過時的;
備份
遞增級別 1
DATABASE PLUS ARCHIVELOG 刪除輸入; 
}

和存檔日誌備份的腳本

跑 {
分配通道 c1 設備類型磁碟格式 '/path/%U';
分配通道 c2 設備類型磁碟格式 '/path/%U';
分配通道 c3 設備類型磁碟格式 '/path/%U';
分配通道 c4 設備類型磁碟格式 '/path/%U';
分配通道 c5 設備類型磁碟格式 '/path/%U';
分配通道 c6 設備類型磁碟格式 '/path/%U';
分配通道 c7 設備類型磁碟格式 '/path/%U';
分配通道 c8 設備類型磁碟格式 '/path/%U';
備份存檔所有刪除輸入;
}

引用自:https://dba.stackexchange.com/questions/279813