為什麼在不考慮冗餘的情況下將先前版本的備份標記為過時?
在不完全恢復並打開 9i 數據庫後,
resetlogs
我們執行了一個成功完成的完整備份。備份包含一個命令,用於在完成後刪除過時的備份:delete noprompt obsolete device type sbt;
RMAN 配置為使用 REDUNDANCY 2:
RMAN configuration parameters are: CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
然而,舊版本的所有備份都立即標記為過時並刪除,而不考慮冗餘。
- 如果我們有一個
RECOVERY WINDOW
配置而不是,這種行為會有所不同REDUNDANCY 2
嗎?- 這種行為在更高版本的 Oracle 中是否相同?
編輯:添加的輸出
LIST INCARNATION
:RMAN> list incarnation; List of Database Incarnations DB Key Inc Key DB Name DB ID CUR Reset SCN Reset Time ------- ------- -------- ---------------- --- -------------- ---------- 1 1 LIVE 3494832994 NO 1 19-JAN-04 2 2 LIVE 3494832994 NO 11966702870498 01-JAN-14 3 3 LIVE 3494832994 YES 12041003378277 04-JUL-18
對於感興趣的 RMAN 初學者
RMAN 策略
REDUNDANCY
和RECOVERY WINDOW
是互斥的。這意味著您可以設置一個或另一個。冗餘策略
設置
REDUNDANCY 2
將始終僅保留最後兩個備份並刪除(或標記為過時)任何其他以前的備份,這些備份不再需要使數據庫恢復到一致狀態。注意:
如果您在 FULL 和/或 LEVEL 0 備份之間有 LEVEL 1 和 ARCHIVELOG 備份,則應保留它們直到不再需要。
附加資訊
根據 PDF 文件Oracle 數據庫 - 備份和恢復參考,您的保留策略
REDUNDANCY 2
不應該刪除舊備份:以下場景說明了冗餘在增量備份策略中的工作原理。假設冗餘級別為 1。週一中午執行 0 級數據庫備份,週二和周三中午執行 1 級累積備份,週四中午執行 0 級備份。每次每日備份後立即執行
DELETE OBSOLETE
. 星期三DELETE
命令不會刪除星期二的 1 級備份,因為此備份不是冗餘的:星期二的 1 級備份可用於將星期一的 0 級備份恢復到星期二中午和星期三中午之間的時間。但是,DELETE
週四的命令會刪除之前的 0 級和 1 級備份。上面的範例使用值 1,但清楚地表明完整備份的早期備份不會被刪除,直到它們大於配置的值。
回答您的問題
- 這取決於,….(參見 2. 和“可能的問題”)
- 根據文件
retention policy
,所有版本的設置似乎仍然相同:
- Oracle 11c (11.1):配置
- Oracle 11c (11.2):配置
- Oracle 12c (12.1):配置
- Oracle 12c (12.2):配置
- Oracle 18c (18.x):配置
可能的問題
- 您在數據庫實例的備份和恢復過程中遇到了錯誤。
使用 Oracle 12c 進行複制
因為 Oracle RDBMS 9i 幾乎已經過時,而我們的環境幾乎是最新的,所以我只能在 12c 環境中重新迭代/重現這些步驟。
RMAN 配置
RMAN 使用預設設置:
RMAN> 全部顯示; 具有 db_unique_name ORACLE12JN 的數據庫的 RMAN 配置參數是: 將保留政策配置為冗餘 2; 配置備份優化關閉;# 預設 將預設設備類型配置到磁碟;# 預設 配置控製文件自動備份;# 預設 將設備類型磁碟的控製文件自動備份格式配置為“%F”;# 預設 配置設備類型磁碟並行 1 備份類型到備份;# 預設 將設備類型磁碟的數據文件備份副本配置為 1;# 預設 將設備類型磁碟的存檔日誌備份副本配置為 1;# 預設 將 MAXSETSIZE 配置為無限;# 預設 為數據庫關閉配置加密;# 預設 配置加密算法“AES128”;# 預設 配置壓縮算法“基本”作為發布“預設”優化負載真;# 預設 配置 RMAN 輸出保持 7 天;# 預設 將歸檔日誌刪除策略配置為無;# 預設 將快照控製文件名稱配置為“C:\ORACLE_12\PRODUCT\12.2.0\DBHOME_1\DATABASE\SNCFORACLE12JN.ORA”;# 預設
RMAN 備份
通過發出一個簡單的
backup database;
命令來執行 RMAN 備份:RMAN> 備份數據庫; 2018 年 7 月 17 日開始備份 使用通道 ORA_DISK_1 通道 ORA_DISK_1:開始完整的數據文件備份集 通道 ORA_DISK_1:指定備份集中的數據文件 輸入數據文件文件號=00001 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\SYSTEM01.DBF 輸入數據文件文件號=00005 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\UNDOTBS01.DBF 輸入數據文件文件號=00003 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\SYSAUX01.DBF 輸入數據文件文件號=00007 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\USERS01.DBF 通道 ORA_DISK_1:18 年 7 月 17 日開始的第 1 塊 通道 ORA_DISK_1:18 年 7 月 17 日完成的第 1 件 件句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNNDF_TAG20180717T151608_FNVV0RH4_.BKP tag=TAG20180717T151608 註釋=NONE 通道 ORA_DISK_1:備份集完成,經過時間:00:00:15 2018 年 7 月 17 日完成備份 2018 年 7 月 17 日開始控製文件和 SPFILE 自動備份 件句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\AUTOBACKUP\2018_07_17\O1_MF_S_981731783_FNVV17QR_.BKP 註釋=NONE 2018 年 7 月 17 日完成控製文件和 SPFILE 自動備份
驗證備份、檢查過時的備份和列出化身
在執行了一段時間的備份後,我再次檢查了 RMAN 目錄:
RMAN> 列出備份摘要; 備份列表 =============== 密鑰 TY LV S 設備類型 完成時間 #Pieces #Copies 壓縮標籤 ------- -- -- - ----------- ------------------- ------- ------- ---------- --- 3 BFA 磁碟 2018-07-16 10:03:01 1 1 無標籤20180716T100301 5 BFA 磁碟 2018-07-16 10:27:44 1 1 無標籤20180716T102744 7 BFA 磁碟 2018-07-16 10:49:50 1 1 無標籤20180716T104950 9 BFA 磁碟 2018-07-16 10:50:08 1 1 無標籤20180716T105007 11 BFA 磁碟 2018-07-16 10:50:22 1 1 無標籤20180716T105022 13 BFA 磁碟 2018-07-16 10:51:21 1 1 無標籤20180716T105121 15 BFA 磁碟 2018-07-16 13:06:13 1 1 無標籤20180716T130612 17 BFA 磁碟 2018-07-16 15:26:23 1 1 無標籤20180716T152623 19 BFA 磁碟 2018-07-16 15:57:07 1 1 無標籤20180716T155707 20 B 0 A 磁碟 2018-07-17 08:22:01 1 1 無標籤20180717T082154 21 BFA 磁碟 2018-07-17 08:22:02 1 1 無標籤20180717T082202 22 B 0 A 磁碟 2018-07-17 14:36:07 1 1 無標籤20180717T143558 23 BFA 磁碟 2018-07-17 14:36:14 1 1 無標籤20180717T143614 24 BFA 磁碟 2018-07-17 15:16:15 1 1 無標籤20180717T151608 25 BFA 磁碟 2018-07-17 15:16:23 1 1 無標籤20180717T151623 26 BAA 磁碟 2018-07-17 15:55:52 1 1 無標籤20180717T155551 27 BFA 磁碟 2018-07-17 15:55:53 1 1 無標籤20180717T155553 28 BFA 磁碟 2018-07-17 16:05:17 1 1 無標籤20180717T160517
驗證周圍沒有過時的備份:
RMAN> 報告過時; RMAN 保留策略將應用於命令 RMAN 保留策略設置為冗餘 2 未找到過時的備份 RMAN>
並列出了目前的化身:
RMAN> 列表化身; 數據庫化身列表 DB Key Inc Key DB 名稱 DB ID STATUS Reset SCN Reset Time ------- ------- -------- ---------------- --- ---------- ---------- 1 1 ORACLE12 2083073378 家長 1 2017-03-08 15:57:31 2 2 ORACLE12 2083073378 目前 1490582 2018-07-16 09:27:03
執行首次還原/恢復
發出以下命令以將數據庫恢復/恢復到一致狀態:
RMAN> 立即關閉 數據庫關閉 數據庫已解除安裝 Oracle 實例關閉 RMAN> 啟動掛載; 連接到目標數據庫(未啟動) Oracle 實例已啟動 數據庫掛載 總系統全域區域 1610612736 字節 固定大小 8747368 字節 可變大小 385877656 字節 數據庫緩衝區 1207959552 字節 重做緩衝區 8028160 字節 RMAN> 執行 2> { 3> 設置到時間'2018-07-17 14:36:14'; 4> 恢復數據庫; 5> 恢復數據庫; 6>} 執行命令:SET until 子句 2018-07-17 16:04:30 開始恢復 分配通道:ORA_DISK_1 通道 ORA_DISK_1:SID=12 設備類型=DISK 通道 ORA_DISK_1:開始數據文件備份集恢復 通道 ORA_DISK_1:指定要從備份集中恢復的數據文件 通道 ORA_DISK_1:將數據文件 00001 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\SYSTEM01.DBF 通道 ORA_DISK_1:將數據文件 00003 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\SYSAUX01.DBF 通道 ORA_DISK_1:將數據文件 00005 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\UNDOTBS01.DBF 通道 ORA_DISK_1:將數據文件 00007 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\USERS01.DBF 通道 ORA_DISK_1:從備份片 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T143558_FNVROH49_.BKP 讀取 通道 ORA_DISK_1:片柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T143558_FNVROH49_.BKP tag=TAG20180717T143558 通道 ORA_DISK_1:恢復的備份片 1 通道 ORA_DISK_1:恢復完成,經過時間:00:00:07 2018-07-17 16:04:38 完成恢復 2018-07-17 16:04:38 開始恢復 使用通道 ORA_DISK_1 開始媒體恢復 媒體恢復完成,經過時間:00:00:00 2018-07-17 16:04:39 完成恢復 RMAN> 改變數據庫打開重置日誌; 已處理報表 RMAN> 列表化身; 數據庫化身列表 DB Key Inc Key DB 名稱 DB ID STATUS Reset SCN Reset Time ------- ------- -------- ---------------- --- ---------- ---------- 1 1 ORACLE12 2083073378 家長 1 2017-03-08 15:57:31 2 2 ORACLE12 2083073378 父 1490582 2018-07-16 09:27:03 3 3 ORACLE12 2083073378 目前 1701490 2018-07-17 16:05:13 RMAN> 列出備份摘要; 備份列表 =============== 密鑰 TY LV S 設備類型 完成時間 #Pieces #Copies 壓縮標籤 ------- -- -- - ----------- ------------------- ------- ------- ---------- --- 3 BFA 磁碟 2018-07-16 10:03:01 1 1 無標籤20180716T100301 5 BFA 磁碟 2018-07-16 10:27:44 1 1 無標籤20180716T102744 7 BFA 磁碟 2018-07-16 10:49:50 1 1 無標籤20180716T104950 9 BFA 磁碟 2018-07-16 10:50:08 1 1 無標籤20180716T105007 11 BFA 磁碟 2018-07-16 10:50:22 1 1 無標籤20180716T105022 13 BFA 磁碟 2018-07-16 10:51:21 1 1 無標籤20180716T105121 15 BFA 磁碟 2018-07-16 13:06:13 1 1 無標籤20180716T130612 17 BFA 磁碟 2018-07-16 15:26:23 1 1 無標籤20180716T152623 19 BFA 磁碟 2018-07-16 15:57:07 1 1 無標籤20180716T155707 20 B 0 A 磁碟 2018-07-17 08:22:01 1 1 無標籤20180717T082154 21 BFA 磁碟 2018-07-17 08:22:02 1 1 無標籤20180717T082202 22 B 0 A 磁碟 2018-07-17 14:36:07 1 1 無標籤20180717T143558 23 BFA 磁碟 2018-07-17 14:36:14 1 1 無標籤20180717T143614 24 BFA 磁碟 2018-07-17 15:16:15 1 1 無標籤20180717T151608 25 BFA 磁碟 2018-07-17 15:16:23 1 1 無標籤20180717T151623 26 BAA 磁碟 2018-07-17 15:55:52 1 1 無標籤20180717T155551 27 BFA 磁碟 2018-07-17 15:55:53 1 1 無標籤20180717T155553 28 BFA 磁碟 2018-07-17 16:05:17 1 1 無標籤20180717T160517 RMAN> 報告過時; RMAN 保留策略將應用於命令 RMAN 保留策略設置為冗餘 2 未找到過時的備份
還原成功,並且沒有備份被標記為過時,即使在還原後化身已更改並且已
ALTER DATABASE OPEN RESETLOGS
發布。替代化身列表
可以使用以下命令實現化身的替代表示:
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss'; set pages 50 set lines 230 column Path format a20 select INCARNATION#, RESETLOGS_CHANGE#, RESETLOGS_TIME, PRIOR_INCARNATION#, STATUS, LEVEL, SYS_CONNECT_BY_PATH(INCARNATION#, ' -> ') Path from v$database_incarnation WHERE LEVEL >=1 START WITH INCARNATION# = '1' CONNECT BY PRIOR INCARNATION# = PRIOR_INCARNATION# order by Level, Path, RESETLOGS_TIME;
輸出:
INCARNATION#RESETLOGS_CHANGE#RESETLOGS_TIME PRIOR_INCARNATION#狀態等級路徑 ------------ ----------------- ------------------- ------------------ ------- ---------- -------------------- 1 1 2017-03-08 15:57:31 0 父母 1 -> 1 2 1490582 2018-07-16 09:27:03 1 父母 2 -> 1 -> 2 3 1701490 2018-07-17 16:05:13 2 目前 3 -> 1 -> 2 -> 3
在數據庫實例中查詢本地目錄的優點是將化身表示為要遵循的路徑
執行第二次還原/恢復
發出以下命令以再次將數據庫恢復/恢復到一致狀態:
RMAN> 立即關閉 數據庫關閉 數據庫已解除安裝 Oracle 實例關閉 RMAN> 啟動掛載 連接到目標數據庫(未啟動) Oracle 實例已啟動 數據庫掛載 總系統全域區域 1610612736 字節 固定大小 8747368 字節 可變大小 520095384 字節 數據庫緩衝區 1073741824 字節 重做緩衝區 8028160 字節 RMAN> 執行 2> { 3> 設置到時間'2018-07-17 08:22:01'; 4> 恢復數據庫; 5> 恢復數據庫; 6>} 執行命令:SET until 子句 2018-07-17 16:14:37 開始恢復 分配通道:ORA_DISK_1 通道 ORA_DISK_1: SID=11 設備類型=DISK RMAN-00571:============================================== ============== RMAN-00569:=============== 錯誤消息堆棧跟隨 =============== RMAN-00571:============================================== ============== RMAN-03002:在 2018 年 7 月 17 日 16:14:37 恢復命令失敗 RMAN-20207:UNTIL TIME 或 RECOVERY WINDOW 早於 RESETLOGS 時間
好的,我們在恢復路徑中遇到了一個化身“碰撞”。我們目前處於化身 3,如下面的化身清單所示,我從上面複製了該清單:
INCARNATION#RESETLOGS_CHANGE#RESETLOGS_TIME PRIOR_INCARNATION#狀態等級路徑 ------------ ----------------- ------------------- ------------------ ------- ---------- -------------------- 1 1 2017-03-08 15:57:31 0 父母 1 -> 1 2 1490582 2018-07-16 09:27:03 1 父母 2 -> 1 -> 2 3 1701490 2018-07-17 16:05:13 2 目前 3 -> 1 -> 2 -> 3
…我們的目標是在化身 2 的 RESETLOGS 之後進行備份。讓我們將化身重置為 2 並繼續備份:
RMAN> 將數據庫重置為化身 2; 數據庫重置為化身 2 RMAN>
似乎工作。讓我們再次重新啟動還原/恢復:
RMAN> 執行 2> { 3> 設置到時間'2018-07-17 08:22:01'; 4> 恢復數據庫; 5> 恢復數據庫; 6>} 執行命令:SET until 子句 2018-07-17 16:16:12 開始恢復 使用通道 ORA_DISK_1 通道 ORA_DISK_1:開始數據文件備份集恢復 通道 ORA_DISK_1:指定要從備份集中恢復的數據文件 通道 ORA_DISK_1:將數據文件 00001 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\SYSTEM01.DBF 通道 ORA_DISK_1:將數據文件 00003 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\SYSAUX01.DBF 通道 ORA_DISK_1:將數據文件 00005 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\UNDOTBS01.DBF 通道 ORA_DISK_1:將數據文件 00007 恢復到 C:\ORACLE_12\ORADATA\ORACLE12JN\USERS01.DBF 通道 ORA_DISK_1:從備份片 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T082154_FNV2R328_.BKP 讀取 通道 ORA_DISK_1:片柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T082154_FNV2R328_.BKP tag=TAG20180717T082154 通道 ORA_DISK_1:恢復的備份片 1 通道 ORA_DISK_1:恢復完成,經過時間:00:00:07 於 2018-07-17 16:16:20 完成恢復 2018-07-17 16:16:20 開始恢復 使用通道 ORA_DISK_1 開始媒體恢復 具有序列 3 的執行緒 1 的歸檔日誌已作為文件 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_3_FNVXC7R7_.ARC 在磁碟上 歸檔日誌文件名=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_3_FNVXC7R7_.ARC 執行緒=1 序列=3 媒體恢復完成,經過時間:00:00:00 於 2018-07-17 16:16:21 完成恢復 RMAN> 改變數據庫打開重置日誌; 已處理報表 RMAN> 報告過時 2>; RMAN 保留策略將應用於命令 RMAN 保留策略設置為冗餘 2 未找到過時的備份 RMAN>
還原成功並且沒有備份被標記為過時,即使在還原後化身發生了變化並且
ALTER DATABASE OPEN RESETLOGS
再次發出了 。現在我們是一個更新的化身,仍然沒有Obsolete Backups
報告。第二次還原後的目前化身列表 (SQL)
SQL> select INCARNATION#, RESETLOGS_CHANGE#, RESETLOGS_TIME, PRIOR_INCARNATION#, STATUS, LEVEL, SYS_CONNECT_BY_PATH(INCARNATION#, ' -> ') v$database_incarnation 的路徑 WHERE LEVEL >=1 START WITH INCARNATION# = '1' CONNECT BY PRIOR INCARNATION # = PRIOR_INCARNATION# 按級別、路徑、RESETLOGS_TIME 排序; INCARNATION#RESETLOGS_CHANGE#RESETLOGS_TIME PRIOR_INCARNATION#狀態等級路徑 ------------ ----------------- ------------------- ------------------ ------- ---------- -------------------- 1 1 2017-03-08 15:57:31 0 父母 1 -> 1 2 1490582 2018-07-16 09:27:03 1 父母 2 -> 1 -> 2 3 1701490 2018-07-17 16:05:13 2 孤兒 3 -> 1 -> 2 -> 3 4 1691865 2018-07-17 16:16:29 2 目前 3 -> 1 -> 2 -> 4
啟動備份
第二次恢復後,讓我們再次備份數據庫:
RMAN> 備份數據庫; 2018-07-17 16:51:39 開始備份 使用通道 ORA_DISK_1 通道 ORA_DISK_1:開始完整的數據文件備份集 通道 ORA_DISK_1:指定備份集中的數據文件 輸入數據文件文件號=00001 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\SYSTEM01.DBF 輸入數據文件文件號=00005 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\UNDOTBS01.DBF 輸入數據文件文件號=00003 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\SYSAUX01.DBF 輸入數據文件文件號=00007 名稱=C:\ORACLE_12\ORADATA\ORACLE12JN\USERS01.DBF 通道 ORA_DISK_1:2018-07-17 16:51:39 的起始片段 1 通道 ORA_DISK_1:2018 年 7 月 17 日 16:51:46 完成的第 1 件 件句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNNDF_TAG20180717T165139_FNW0MVRT_.BKP tag=TAG20180717T165139 註釋=NONE 通道 ORA_DISK_1:備份集完成,經過時間:00:00:07 2018-07-17 16:51:46 完成備份 在 2018-07-17 16:51:46 開始控製文件和 SPFILE 自動備份 件句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\AUTOBACKUP\2018_07_17\O1_MF_S_981737506_FNW0N31S_.BKP 註釋=NONE 在 2018-07-17 16:51:47 完成控製文件和 SPFILE 自動備份 RMAN>
檢查過時
我們現在將檢查哪些(備份)文件已過時:
RMAN> 報告過時 2>; RMAN 保留策略將應用於命令 RMAN 保留策略設置為冗餘 2 過時備份和副本的報告 鍵入密鑰完成時間文件名/句柄 -------------------- ------ ------------------ -------------------- 備份集 20 2018-07-17 08:22:01 備份片 20 2018-07-17 08:22:01 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T082154_FNV2R328_.BKP 備份集 22 2018-07-17 14:36:07 備份片 22 2018-07-17 14:36:07 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T143558_FNVROH49_.BKP 備份集 24 2018-07-17 15:16:15 備份片 24 2018-07-17 15:16:15 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNNDF_TAG20180717T151608_FNVV0RH4_.BKP 存檔日誌 2 2018-07-17 15:55:51 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_3_FNVXC7R7_.ARC 備份集 26 2018-07-17 15:55:52 備份片 26 2018-07-17 15:55:52 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_ANNNN_TAG20180717T155551_FNVXC84F_.BKP 存檔日誌 3 2018-07-17 16:05:13 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_4_FNVXWSDY_.ARC RMAN>
檢查化身 (SQL)
SQL> select INCARNATION#, RESETLOGS_CHANGE#, RESETLOGS_TIME, PRIOR_INCARNATION#, STATUS, LEVEL, SYS_CONNECT_BY_PATH(INCARNATION#, ' -> ') v$database_incarnation 的路徑 WHERE LEVEL >=1 START WITH INCARNATION# = '1' CONNECT BY PRIOR INCARNATION # = PRIOR_INCARNATION# 按級別、路徑、RESETLOGS_TIME 排序; INCARNATION#RESETLOGS_CHANGE#RESETLOGS_TIME PRIOR_INCARNATION#狀態等級路徑 ------------ ----------------- ------------------- ------------------ ------- ---------- -------------------- 1 1 2017-03-08 15:57:31 0 父母 1 -> 1 2 1490582 2018-07-16 09:27:03 1 父母 2 -> 1 -> 2 3 1701490 2018-07-17 16:05:13 2 孤兒 3 -> 1 -> 2 -> 3 4 1691865 2018-07-17 16:16:29 2 目前 3 -> 1 -> 2 -> 4
可以看出,化身 3 現在是孤立的,因為它與數據庫目前狀態有關的直接繼承線已被破壞。在第一次恢復之後,我們及時返回並再次重新恢復了數據庫,這導致化身路徑
1 -> 2 -> 4
成為打開數據庫的目前祖先的直線。因為恢復目前數據庫的直接路徑是沿著 1、2、4 的化身,所以 RMAN 不需要保留上面列出的過時備份。可以安全地刪除它們。
刪除過時的
讓我們繼續刪除過時的備份:
RMAN> 刪除過時的 2>; RMAN 保留策略將應用於命令 RMAN 保留策略設置為冗餘 2 使用通道 ORA_DISK_1 刪除以下過時的備份和副本: 鍵入密鑰完成時間文件名/句柄 -------------------- ------ ------------------ -------------------- 備份集 20 2018-07-17 08:22:01 備份片 20 2018-07-17 08:22:01 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T082154_FNV2R328_.BKP 備份集 22 2018-07-17 14:36:07 備份片 22 2018-07-17 14:36:07 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T143558_FNVROH49_.BKP 備份集 24 2018-07-17 15:16:15 備份片 24 2018-07-17 15:16:15 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNNDF_TAG20180717T151608_FNVV0RH4_.BKP 存檔日誌 2 2018-07-17 15:55:51 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_3_FNVXC7R7_.ARC 備份集 26 2018-07-17 15:55:52 備份片 26 2018-07-17 15:55:52 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_ANNNN_TAG20180717T155551_FNVXC84F_.BKP 存檔日誌 3 2018-07-17 16:05:13 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_4_FNVXWSDY_.ARC 備份集 30 2018-07-17 16:17:52 備份片 30 2018-07-17 16:17:52 C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNNDF_TAG20180717T161743_FNVYN815_.BKP 是否真的要刪除上述對象(輸入 YES 或 NO)?是的 刪除的備份片 備份片句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T082154_FNV2R328_.BKP RECID=20 STAMP=981706915 刪除的備份片 備份片句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNND0_TAG20180717T143558_FNVROH49_.BKP RECID=22 STAMP=981729359 刪除的備份片 備份片句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNNDF_TAG20180717T151608_FNVV0RH4_.BKP RECID=24 STAMP=981731768 已刪除歸檔日誌 歸檔日誌文件名=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_3_FNVXC7R7_.ARC RECID=2 STAMP=981734151 刪除的備份片 備份片句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_ANNNN_TAG20180717T155551_FNVXC84F_.BKP RECID=26 STAMP=981734152 已刪除歸檔日誌 歸檔日誌文件名=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\ARCHIVELOG\2018_07_17\O1_MF_1_4_FNVXWSDY_.ARC RECID=3 STAMP=981734713 刪除的備份片 備份片句柄=C:\ORACLE_12\RECOVERY_AREA\ORACLE12JN\BACKUPSET\2018_07_17\O1_MF_NNNDF_TAG20180717T161743_FNVYN815_.BKP RECID=30 STAMP=981735464 刪除了 7 個對象
列出備份摘要
現在我們已經刪除了一些備份文件,並且 RMAN 進行了一些內部清理,讓我們看一下備份摘要:
RMAN> 列出備份摘要; 備份列表 =============== 密鑰 TY LV S 設備類型 完成時間 #Pieces #Copies 壓縮標籤 ------- -- -- - ----------- ------------------- ------- ------- ---------- --- 3 BFA 磁碟 2018-07-16 10:03:01 1 1 無標籤20180716T100301 5 BFA 磁碟 2018-07-16 10:27:44 1 1 無標籤20180716T102744 7 BFA 磁碟 2018-07-16 10:49:50 1 1 無標籤20180716T104950 9 BFA 磁碟 2018-07-16 10:50:08 1 1 無標籤20180716T105007 11 BFA 磁碟 2018-07-16 10:50:22 1 1 無標籤20180716T105022 13 BFA 磁碟 2018-07-16 10:51:21 1 1 無標籤20180716T105121 15 BFA 磁碟 2018-07-16 13:06:13 1 1 無標籤20180716T130612 17 BFA 磁碟 2018-07-16 15:26:23 1 1 無標籤20180716T152623 19 BFA 磁碟 2018-07-16 15:57:07 1 1 無標籤20180716T155707 21 BFA 磁碟 2018-07-17 08:22:02 1 1 無標籤20180717T082202 23 BFA 磁碟 2018-07-17 14:36:14 1 1 無標籤20180717T143614 25 BFA 磁碟 2018-07-17 15:16:23 1 1 無標籤20180717T151623 27 BFA 磁碟 2018-07-17 15:55:53 1 1 無標籤20180717T155553 28 BFA 磁碟 2018-07-17 16:05:17 1 1 無標籤20180717T160517 29 BFA 磁碟 2018-07-17 16:16:34 1 1 無標籤20180717T161634 31 BFA 磁碟 2018-07-17 16:17:59 1 1 無標籤20180717T161759 32 BFA 磁碟 2018-07-17 16:51:46 1 1 無標籤20180717T165139 33 BFA 磁碟 2018-07-17 16:51:47 1 1 無標籤20180717T165146 34 BFA 磁碟 2018-07-18 07:24:13 1 1 無標籤20180718T072405 35 BFA 磁碟 2018-07-18 07:24:21 1 1 無標籤20180718T072421 RMAN>
正如我們所看到的,我們仍然有“至少”兩個完整的備份,這將允許我們恢復數據庫過去的兩個備份。RMAN(在 12c 中)沒有刪除沿化身路徑或孤立化身之外的任何其他備份。
結論
關於在 9i 中初始還原後刪除的備份,我相信有兩種可能的情況:
- 你遇到了一個錯誤。
- 恢復後啟動了兩個(完整)備份,導致備份在磁帶上被刪除。
參考資料
Doc ID 206862.1(RMAN 保留策略如何廢棄增量備份集和存檔日誌文件)
- 適用於 Oracle 9i+