Skip to main content
Enterprise applications
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

Oracle 自動恢復(無需備份模式)

Oracle 12c 發布後,基於 Snapshot 快照技術的備份與還原變得更加簡單,因為無需將資料庫置於熱備份模式。因此,可以直接在儲存系統上排程基於 Snapshot 快照技術的備份。

雖然 DBA 較熟悉熱備份還原程序、但很長一段時間以來、它仍能使用資料庫處於熱備份模式時未建立的快照。恢復期間、 Oracle 10g 和 11g 需要額外的手動步驟、才能使資料庫保持一致。使用 Oracle 12c 、 sqlplusrman 包含額外的邏輯、可在非熱備份模式的資料檔案備份上重播歸檔記錄。

如前所述、復原快照型熱備份需要兩組資料:

  • 在備份模式下建立的資料檔案快照

  • 資料檔案處於熱備份模式時所產生的歸檔記錄

在還原期間、資料庫會從資料檔案讀取中繼資料、以選取所需的歸檔記錄進行還原。

不使用備份模式的自動恢復需要略有不同的資料集才能達到相同的效果:

  • 資料檔案的 Snapshot 快照技術。

  • 一組同步的歸檔日誌、控制檔和重做日誌。歸檔日誌必須包含自資料檔案 Snapshot 快照技術建立以來的所有記錄,因此請謹慎進行積極的日誌修剪。

在恢復期間,資料庫會從資料檔案讀取中繼資料,以識別所需的日誌記錄,並重播所有已記錄的交易。

注意:

這種方法可以近似實現時間點恢復,但精細度有限。例如,如果從備份模式的資料檔案開始,則可以將資料庫向前滾動至任意交易。

如果使用自動恢復方式,而不使用備份模式,則必須將資料庫恢復到日誌 Snapshot 快照技術的時間點。正常情況下,復原點目標 (RPO) 仍為零,因為原始歸檔日誌、重做日誌和控制檔仍保留在作用中檔案系統中。如果由於作用中檔案系統中的所有資料遺失而需要完全從 Snapshot 快照技術進行恢復,則 RPO 將為一小時。

== 資料佈局 最簡單的佈局是將資料檔案隔離在專用磁碟區、LUN 或 NVMe 命名空間。儲存資源不得受任何其他檔案類型污染。這是為了確保可以透過 SnapRestore 操作快速恢復資料檔案,而不會破壞重要的重做日誌、控制檔案或歸檔日誌。

SAN 對專用資源內的資料檔案隔離也有類似的要求。對於使用 AFF 儲存設備的作業系統(例如 Microsoft Windows)、單一磁碟區可能包含多個資料檔案 LUN、每個 LUN 都使用 NTFS 檔案系統。而對於其他作業系統、通常會有一個邏輯磁碟區管理程式。例如、對於 Oracle ASM、最簡單的方案是將 ASM 磁碟群組的 LUN 限制在一個可以整體備份和還原的單一磁碟區中。如果出於效能或容量管理的原因需要額外的磁碟區、則在新磁碟區上建立額外的磁碟群組可以簡化管理。

ASA 不具備磁碟區層級抽象。而是使用一致性群組。在許多情況下,單一 LUN 或 NVMe 命名空間即可滿足資料庫的管理和效能要求。如果需要多個 LUN 或命名空間,則可以新增額外的資源並將其繫結到一個一致性群組中,該一致性群組將成為資料檔案容器。

如果遵循這些準則,可以直接在儲存系統上排程快照。

  • 注意: * 驗證 ASM spfilepasswd 檔案不在主控資料檔案的磁碟群組中。這會影響選擇性還原資料檔案和僅還原資料檔案的能力。

== 本地恢復程序—NFS 基本程序如下:

  1. 關閉資料庫。

  2. 將資料檔案磁碟區、LUN 或命名空間還原至所需還原點之前的快照。

  3. 執行 alter database automatic;

此程序假設所需的歸檔記錄檔仍存在於作用中的檔案系統中。如果沒有、則必須還原歸檔記錄、或 rmansqlplus 可導向至中的資料 .snapshot 目錄。

此外、對於較小的資料庫、終端使用者可以直接從中復原資料檔案 .snapshot 無需自動化工具或儲存管理員協助執行 SnapRestore 命令的目錄。

== 本機恢復流程—SAN 基本流程如下:

  1. 關閉資料庫。

  2. 將託管資料檔案的磁碟群組置於系統中。此程序會因所選的邏輯磁碟區管理程式而異。使用 ASM 時、此程序需要卸除磁碟群組。在 Linux 中、必須卸除檔案系統、並停用邏輯磁碟區和磁碟區群組。目標是停止要還原之目標 Volume 群組上的所有更新。

  3. 在所需還原點之前、立即將資料檔案磁碟群組還原至快照。

  4. 重新啟動新還原的磁碟群組。

  5. 執行 alter database automatic;

此程序假設所需的歸檔記錄仍存在於作用中檔案系統中。如果不存在、則必須透過將歸檔記錄 LUN 離線並執行還原來還原歸檔記錄。這也是將歸檔記錄分離到專用磁碟區、LUN 或命名空間非常實用的範例。如果歸檔記錄與重做記錄共用磁碟區群組、則必須先將重做記錄複製到其他位置、再還原整個 LUN 集、以避免遺失最終記錄的交易。

== 完全恢復範例 假設資料檔案已損壞或遺失,需要進行完全恢復。具體步驟如下:

[oracle@host1 ~]$ sqlplus / as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size                  2924928 bytes
Variable Size            1040191104 bytes
Database Buffers          553648128 bytes
Redo Buffers               13848576 bytes
Database mounted.
SQL> recover automatic;
Media recovery complete.
SQL> alter database open;
Database altered.
SQL>