IBM Cloud Docs
將 SAP ERP 6.0 與 Oracle 遷移到 IBM Power Virtual Server

將 SAP ERP 6.0 與 Oracle 遷移到 IBM Power Virtual Server

來源系統的準備步驟

目標受眾與意圖

本文件為 Oracle Database 管理員 (DBA) 提供兩個選項,都是以 Oracle RMAN 為基礎,將 AIX-based Oracle 資料庫從 IBM Power 遷移到 IBM Power Virtual Server ( IBM Power Virtual Server )。

目標受眾包括解決方案和基礎架構架構師及 Oracle 資料庫管理員。

其目的是介紹執行計劃和程序的代表性步驟,以執行 Oracle 資料庫遷移,並承認每個遷移方案在部署、組態和可用資源方面都有其獨特的挑戰。

在本文件中,通用名詞 Discovery 表示 Oracle DBA 有責任發現記錄客戶目前的 Oracle / SAP 基礎結構。 如果客戶需要提出事件以報告問題,這將非常有用。

範圍與涵蓋

以下所有程序都需要來源系統和目標系統之間的網路連線,以及足夠的網路頻寬以進行資料傳輸和/或資料複製。

使用選購的行動或容器解決方案 (例如結合 IBM Cloud Object Storage 的 Seagate Lyve 行動解決方案) 或傳輸內部備份/資料庫檔案至 基礎結構的替代程序的討論。IBM Aspera Connect 以將內部備份/資料庫檔案傳輸至 IBM Power Virtual Server 基礎架構的替代程序。 有關這項服務詳細資訊的連結,可在 IBM Cloud 線上文件或下列連結中找到。

每項實施所需的任務步驟各不相同。 有關執行特定指令的詳細資訊,請參閱引用的 Oracle 文件。

對於這個遷移程序,我們使用使用者概念 - Oracle 標準,如以下記錄的 SAP 連結所概述。

請注意,存取 SAP Notes 需要 SAP S 使用者存取權限:

免責聲明

任何執行這些程序的嘗試,都將依照客戶既定的非生產和/或生產系統操作與維護程序執行。 客戶採取慣常措施以確保系統可用性,以便按要求進行維護和/或重新配置,並按要求安排停機時間。

客戶有責任根據其特定環境審查這些代表程序,並根據需要進行調整。

所描述的 Oracle Database 移轉選項不一定專門用於 IBM Power Virtual Server 移轉。 Oracle 技術專家應認清所使用的程序,並瞭解並非每個技術細節或考慮因素都已明確辨識。 執行程序的 Oracle Database 管理員應該瞭解 Oracle 資料庫備份和復原方法的全部範圍 - 包括那些沒有明確說明的細節。

發現系統並選擇移轉選項

系統發現程序

本文件假設先前已收集詳細的發現:

  • Oracle 資料庫遷移的業務、技術、功能、非功能需求(包括存取和可用性需求)
  • 與原始資料庫和底層平台相關的安裝組態、硬體/軟體清單和規格資訊。
    • 收集與規模、變更率、服務層級需求、遷移停機時間容忍度、網路支援資料從來源傳輸至目標的能力等相關的指標。
    • 目標環境的評估和部署與發現程序中發現的來源系統容量/效能/可用性一致。

本文件涵蓋的遷移選項

以下流程圖說明本文件涵蓋的三個選項:

  • 選項 1:從來源進行一致的 RMAN 備份,生成的檔案由 RMAN Duplicate Database 程序使用,以還原至 IBM Power Virtual Server。
  • 選項 2:不一致的 RMAN 備份 + 來自來源的歸檔重做記錄 (或第 0 級 + 增量備份),備份檔案將由 RMAN 還原/復原資料庫程序使用,以還原至 IBM Power Virtual Server。
  • 選項 3:利用 Oracle Data Guard,目前正在研究中,如果是相同的平台,將是建議的方法 - 建立鏡像,只要鏡像同步,您就可以切換,只需數分鐘的資料庫停機時間。 測試和評估階段完成後,線上文件將立即更新。

圖 1. 收集相關的度量標準
收集相關的度量標準

選擇移轉選項

客戶需求和技術條件會影響從所提供的選項中進行選擇的決定。

  1. 服務層級需求,特別是還原點目標 (RPO) 和還原時間目標 (RTO)。
    • 方案 1:所提出的假設是,在來源資料庫遷移至目標資料庫之前,客戶可以接受相當長的服務延遲 (RTO = 「天」 )。 非生產工作負載通常都會有這種預期,但生產資料庫卻很少有這種預期。
    • 選項 2:如上所述,假設客戶可以接受 「小時」 方面的服務中斷。 對於非生產工作負載和某些生產資料庫來說,這種期望通常會出現。
    • 方案 3:(尚未在本文件中提出),結合 Oracle Data Guard 資料庫同步化,其特色是可能在幾分鐘內從來源切換至目標。
  2. 資料庫大小、網路吞吐量和可靠性。
    • 透過網路傳輸大型資料庫的備份需要時間。 考慮以下傳輸範例,在可用通訊協定和頻寬支援 80 MB/秒吞吐量的端對端網路連線上傳輸 600 GB 的備份。 按照這個速度,傳輸資料大約需要 125 分鐘。 如果資料庫備份大得多或網路連線吞吐量較少,則需要更多的傳輸時間。 不可靠的網路會中斷傳輸,需要您重新啟動傳輸程序,造成延遲。

      • 客戶可受惠於專門的傳輸工具,這些工具可在傳輸前/傳輸中壓縮資料、使用高吞吐量通訊協定,並在傳輸後解壓縮資料。
      • 存取 IBM 的 Aspera,可大幅加快從內部部署到 IBM Power Virtual Server 位置的資料傳輸速度,這是一項優勢。
  3. 執行技能的可用性。
    • 本文件中提供的選項需要有經驗的資料庫管理員技能,並能與基礎架構團隊合作,在 IBM Power Virtual Server 工作區中,將資料庫內容遷移到 Power Virtual Server 上的新目標資料庫。

客戶選擇使用的任何遷移程序,都必須在詳細、周密的遷移和切換計劃中執行。

備份的注意事項和技術細節

RMAN BACKUP 命令支援備份下列類型的檔案:

  1. 資料檔案和控制檔案。
  2. 伺服器參數檔案。
  3. 存檔的重做記錄
  4. RMAN 備份

RMAN 不會備份這些與 Oracle 資料庫相關的檔案。

雖然資料庫依賴於其他類型的檔案,例如網路組態檔案、密碼檔案和 Oracle home 的內容,但您無法使用 RMAN 備份這些檔案。 同樣地,Oracle Database 的某些功能,例如外部資料表,可能會依賴資料檔案、控制檔案和重做記錄以外的檔案。 此程序還需要來自原始資料庫的參數檔案,以及隨後列出的檔案:

  1. Oracle 資料庫參數檔案:init<SID>.ora
  2. TNS 網路組態檔案:(例如 listener.ora, tnsnames.ora)
  3. Oracle 資料庫密碼檔案,如果此檔案存在

