Oracle

每天恢復oracle數據庫12C增量備份

  • February 22, 2022

我需要每天按照以下順序在不同的數據庫伺服器上恢復我的備份

0 級僅遞增一次 1 級每天遞增

我成功地進行了 0 級恢復,但是當我使用增量備份 1 級控製文件恢復增量備份時,我注意到 RMAN 正在讀取完整備份文件並分配用於恢復 0 級的幾乎相同的空間。

我的問題是我可以在不恢復 0 級備份的情況下每天恢復增量 1 級備份嗎?如果數據文件已經從 0 級備份中存在,為什麼 rman 會為每次還原分配更多空間?

以下是用於完整和 inc 備份的腳本

滿的

#!/bin/bash ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1

ORACLE_SID=cdb11

路徑= $ PATH: $ ORACLE_HOME/bin

DD =date +%Y-%m-%d-%H-%M

導出 ORACLE_HOME ORACLE_SID 路徑 DD

mkdir /ArchiveDBBackup/DAILY_RMAN/${DD}

LOGFILE=/ArchiveDBBackup/DAILY_RMAN/log/ date +%Y%m%dDAILY_FULLBKP_.log

rman target / LOG $LOGFILE <<EOF run { 備份為壓縮備份集增量級別 0 DEVICE TYPE DISK TAG=‘DAILY_BACKUP’ FORMAT ‘/ArchiveDBBackup/DAILY_RMAN/ $ {DD}/DAILY_FULLBKP_%D_%T_%s-%p’ check logical database plus archivelog; backup current controlfile format ‘/ArchiveDBBackup/DAILY_RMAN/ $ {DD}/CDB1_CONTROLFILE_%D_%T_%s-%p’; 備份 spfile 格式 ‘/ArchiveDBBackup/DAILY_RMAN/${DD}/CDB1_SPFILE_%D_%T_%s-%p’; }

INC

#!/bin/bash

ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1

ORACLE_SID=cdb11

路徑= $ PATH: $ ORACLE_HOME/bin

DD =date +%Y-%m-%d-%H-%M

導出 ORACLE_HOME ORACLE_SID 路徑 DD

mkdir /ArchiveDBBackup/DAILY_INC/${DD}

LOGFILE=/ArchiveDBBackup/DAILY_INC/log/ date +%Y%m%dDAILY_INCBKP_.log

rman target / LOG $LOGFILE <<EOF run { 備份為壓縮備份集 INCREMENTAL LEVEL 1 DEVICE TYPE DISK TAG=‘DAILY_INC’ FORMAT ‘/ArchiveDBBackup/DAILY_INC/ $ {DD}/DAILY_INCBKP_%D_%T_%s-%p’ check logical database plus archivelog; backup current controlfile format ‘/ArchiveDBBackup/DAILY_INC/ $ {DD}/CDB1_CONTROLFILE_%D_%T_%s-%p’; 備份 spfile 格式 ‘/ArchiveDBBackup/DAILY_INC/${DD}/CDB1_SPFILE_%D_%T_%s-%p’; }

增量備份會複製自上次增量備份以來更改的所有數據塊。如果您更新了大量數據,或者如果每天歸檔日誌的數量遠遠大於大多數數據文件的大小,那麼這可能會增加幾乎與完整備份一樣多的空間。

至於還原,RMAN 必須始終從最近的完整 0 級備份開始,然後在此基礎上應用所有增量更改以達到所需的時間點或 SCN 值。您不能僅從 1 級備份恢復,因為它只包含更改,而不是所有數據的基線起點。

您是否考慮過使用 rman 的“重複數據庫”功能,如下所述:https ://docs.oracle.com/database/121/BRADV/rcmdupdb.htm#BRADV010 ?

您沒有說明第二個數據庫的用途,但您可能需要考慮使用 DataGuard 創建一個 Snapshot Standby 數據庫。(這是普通的、“免費”的 DataGuard,而不是花錢的“活動”版本——儘管後者可能是您的另一種選擇)。

DataGuard 是一種災難恢復技術,可以使用日誌傳送來維護主數據庫的副本。在這種情況下,您首先創建一個物理備用數據庫,它是永久處於恢復模式的主數據庫的完整副本,從主數據庫接收重做。

然後,當您想使用此備用數據庫時,您可以將它從 DataGuard 中“拔出”並打開它,就像任何其他數據庫一樣——這就是快照備用數據庫。您可以以任何您喜歡的方式使用此數據庫,甚至可以對其進行更改(但不要)。

當您想從主節點“刷新”備用節點時,您將其“插入”回 DataGuard,然後它將“趕上”主節點上生成的所有重做日誌,使備用節點恢復最新狀態。

警告:這需要大量磁碟空間。

您不僅需要緩沖在主節點上生成的所有重做日誌(在主節點和備用節點上都保存在 FRA 中),而且還需要閃回

$$ Database $$登錄到位。DataGuard 使用它來將備用數據庫“閃回”到它從主數據庫“拔出”的點,以便重做應用可以從中斷的地方繼續。

(還記得我說過你不應該對 Snapshot Standby 進行更改嗎?這就是為什麼!) 如果你有錢,你也可以考慮“Active” DataGuard。

在這種安排中,您有一個物理備用數據庫,永久連接到主數據庫並一直接收重做,但“活動”部分也允許您對其執行查詢。不過,我很確定您無法進行任何更改。

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