RMAN 不會備份這些檔案。 因此,您需要確保這些資料包含在您的備份/復原動作中、最佳做法是將這些資料複製到與 RMAN 資料庫備份相同掛載的目錄中。

在 RMAN 中执行 BACKUP 命令时,输出总是一个或多个备份集或一个或多个映像副本。 備份集是特定於 RMAN 的專屬格式,而影像複本則是檔案的位對位複本。 根據預設,RMAN 會建立備份集。 本文件僅涉及備份集。

假設

本文件假設:

  1. 如果來源資料庫是一個生產系統,它很可能不會關閉以進行完整備份,在這種情況下將使用 RMAN 增量備份。
  2. 執行此程序預計不會變更源資料庫(模式和組態)。
  3. 使用 Oracle RMAN 選項將資料庫從來源遷移至目標:複製資料庫,或備份/還原/復原資料庫。
  4. 目標環境已預先安裝 Oracle homes,其版本與正在移轉的原始實例相符。
  5. RMAN 複製、還原/復原提供修改資料庫資料檔案位置的選項,但本文件不涵蓋此選項。 假設資料庫檔案的位置 ( AIX JFS2 檔案系統或 Oracle ASM 磁碟群組) 在來源環境和目標環境之間是相同的。
  6. 目標作業系統是
    • 使用 mksysb 程序產生的原始作業系統的完整複本 (OVA 或「開啟虛擬主機」存檔檔案),或
    • 新部署的 AIX 版本,該版本受 IBM 支援,並經 Oracle 認證,可支援要實體化的 Oracle 版本。

mksysb 程序的文件可在以下網址找到:

準備

發現已確認或確定下列準備步驟。

記錄來源資料庫的大小和組態

記錄一個或多個來源 Oracle 實例的目前規模以及與運算、IOPS 和儲存相關的效能指標。

  • 目標 IBM Power Virtual Server Oracle 範例的建構至少應與現有系統的規模相匹配。
  • 在目標系統上,選擇磁碟層級和磁碟容量以符合 IOPS 需求非常重要。
  • 此發現程序應包括針對來源資料庫執行效能測試工具,以擷取指標以供未來參考,並與目標系統部署進行比較。

提供最近成功備份的原始資料庫

使用您的標準備份工具,確認來源 Oracle 系統最近有成功的完整備份。 您必須能夠完全還原原始系統。

  • 如果無法確認,遷移/發現團隊應檢閱 RMAN 備份程序。
  • 此外,發現團隊應與客戶的 DBA 或 SME 合作,驗證資料庫的完整性和/或找出任何現有的損壞區塊或模式問題。

記錄來源資料庫

記錄來源資料庫實體的位置以及 DBA 管理存取的已知憑證。

記錄 RMAN 設定

記錄每個實例用來執行備份的目前 Oracle Recovery Manager (RMAN) 設定。

獲取此資訊的簡單方法是執行下列步驟:

使用 ssh 連線到 Oracle 伺服器。

ssh oracle@<hostname>

檢查變數 $ORACLE_SID 是否已設定。

echo $ORACLE_SID

通常會顯示 SID 值。 如果最後一條指令沒有顯示數值,請使用此指令手動設定環境變數:

setenv ORACLE_SID <SID value>

以您的 SID 值取代 <SID value>

使用 rman 指令連接到來源資料庫:

rman target /

典型的輸出如下:

Recovery Manager: Release 19.0.0.0.0 - Production on Thu May 2 13:24:05 2024
Version 19.22.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
connected to target database: Exx (DBID=xxxxxxxx)

使用下列方式顯示 RMAN 組態設定:

RMAN> SHOW ALL;

儲存和/或文件輸出。

輸入退出 RMAN 會話:

RMAN > exit;

僅供參考,典型的 SHOW ALL 輸出如下:

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name EXX are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 8 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/EXX/19/dbs/snapcf_EXX.f'; # default

驗證磁碟空間

確認有足夠的磁碟空間可用、已格式化並已掛載,以接受壓縮的遷移資料庫備份集。

  • 如果磁碟空間是備份實例的本機磁碟空間,則可獲得最佳效能。
  • 直接將資料庫備份到 Cloud Object Storage 可能會因為網路相對緩慢而導致備份執行延遲。
  • 此程序將執行備份,並應用中度壓縮,注意事項如下:
    • 壓縮後的備份檔案儲存空間約為 Oracle 資料庫所佔空間的 25%。
    • 本機檔案系統容量應足以儲存將目標資料庫還原至所需還原點所需的整個(或多個)備份集。
    • 目標系統需要透過下列選項之一存取備份集:
      • 將備份集複製到的本機檔案系統。
      • 在內部環境上安裝 Aspera Agent、
      • NFS 直接掛載至 Cloud Object Storage 裝置,或如果使用 Seagate Lyve Mobile 傳輸裝置。 這並不能產生最佳的效能,過去也有其他的觀察結果。

根據網路/存取速度,可能需要將 NFS 掛載的檔案複製到本機儲存。

來源上備份集的檔案系統

參考專用的本機檔案系統,例如 /backup/rman,用於遷移備份集。 作為另一個選項,還使用 10GbE 和 100 GbE 成功測試了從 NFS 掛載的 Seagate Lyve Mobile 裝置直接還原/復原。

執行下列指令以確認備份的可用空間:

df -g /backup/rman

目標上備份集的檔案系統

資料庫複製或還原/復原程序需要透過下列選項之一存取備份檔案集:

  • 將備份集複製到的本機檔案系統。
  • 安裝至 Seagate Lyve Mobile 傳輸裝置的 NFS,或
  • 掛載至 IBM Cloud Object Storage 的 NFS,備份檔案已從 Seagate 裝置複製至該。

使用 RMAN 備份來源 Oracle 資料庫

在本節中,我們將介紹 RMAN 備份集的製作,並提供兩個選項。

參照

如需詳細資訊,請參閱本文件: Oracle Database 備份與復原 - 2024 年 2 月

假設

  • 選項 1 程序假定將對來源資料庫進行一致的離線備份
  • 選項 2 程序要求在執行備份程序之前,來源資料庫必須處於 ARCHIVELOG 模式。

考量

在執行備份時,客戶應平衡並行性和/或壓縮的應用方式(以及分配用於支援的相關資源)與資料庫可用性和效能需求。

考慮將部分大小套用於備份配置。 若未指定 section size,則只會建立少量的巨型備份檔案。 大檔案可能難以處理,而且在資料傳輸過程中會因為傳輸失敗而需要重新啟動,這將是一項挑戰。 此外,在以平行方式將資料還原到目標資料庫時,少量的備份檔案會限制並發進程的數量。

指定 good section size 可控制備份檔案大小,同時也可影響產生的檔案數量,這些檔案可在 IBM Power Virtual Server 還原時進行平行處理。

請注意,中度壓縮需要 Oracle Advanced Compression License。 基本壓縮很,但速度明顯較慢,而且達到的壓縮率也較低。 高壓縮在壓縮方面是非常密集的 CPU,與 Medium 相比,只能提供有限的壓縮效益。 高壓縮也需要 Advanced Compression License。

增量備份在沒有啟動資料庫區塊變更追蹤的情況下,會對所有資料檔案執行完整掃描,因此會產生大量讀取工作負載。 儘管啟用區塊變更追蹤預期不會影響執行中的 DB 的效能,但仍應在客戶環境中執行測試,以驗證這一點。

標準通訊協定與 IBM 的網路傳輸比較 Aspera

較慢的資料傳輸版本是使用標準通訊協定,例如 scp/sftp。 備份檔案可直接傳輸至 Power Virtual Server 的 IBM AIX LPAR,或傳輸至 IBM Cloud Object Storage (COS)。 使用 IBM COS 的 scp/sftp 假定您正在使用 IBM FileManage Gateway 服務,或已在目標 IBM Power Virtual Server 環境內或旁邊安裝並設定了 sftp 伺服器,以接收傳輸。

更快速的選擇是使用 IBM 的高效能 Aspera 產品進行資料傳輸。 在許多情況下,IBM Aspera 的資料傳輸速度比傳統基於 TCP 的通訊協定快數倍。

IBM Aspera 的說明文件可在此處找到:

IBM Aspera 技術 IBM Cloud

本參考資料還包含 加速網路傳輸轉移指南

備份程序選項

圖 2. IBM Aspera 備份程序
IBM Aspera 備份程序

現在介紹這兩種選項的特定程序。

RMAN 選項 1 - 離線備份/複製資料庫

以下程序在資料庫離線狀態下執行,並將產生完整一致的備份。

關閉應用程式和資料庫

執行備份程序前,請使用標準作業程序關閉 SAP 系統和 Oracle 資料庫。

使用多租户体系结构时,必须连接到根容器数据库 (CDB),备份包括可插拔数据库 (PDB)。

更多資訊請參閱:

確保 RMAN 設定已記錄在案

如準備部分「記錄 RMAN 設定」所述,在修改目前的 RMAN 設定和相關參數之前,請務必儲存或記錄它們。

在完成用於遷移的特殊備份後,需要再次使用原始 RMAN 設定和參數才能繼續進行正常排程的備份作業。

備份選項 1 - 建立目標目錄

oracle 使用者身分登入,並執行下列指令以建立目標備份目錄,以符合下一節所述的備份腳本。

如果目錄不存在,RMAN 指令碼會失敗。 此外,如果使用 NFS 掛載,您需要確保 oracle 使用者在 NFS 伺服器上的定義檔 exports 中擁有正確的權限。 oracle 使用者需要讀取和寫入 (rw) 的權限。 對於 RMAN 備份程序,最好不要使用 NFS。 使用 JFS2 或本機掛載的檔案系統可以達到更好的效果。

以下兩條指令會建立備份目標位置,並將環境變數 ORACLE_SID 設定為 <SID>。 請將 <SID> 替換為適合您系統的正確數值:

mkdir -p /backup/rman/<sid>_option1
setenv ORACLE_SID <SID>

當然,您可以使用任何目標位置,只要 oracle 使用者可以寫入,並且您修改下一步的備份腳本以使用您的目標目錄即可。

備份選項 1 - 備份腳本

RMAN 指令碼用於執行備份選項 1。 本指令碼中使用的指令將在指令碼後討論。 複製並貼上腳本,並針對您的環境進行必要的調整。

所有 RMAN 設定和指令都包含在 option1_backup.rman 指令碼檔案中:

connect target /
SHUTDOWN IMMEDIATE
STARTUP MOUNT
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/<sid>_option1/option1_cmp_%d_%U';
CONFIGURE DEVICE TYPE DISK PARALLELISM 60;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/<sid>_option1/option1_cf_%F';
CONFIGURE COMPRESSION ALGORITHM 'HIGH';
CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE TAG <YOUR TAG ID HERE> include current controlfile ;
alter database open;
quit;

使用 oracle 使用者從命令列執行此指令碼。

rman @option1_backup.rman

RMAN 會將資料備份至所要求備份類型的設定預設裝置。 根據預設,RMAN 會在磁碟上建立備份。 如果啟用了快速復原區域,且未指定 FORMAT 參數,則 RMAN 會在復原區域中建立備份,並自動為其命名。 這是在此之前的參數中修改 FORMAT 的原因,在此重複一次以作強調。

以下是所使用的 RMAN 指令碼的主要元件:

以掛載模式關閉及啟動資料庫

資料庫必須乾淨關閉,然後以「掛載模式」啟動離線備份選項 1。 為確保備份的一致性,資料庫不得開啟。 資料庫關閉 + 掛載模式由這兩行完成:

SHUTDOWN IMMEDIATE
STARTUP MOUNT
備份控制檔案

資料庫控制檔案包含將備份片段還原為正常運作的資料庫所需的 RMAN 目錄。

此指令會將控制檔案加入備份中:

CONFIGURE CONTROLFILE AUTOBACKUP ON
BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE TAG EXX_100K_INITV3 include current controlfile ;

請注意,前述指令碼中的 CONFIGURE CHANNEL DEVICE TYPE DISKDEVICE TYPE DISKCONFIGURE CONTROLFILE AUTOBACKUP FORMAT 指令包含備份檔案系統位置!

備份並行

設定磁碟裝置平行性 - 可能會加快備份速度,並縮短 backupt 時間視窗。 最佳並行度取決於幾個因素:

  • 是否有 CPU 資源可執行這麼多的同時備份程序。 在選擇壓縮和加密的情況下,每個 RMAN 程序通常會使用邏輯處理器的所有 CPU 週期,前提是儲存子系統能夠以足夠快的速度提供資料。
  • 儲存子系統支援 RMAN 資料檔案讀取及寫入備份位置 I/O 吞吐量的能力。
  • 可用的實體記憶體數量,以支援備份程序讀取、壓縮、加密資料。
  • 如之前提到的 RMAN 腳本所示,我們在測試中使用了平行度 60,但如現在所示,平行度為 8 也許是一個好的起點,可以在發現過程中找到最佳水準:
CONFIGURE DEVICE TYPE DISK PARALLELISM 8 BACKUP TYPE TO BACKUPSET;
備份壓縮

設定備份檔案壓縮。 建議大多數客戶使用中度壓縮。 不過也測試了高壓縮,因為在某些情況下高壓縮也是一種選擇。 使用「MEDIUM」和「HIGH」需要 Oracle 進階壓縮許可證!

  • 已測試 CONFIGURE COMPRESSION ALGORITHM 'HIGH' ;
  • 建議防止授權成本增加 CONFIGURE COMPRESSION ALGORITHM 'MEDIUM' ;
備份加密

設定備份加密開啟,並視需要修改演算法 (預設為 AES128 ),以及指定要使用的加密密碼。 除非您使用的是 TDE 加密資料庫,否則每個 RMAN 會話都需要設定加密和解密密碼;否則,會話會出現「錢包未開啟」錯誤而失敗:

CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
Backup

最後一個指令會觸發資料庫實際備份到磁碟。 備份使用 RMAN 特定的備份集。 每個 RMAN 程序最多可從資料檔案讀取 6000M 連續資料作為備份件,壓縮和加密該資料,然後將其寫入目的地檔案系統。

最後一個動作是變更資料庫開啟。 建立特定的標籤,包括 ORACLE_SID <SID>,以便識別。 設定 section size 以限制備份部分的大小,以便在檔案傳輸至目的地環境失敗時,改善可能需要的重傳。 建議使用 TAG,因為它可以簡化 RMAN 目錄中多個備份的管理:

BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE TAG <SID>_100K_INITV3 include current controlfile ;
alter database open;
備份驗證及交叉檢查

備份完成後,使用下列一些 RMAN 指令來驗證和交叉檢查結果。

在 RMAN 提示符下,使用這些指令:

RMAN> REPORT SCHEMA;
RMAN> LIST BACKUP SUMMARY;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
RMAN> VALIDATE DATAFILE 10;
RMAN> VALIDATE BACKUPSET 3;
RMAN> CROSSCHECK BACKUP;

指令說明:

  • REPORT SCHEMA ;- 列出並顯示資料庫檔案、資料表空間等資訊。
  • LIST BACKUP SUMMARY ;- 列出所有現有備份。 可使用 SUMMARY 選項。
  • LIST BACKUP <TAG ID> ;- 依據 TAG ID 列出特定備份。
  • BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;- 驗證備份檔案的內容。
  • VALIDATE DATAFILE 10;- 驗證特定的資料檔案。
  • VALIDATE BACKUPSET 3;- 驗證特定的備份集。
  • CROSSCHECK BACKUP;- 將備份和複本的實體現況與 RMAN 儲存庫中的邏輯記錄同步化。
建立 PFILE

從二進位伺服器參數檔案 (SPFILE) 建立純文字資料庫參數檔案 (PFILE),如下所示。 資料庫保持掛載模式。 請記得在指令中使用您的 <SID>

以使用者 oracle 身份執行此指令:

export ORACLE_SID=<SID>
sqlplus "/ as sysdba";

在 SQL*Plus 內建立參數檔案:

SQL> create pfile='/backup/rman/init<SID>.ora' from spfile;

完成後,請確定將所有 RMAN 參數還原為原始發現設定。

在此方案 1 中,我們建立了一個備份,以傳輸至目標系統並在目標系統上還原。 此時,為了與遷移方案一致,來源資料庫應該關閉,不再使用。

RMAN 選項 2 - 線上備份

以下備份程序在資料庫線上時執行,並將產生單個 RMAN 第 0 級和一個或多個第 1 級(增量)備份。 資料庫必須處於歸檔日誌模式,並確保備份中包含所有必要的歸檔重做日誌

RMAN 增量 0 級備份是完整備份。 它包含完整的資料庫。

RMAN 增量 1 級備份是一種增量備份,捕捉自上一個 0 級或 1 級備份以來的變更。 cummulative 選項可改變此行為,詳細資訊請參閱 Oracle RMAN 備份概念文件。

要成功還原和復原資料庫,需要完整備份 (0 級) 和上次完整備份後的所有增量備份 (1 級),包括存檔的重做記錄。 將資料庫移到新伺服器時 - 包括結束來源系統上的服務,最後一個增量備份是離線備份。

使用多租户体系结构时,必须连接到根容器数据库 (CDB),备份包括可插拔数据库 (PDB)。

更多資訊請參閱: 對 CDB/PDB 執行作業

檢查資料庫大小

請記住,確保已在檔案系統上分配足夠的空間,以便能夠備份資料庫。 使用下列 SQL 語句確定目前資料庫的大小:

SELECT SUM (bytes)/1024/1024/1024 AS GB FROM dba_segments;

確保 RMAN 設定已記錄在案

如準備部分「記錄 RMAN 設定」所述,請務必記錄目前的 RMAN 設定和相關參數。 完成用於遷移的特殊備份後,您要確保 RMAN 設定保持原樣,以便繼續進行正常排程的備份作業。

備份選項 2 - 建立目標目錄

oracle 使用者身份執行下列指令。

前兩個指令會為完整備份和增量備份建立目標備份目錄。 如果您使用不同的目錄,請調整下一節中的兩個備份腳本。 第三個指令設定環境變數 ORACLE_SID,將 <SID> 改為您系統的適當 SID 值:

mkdir -p /backup/rman/<sid>_option2
mkdir -p /backup/rman/<sid>_option2_inc1

setenv ORACLE_SID <SID>

備份選項 2 - 備份腳本

完整線上備份 - 第 0 級

第一個 RMAN 指令碼 option2_backup_full.rman 會設定 RMAN 環境,並建立初始第 0 層 (完整) 線上備份。 在此指令碼中,啟動完整 (0 級) 備份的關鍵指令是: BACKUP ... incremental level 0 ...

本指令碼中使用的指令將在本程序中的指令碼後進一步討論。 請記得取代 <sid/SID> 項目,以符合您的目錄結構和系統數值:

完整備份的所有 RMAN 設定和指令都包含在 option2_backup_full.rman 指令碼檔案中:

connect target /
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/<sid>_option2/lev0_%d_%U';
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 60;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/<sid>_option2/lev0_cf_%F';
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
BACKUP  tag '<Your TAG Here>' incremental level 0 AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG;
quit;

您可以直接從使用使用者 oracle 和的指令行呼叫腳本:

rman @option2_backup_level0.rman

執行完整 (0 級) 備份後,預期的結果應該是:

Recovery Manager complete.

RMAN 會將資料備份至所要求備份類型的設定預設裝置。 預設情況下、RMAN 在磁碟上建立備份。 如果啟用了快速恢復區域,且未指定 FORMAT 參數、則 RMAN 會在復原區域中建立備份,並自動賦予它們唯一的名稱。 這是在此之前的參數中修改 FORMAT 的原因,在此重複一次以作強調。

RMAN 如果指定了 標誌,預設會在第 0 級或第 1 級備份中包含所有已歸檔的重做日誌。PLUS ARCHIVELOG 這會導致在連續的增量備份中,同一個檔案有許多重複。

以下指令指示 RMAN 檢查特定存檔重做記錄是否已包含在之前的備份中,如果是,則不將該檔案包含在新的增量備份中。

如果是,請勿將檔案包含在新的增量備份中。 請注意,如果對資料庫進行了其他備份,而這些備份不會傳輸到目的地,則不應使用此選項、則應將此選項設定為 OFF

CONFIGURE BACKUP OPTIMIZATION ON;

還原資料庫需要資料庫控制檔案的複本,因為它包含將備份片段還原為正常資料庫所需的 RMAN 目錄。

CONFIGURE CONTROLFILE AUTOBACKUP ON;

BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE PLUS ARCHIVELOG TAG ECOM_option1 include current controlfile;

請注意,該指令碼還包含 CONFIGURE CHANNEL DEVICE TYPE DISKCONFIGURE CONTROLFILE AUTOBACKUP FORMAT for DEVICE TYPE DISK TO <directory> 指令,可定義備份類型和檔案系統位置。

設定磁碟裝置平行性 - 可能會加快備份速度並縮小備份視窗。

最佳並行度取決於幾個因素:

  • 有可用的 CPU 資源來執行多個同時進行的備份程序。 在選擇壓縮和加密的情況下,每個 RMAN 程序通常會使用邏輯處理器的所有 CPU 週期,前提是儲存子系統能夠以足夠快的速度提供資料。
  • 儲存子系統支援 RMAN 資料檔案讀寫至備份位置 I/O 吞吐量的能力。
  • 可用的實體記憶體數量,以支援備份程序讀取、壓縮、加密資料。
  • 資料庫的大小。

如前所述的 RMAN 指令碼所示,我們在測試中使用了平行度 60,但如這裡所示,平行度 8 也許是一個好的起點,可以在發現過程中找到最佳水準。

CONFIGURE DEVICE TYPE DISK PARALLELISM 8 BACKUP TYPE TO BACKUPSET;

設定備份檔案壓縮。 顯示為 MEDIUM,在某些情況下可選擇 HIGH。 使用「MEDIUM」和「HIGH」需要 Oracle Advanced Compression license

CONFIGURE COMPRESSION ALGORITHM 'MEDIUM' ;

設定備份加密開啟,並視需要修改演算法 (預設為 AES128 ),以及指定要使用的加密密碼。 除非您使用的是 TDE 加密資料庫,否則每個 RMAN 會話都需要設定加密和解密密碼;否則,會話會出現「錢包未開啟」錯誤而失敗。

CONFIGURE ENCRYPTION FOR DATABASE ON;
CONFIGURE ENCRYPTION ALGORITHM 'AES256';
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;

最後一個指令會觸發資料庫實際備份到磁碟。 備份使用 RMAN 特定的備份集。 每個 RMAN 程序都會從資料檔案讀取 6000M 連續資料作為備份件,將其壓縮和加密,然後寫入目的地檔案系統。 區段大小的目標是限制備份檔案的大小,以便可管理可能需要重新傳送至目的地環境的失敗檔案傳輸。

如前所述,備份中必須包含存檔的重做日誌檔案,而 PLUS ARCHIVELOG 標誌可確保 RMAN 擷取現有的存檔日誌。 強烈建議使用 TAG,因為它可以簡化 RMAN 目錄中多個備份的管理。 「增量層級 0」指定此備份為層級 0 的增量備份,這表示所有資料都會包含在備份中。

RMAN 擷取現有的歸檔日誌。 建議使用 TAG,因為它可以簡化 RMAN 目錄中多個備份的管理。 "增量層級 0」指定此備份為層級 0 的增量備份,表示所有資料都會包含在備份中。

BACKUP  tag '<Your TAG here>' incremental level 0 AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG TAG <SID>_LEV0;

對於額外的增量備份,我們建議在以下備份腳本中以相應的 “incN / INCN" 取代 “inc1 / INC1” 的出現。 請注意,建議將每個增量備份檔案集儲存到自己的目錄中,以方便管理。

增量線上備份 - 第 1 級

第二個 RMAN 指令碼 option2_backup_inc1.rman 會設定 RMAN 環境,並建立初始第 0 層 (完整) 線上備份。 在此指令碼中,啟動增量 (1 級) 備份的關鍵指令是: BACKUP ... incremental level 1 ...

<sid> 改為您系統中的 SID 值,並確保腳本中定義的目標備份目錄與您在其中建立的目錄相符。 備份選項 2 - 建立目標目錄

option2_backup_inc1.rman 腳本

connect target /
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/<sid>_option2_inc1/inc1_%d_%U';
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 60;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/<sid>_option2_inc1/inc1_cf_%F';
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
BACKUP TAG `<SID>`_INC1 incremental level 1 AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG;
quit;

作為使用者 oracle,將環境變數 ORACLE_SID 設為您系統的 SID 值:

setenv ORACLE_SID <SID>

並執行增量備份腳本:

rman @option2_backup_inc1.rman

增量第 1 層指令碼與之前討論過的第 0 層 RMAN 指令碼僅在 3 個方面有所不同:

  • 備份檔案寫入的目錄。
  • TAG 用於識別備份集。
  • 指定第 1 級而非第 0 級,表示這是增量備份,預設情況下包含自上一次第 1 級或第 0 級備份以來的所有變更。

最終增量備份需要額外的準備步驟,以確定在目的地環境的最終資料庫復原步驟中使用的日期/時間戳記。 下一步中藍色方塊中突出顯示的時間戳記就是資料庫將被復原到的日期/時間。 在該日期/時間之後的任何變更都會被捨棄!

檢查伺服器時間和日期

以 sysdba 連線至資料庫,並執行指示的指令。 請注意,資料庫只會進入 mount 模式,而不會進入 opened

設定 NLS 日期格式是用來作為格式模型,從 date-to-stringstring-to-dates 隱式轉換,如果您選擇執行時間點復原,這是很重要的。

下圖中看到的第二個 SQL 指令是強制 Oracle 寫入新的 redolog,之後執行的指令會顯示檔案建立的日期戳記,並提供一個時間戳記,讓您應用適用的 redolog 將資料庫向前滾動。

圖 3. 遞增時間戳
遞增時間戳

透過 RMAN 執行最終增量備份。

驗證和交叉檢查備份

備份完成後,在 RMAN 中,您可以使用在此之後列出的一些命令來驗證和交叉檢查結果。

RMAN> REPORT SCHEMA;
RMAN> LIST BACKUP SUMMARY;
RMAN> LIST BACKUPSET <TAG ID> ;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
RMAN> VALIDATE DATAFILE 10;
RMAN> VALIDATE BACKUPSET 3;
RMAN> CROSSCHECK BACKUP;

列出並顯示資料庫檔案、資料表空間等資訊。

指令說明:

  • REPORT SCHEMA ;- 列出並顯示資料庫檔案、資料表空間等資訊。
  • LIST BACKUP SUMMARY ;- 列出所有現有備份。 可使用 SUMMARY 選項。
  • LIST BACKUP <TAG ID> ;- 依據 TAG ID 列出特定備份。
  • BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;- 驗證備份檔案的內容。
  • VALIDATE DATAFILE 10;- 驗證特定的資料檔案。
  • VALIDATE BACKUPSET 3;- 驗證特定的備份集。
  • CROSSCHECK BACKUP;- 將備份和複本的實體現況與 RMAN 儲存庫中的邏輯記錄同步化。
建立 PFILE

從二進位伺服器參數檔案 (SPFILE) 建立純文字資料庫參數檔案 (PFILE),如下所示。 資料庫保持掛載模式。 請記住在指令中以您的系統 SID 取代 <SID>

以使用者身份執行 oracle 這些指令:

setenv ORACLE_SID <SID>
sqlplus "/ as sysdba";

在 SQL*Plus 中建立參數檔案:

SQL> create pfile='/backup/rman/init<SID>.ora' from spfile;

完成後,請確定將所有 RMAN 參數還原為原始發現設定。

在此方案 2 中,我們建立了兩個備份集,一個完整備份和一個增量備份。 兩者都會傳輸至目標系統,並在目標系統上還原。 此時,為了與遷移方案一致,來源資料庫應該關閉,不再使用。

還原目標系統上的 Oracle 資料庫

本節將介紹在目標系統上還原資料庫的不同選項和步驟。

兩個 RMAN 還原選項

提供兩種方法將 Oracle Database 還原到目標系統:

  1. RMAN 複製資料庫和
  2. RMAN 還原/復原資料庫。

這兩種方法都會使用之前 RMAN 備份部分建立的備份。

圖 4. 還原選項
還原選項

選項 1 - RMAN 複製資料庫
此選項將使用 RMAN 的 auxiliary instance 功能,只有在目標伺服器上有全套一致的 RMAN 備份檔案時,才可以/應該使用此選項。 :: RMAN「複製」指令會自動開啟目標資料庫 resetlogs
resetlogs 操作會增加資料庫的版本號,因此會使目標資料庫完全獨立於來源資料庫。 重要的是,此時無法對目標資料庫套用增量第 1 級備份或已歸檔的 REDO 記錄。
選項 2 - RMAN 還原/復原
此選項應該用來初始化目標資料庫,使用 RMAN 增量第 0 級備份,以及可選的一個或多個增量第 1 級備份,如上一節所述。 但是,它允許稍後的增量第 1 級備份和存檔 REDO 日誌在一定時間內應用到目標資料庫。 :: 預期會有最後的切換時間,而最後的增量第 1 級備份會在目標資料庫仍處於 MOUNT 狀態時執行、複製/傳送至目標伺服器並套用。 一旦應用了最終備份/存檔日誌,資料庫將在切換時間手動開啟並可供使用。

假設

  1. 已建立 IBM 雲端帳戶,以及 IBM Power Virtual Server 工作空間。
  2. 在工作區內,已執行手動或自動程序,在 IBM Power Virtual Server 實例上安裝必要的 Oracle Grid Infrastructure (如果使用 ASM) 和 Oracle RDBMS homes on AIX。 AIX LPAR 在運算、記憶體、儲存容量和效能方面的大小應與源系統相當,並應用相容的 HW/SW 版本。
  3. RMAN 複製/還原/復原程序可存取所有所需的備份檔案。

連線與準備 - Oracle on IBM Power Virtual Server

從目標實例命令列,您可以使用下列 RMAN 程序執行還原。

  1. 以用戶 oracle 登入要還原資料庫的 AIX Power Virtual Server。
  2. 確認:
    • 目標 IBM Power Virtual Server 系統已有效安裝 Oracle 資料庫軟體,且軟體版本和修補程式等級與來源環境相同。
    • 儲存 Oracle 資料檔案的裝置名稱和資料表空間名稱與原始資料庫相同。 如果沒有,則需要 set newname 指令(步驟不在本程序的範圍內)
    • ASM 磁碟群組 (如果使用) 已建立,其名稱和容量與來源環境相符。
    • 備份檔案可供 RMAN 使用,不論是駐留在本機檔案儲存空間、Cloud Object Storage、NFS 等。

以下程序選項不描述如何安裝 Oracle 軟體,而是描述如何還原來源資料庫。 與備份程序一樣,所介紹的步驟僅具代表性,不同資料庫環境的細節有所不同。

請參閱特定版本的 Oracle Database Installation Guide for AIX on Power Systems,以及相應的 GRID Infrastructure Document for ASM (和 RAC,若相關)。

資料庫安裝指南(版本 19c)

網格基礎架構文件(版本 19c)

檢查目標伺服器上的備份檔案集

以下是已暫存在 /backup/rman 資料夾中的備份檔案的檢視範例: 請注意,檔案被複製到本機 JFS/2 檔案系統 (部分檔案清單)。

圖 5. 還原選項
還原選項

顯示在獨立資料夾中的是直接從內部 Oracle 資料庫複製的雜項檔案,這是之前備份程序中的建議。

圖 6. 備份資料夾樹狀結構
備份資料夾樹狀結構

檢查配置

現在可以檢視 Oracle PFILE 設定,並驗證此檔案中的設定。

檢查 PFILE

現在我們將檢視 Oracle 參數檔案,或 PFILE,儲存於 init<SID>.ora 內。

檢視儲存的 PFILE 中包含的資料庫參數,並檢查具有檔案名稱規格的參數。 參數 audit_file_dest= 會引用目標伺服器上尚未存在的目錄位置。 其他檔案目的地會參考應該已經建立的 ASM 磁碟群組。

如果目標伺服器中的檔案位置與來源環境不符,則需要在 RMAN 腳本中進行額外的組態變更,因此在 IBM Cloud cloning Oracle 伺服器時,請務必比較 init<SID>.ora 檔案中提及的組態,並確保這些位置存在於目標系統中。

圖 7. 稽核檔案目的地
稽核檔案目的地

檢查稽核目錄

檢查並確認稽核檔案目錄是否存在於目標伺服器上,以及是否如 PFILE 所列,並給予適當的所有權和模式。

圖 8. 備份資料夾樹狀結構
備份資料夾樹狀結構

檢查 ASM 磁碟群組和其他目錄定義

確認 PFILE 中引用的 ASM 磁碟群組存在於目標上,並且有足夠的可用空間。 作為 oracle 網格使用者,執行:

asmcmd lsdg

如果未使用 ASM 群組,請檢閱 PFILE 並驗證參考的目錄是否存在。 此時,您已準備好進行下列其中一個還原選項。

選項 1 - RMAN 複製資料庫

此程序將源資料庫的一致的第 0 級備份作為輸入,並將內容還原到 Power Virtual Server 上的新 Oracle 範例,以建立複製資料庫。

以下步驟應以 oracle 使用者身份執行:

以 NOMOUNT 模式啟動目標資料庫

確保 ORACLE_SID 環境已設定。 作為使用者 oracle 為您的系統設定正確的 ORACLE_SID:

setenv ORACLE_SID <SID>

以 NOMOUNT 模式啟動 Oracle 範例,直接指定要使用的 pfile。 請注意,在我們的環境中,我們是在 SAP 環境中使用 Oracle,因此我們的 ORACLE_HOME 是 /oracle/EC9/19.0.0,您的環境可能不同,請變更範例中的路徑,並記得在之後提到的指令中使用您自己的 Oracle <SID> 來替代。

以使用者 oracle 的身份執行 SQL*Plus,並以系統資料庫管理員的身份連線到資料庫:

sqlplus "/ as sysdba"

在 SQL*Plus 內執行這些 SQL 語句:

SQL> startup nomount pfile='/backup/rman/ora/initEC6.ora';
SQL> create spfile='/oracle/EC6/19.0.0/dbs/spfileEC6.ora' from pfile='/backup/rman/ora/initEC6.ora';
SQL> shutdown immediate;
SQL> startup nomount;
SQL> show parameter spfile;

spfile 參數通常是這樣的:

NAME                 TYPE            VALUE
---------          -------------    ---------------------------------
spfile               string          /oracle/EC6/19/dbs/spfileEC6.ora

使用 RMAN 還原資料庫的指令碼 - 選項 1

參考適當的備份位置建立 RMAN 複製資料庫指令碼。 本例中的檔案儲存在「oracle」使用者的 home 目錄中。

最理想的情況是,您使用參考建立的還原通道數量與用於備份的通道數量相符。 如果您還記得,在備份過程中,我們觀察到有 60 個頻道正在使用中,因此我們在腳本中匹配了這個數字。

以下腳本僅附加顯示前 15 行,顯然因為我們需要 60 個頻道,這些頻道需要新增到腳本中,您需要在後面新增額外的行。allocate auxiliary channel ch[15-60] device type disk;

作為使用者 oracle 建立這個腳本。

rman_duplicate.cmd Script:

set encryption on identified by passw0rd;
set decryption identified by passw0rd;
run {
    allocate auxiliary channel ch1 device type disk;
    allocate auxiliary channel ch2 device type disk;
    allocate auxiliary channel ch3 device type disk;
    allocate auxiliary channel ch4 device type disk;
    allocate auxiliary channel ch5 device type disk;
    allocate auxiliary channel ch6 device type disk;
    allocate auxiliary channel ch7 device type disk;
    allocate auxiliary channel ch8 device type disk;
    allocate auxiliary channel ch9 device type disk;
    allocate auxiliary channel ch10 device type disk;
    allocate auxiliary channel ch11 device type disk;
    allocate auxiliary channel ch12 device type disk;
    allocate auxiliary channel ch13 device type disk;
    allocate auxiliary channel ch14 device type disk;
    allocate auxiliary channel ch15 device type disk;
    allocate auxiliary channel ch16 device type disk;
    allocate auxiliary channel ch17 device type disk;
    allocate auxiliary channel ch18 device type disk;
    allocate auxiliary channel ch19 device type disk;
    allocate auxiliary channel ch20 device type disk;
    allocate auxiliary channel ch21 device type disk;
    allocate auxiliary channel ch22 device type disk;
    allocate auxiliary channel ch23 device type disk;
    allocate auxiliary channel ch24 device type disk;
    allocate auxiliary channel ch25 device type disk;
    allocate auxiliary channel ch26 device type disk;
    allocate auxiliary channel ch27 device type disk;
    allocate auxiliary channel ch28 device type disk;
    allocate auxiliary channel ch29 device type disk;
    allocate auxiliary channel ch30 device type disk;
    allocate auxiliary channel ch31 device type disk;
    allocate auxiliary channel ch32 device type disk;
    allocate auxiliary channel ch33 device type disk;
    allocate auxiliary channel ch34 device type disk;
    allocate auxiliary channel ch35 device type disk;
    allocate auxiliary channel ch36 device type disk;
    allocate auxiliary channel ch37 device type disk;
    allocate auxiliary channel ch38 device type disk;
    allocate auxiliary channel ch39 device type disk;
    allocate auxiliary channel ch40 device type disk;
    allocate auxiliary channel ch41 device type disk;
    allocate auxiliary channel ch42 device type disk;
    allocate auxiliary channel ch43 device type disk;
    allocate auxiliary channel ch44 device type disk;
    allocate auxiliary channel ch45 device type disk;
    allocate auxiliary channel ch46 device type disk;
    allocate auxiliary channel ch47 device type disk;
    allocate auxiliary channel ch48 device type disk;
    allocate auxiliary channel ch49 device type disk;
    allocate auxiliary channel ch50 device type disk;
    allocate auxiliary channel ch51 device type disk;
    allocate auxiliary channel ch52 device type disk;
    allocate auxiliary channel ch53 device type disk;
    allocate auxiliary channel ch54 device type disk;
    allocate auxiliary channel ch55 device type disk;
    allocate auxiliary channel ch56 device type disk;
    allocate auxiliary channel ch57 device type disk;
    allocate auxiliary channel ch58 device type disk;
    allocate auxiliary channel ch59 device type disk;
    allocate auxiliary channel ch60 device type disk;
    duplicate database to <DBSID> backup location '/backup/rman/ec6_option1' nofilenamecheck noredo;
}

作為使用者 oracle 執行此指令碼:

rman auxiliary / cmdfile=rman_duplicate.cmd

典型的輸出如下:

   sql clone "alter system set  db_name =
 ''EC6'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''EC6'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile from  '/backup/rman/ec6_option1/option1_cf_c-2254911489-20240516-00';
   alter clone database mount;

在此,資料庫已成功複製,重設記錄也已開啟,導致資料庫開啟狀態,並顯示 Recovery Manager 動作已成功完成的訊息。

檢查目標系統上的歸檔日誌狀態

成功還原目標資料庫後,使用下列指令檢查歸檔記錄狀態。

以使用者 oracle 的身分執行 SQL*Plus 指令:

sqlplus "/ as sysdba"

SQL*Plus 內執行此 sql 指令:

SQL> archive log list;

典型的輸出看起來像這樣:

Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /oracle/EC6/oraarch/EC6arch
Oldest online log sequence     1
Current log sequence           1

以歸檔模式重新啟動資料庫

仍然在 SQL*Plus 中作為 sysdba,使用 NORMAL、IMMEDIATE 或 TRANSACTIONAL 選項關閉資料庫實例:

SHUTDOWN IMMEDIATE

啟動實例並掛載資料庫:

STARTUP MOUNT

並將資料庫置於歸檔模式:

ALTER DATABASE ARCHIVELOG;

現在開啟伺服器上的資料庫:

ALTER DATABASE OPEN;

並驗證您的變更:

ARCHIVE LOG LIST;

最後,在此目標系統上建立新的資料庫備份,其中也會包含存檔檔案。 如之前在 使用 RMAN 備份來源 Oracle Database 一節中所述

選擇使用 nofilenamechecknoredo 與選項的原因 duplicate database

nofilenamecheck
選項 nofilenamecheck 將停止 RMAN 透過比較與重複備份的控制檔案所包含的資訊來預先檢查目標系統的目錄和檔案位置。 如果您要使用相同的檔案系統位置、SID 等,將原始資料庫的 1-2-1 副本還原到目標,這是必要的。 如果不存在該選項,您可能會收到警告並停止還原,說明在還原資料檔案的目標檔案位置與來源檔案位置相匹配時,發現了衝突。 如果發生這種情況,請將 nofilenamecheck 加入還原指令並重試,然後還原就會成功。
noredo
如前所示,noredo 選項必須加入 rman_duplicate.cmd 腳本中的複製資料庫指令。
這是通知 RMAN 您要還原所做的完整 offline 備份,且不檢查任何重製。 Oracle DBA 已經知道嘗試使用備份指令中提到的 建立重複備份時的問題。PLUS ARCHIVELOG

選項 2 - RMAN 還原/復原資料庫

此程序在 Power Virtual Server 上從初始不一致資料集建立 Oracle 資料庫。 然後應用增量備份和存檔重做日誌來復原特定時間點的資料庫版本。

以 NOMOUNT 模式啟動目標資料庫

執行下列步驟時,使用者 oracle。 一如往常,將 <SID> 改為您系統的 SID 值:

setenv ORACLE_SID <SID>

NOMOUNT 模式啟動 Oracle 範例,直接指定要使用的 pfile。 請注意,在我們的環境中,我們是在 SAP 環境中使用 Oracle,所以我們的 ORACLE_HOME 是 /oracle/EC9/19.0.0,您的環境可能不同,所以請修改範例中的路徑,並記得在此之後提到的指令中,代入您自己的 Oracle <SID>

sqlplus "/ as sysdba"
SQL> startup nomount pfile='/backup/rman/ora/initEC6.ora';
SQL> create spfile='/oracle/EC6/19.0.0/dbs/spfileEC6.ora' from pfile='/backup/rman/ora/initEC6.ora';
SQL> shutdown immediate;
SQL> startup nomount;
SQL> show parameter spfile;

顯示參數的輸出通常看起來像這樣:

NAME                 TYPE            VALUE
---------          -------------    ---------------------------------
spfile               string          /oracle/EC6/19/dbs/spfileEC6.ora

在備份檔案集中取得設定檔案路徑

控制檔案 (cf) 已包含在完整備份 (0 級) 中。 確定備份 option2 level0 檔案集中控制檔案的完整路徑。

範例:

find /backup/rman/ec6_option2 -name "lev0_cf_*"

find 指令會列印所有符合名稱模式的檔案名稱,包括路徑:

/backup/rman/ec6_option2/lev0_cf_c-2252531432-20240529-01

如果沒有給出輸出,請參考您使用選項 2 第 0 級程序建立的備份中的控制檔案位置,並檢查備份檔案集是否在目標伺服器上,以及在哪裡。

使用 RMAN 還原資料庫第 0 級備份的指令碼 - 選項 2

在此之後修改恢復腳本,以反映正確的控制檔案,然後執行 RMAN 腳本,從第 0 級備份恢復 DB,同時透過 recover database 套用該備份中包含的任何存檔重做日誌,因為 restore database 不套用存檔重做日誌。

請注意使用備份 TAG 來指定我們要從哪個備份還原。 控制檔案中的 RMAN 目錄可能會列出多個備份。 在我們的測試中,我使用與之前建立的備份部分相同的備份標籤,因此對特定備份使用備份標籤是一個很好的提示。

請記住在執行腳本之前,資料庫應該在 nomount 中啟動,並且控制檔案位置必須調整為您的檔案/備份位置,如以下範例所示。

option2_restore_level0.rman Script

connect target /
connect target /
set ENCRYPTION ALGORITHM 'AES256' ;
SET DECRYPTION IDENTIFIED BY passw0rd;
run {
  restore controlfile from '/backup/rman/ec6_option2/lev0_cf_c-2252531432-20240529-01';
  alter database mount;
  restore database from tag IBMECC02_EC6_LEV0;
  recover database;
}

還原指令碼的說明

替換與您的 Oracle 環境/安裝相關的 archiveredologscontrolfiles 的正確位置。

備份檔案已加密,RMAN 需要加密密碼才能還原資料庫檔案。

SET DECRYPTION IDENTIFIED BY passw0rd;

我們從包含 RMAN 目錄的第 0 層備份還原資料庫控制檔案,我們需要將備份片段映射到資料檔案,以及資料檔案清單及其預期位置。

restore controlfile from '/backup/rman/ec6_option2/lev0_cf_c-2252531432-20240529-01';

然後,我們將資料庫變更為 mount mode,這是下一步所需的。

alter database mount;

使用我們指定給 0 級備份的 TAG,指示 RMAN 從特定備份還原資料庫。

restore database from tag IBMECC02_EC6_LEV0;

最後一步,我們將第 0 層備份中包含的歸檔日誌套用至已還原的資料庫。 請注意,這不會開啟資料庫,因此我們無法將未來的增量備份和/或存檔記錄套用至資料庫。

recover database;

執行還原資料庫 level0 指令碼

確保資料庫實體是以 startup nomount

作為使用者 oracle 執行還原指令碼:

rman @restore_option2_lev0.rman

樣本輸出非常廣泛,在此不一一列出。

還原增量備份(第 1 級)

RMAN 完整備份層級 0 已成功還原。 下一步是還原所有增量第 1 級備份集。

還原增量備份(第 1 級)- 最終備份除外

將目標目錄中餘下的增量第 1 級備份集及已歸檔日誌編入目錄。 如果提供多個增量備份,這是一個迭代過程。

對於所有增量備份,除了最後一次之外,您只需執行

recover database ;

透過此步驟,增量備份集將被編目。

編目最終增量備份(第 1 級)

最後的增量備份要求只能復原到特定時間才能開啟資料庫!

目標資料庫可保持在 MOUNT 狀態,並根據需要持續套用第 1 層增量和已歸檔的 REDO 記錄。 將新的備份片段和歸檔日誌編目,並復原直到準備好進行最終切換。

以下指令假設所有增量備份都儲存在 /backup/rman 下的目錄中。

仍然在 SQL*Plus,執行這些 SQL 指令:

RMAN> catalog start with '/backup/rman';

輸出範例,僅顯示第一個增量第 1 級備份的備份檔案:

searching for all files that match the pattern /backup/rman

List of Files Unknown to the Database
=====================================
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dk2s0rg6_1460_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dl2s0rgc_1461_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dl2s0rgc_1461_2_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dm2s0rgc_1462_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dn2s0rgc_1463_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_do2s0rgc_1464_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dp2s0rgc_1465_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dq2s0rge_1466_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dr2s0rgh_1467_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_ds2s0rgn_1468_1_1
        ...Lines Omitted ...
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_eo2s0rlq_1496_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_ep2s0rlu_1497_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_eq2s0rm3_1498_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_er2s0rm6_1499_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_es2s0rma_1500_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_eu2s0rmi_1502_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_cf_c-2252531432-20240529-02

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

還原最終增量備份(第 1 級)至給定時間點

對於所有增量備份 (除了最終備份),您都可以在 RMAN 中執行:

請記住,由於備份是以加密方式建立的,因此您需要更新 RMAN 中的設定,以解密使用密碼的備份,否則您會遇到 ORA-19913: unable to decrypt backup 和等錯誤。ORA-28365: wallet is not open

RMAN> SET ENCRYPTION ALGORITHM 'AES256' ;
RMAN> SET DECRYPTION IDENTIFIED BY passw0rd;
RMAN> recover database ;

將 FINAL 增量備份件編目後,復原需要達到備份中確定的日期/時間

在此最後復原動作之後,從復原的角度來看,預期不會再對資料庫套用其他變更。 設定時間和日期格式:

RMAN> alter session set nls_date_format='DD-MM-YYYY HH24:mi:SS' ;

您可在此找到日期範圍範例:

RMAN> recover database until time '13-01-2024 11:52:12';

啟動資料庫

在所有臨時歸檔的 REDO 日誌和最終 RMAN 增量第 1 級已編目並如所述復原之後,可以開啟資料庫。

以使用者身份執行 sql plus oracle

sqlplus "/ as sysdba"
SQL> alter database open resetlogs ;

檢查資料庫模式

檢查確保資料庫還原後,歸檔模式已啟用。

以使用者 oracle 身份執行 sqlplus 指令:

sqlplus "/ as sysdba"

並重複檢查存檔記錄清單:

SQL> archive log list;

資料庫遷移至 Power Virtual Server 的 Restore/Recover 方法到此為止。