Azure 上的 Oracle Database Enterprise Edition 結構

適用於:✔️ Linux VM

Azure 是所有 Oracle 工作負載的首頁,包括那些需要繼續在 Azure 中搭配 Oracle 以最佳方式執行的工作負載。 如果您有 Oracle 診斷套件自動工作負載存放庫 (AWR),您可以收集工作負載的相關資料。 使用此資料來評估 Oracle 工作負載、調整資源需求,並將工作負載遷移至 Azure。 Oracle 在這些報表中所提供的各種計量,可讓您了解應用程式效能和平台使用率。

本文將協助您準備 Oracle 工作負載的大小以在 Azure 中執行,並探索最佳的架構解決方案,從而獲得最佳的雲端效能。 Oracle 在 Statspack 中提供的資料,以及其子代 AWR 所提供的更多資料,可協助您開發明確的期望。 這些預期包含架構中的實體微調限制、資料庫程式碼的邏輯調整優點,以及整體資料庫設計。

兩個環境之間的差異

將內部部署應用程式遷移至 Azure 時,請記住兩個環境之間的一些重要差異。

其中的一項重要差異是,Azure 實作中的資源 (例如 VM、磁碟和虛擬網路) 會與其他用戶端共用。 此外,您可以根據需求來節流資源。 Azure 更聚焦在讓失敗存活,而不是聚焦於避免失敗 (MTBF)。 第一種方法會嘗試增加 失敗 (MTBF) 之間的平均時間,第二種方法會嘗試減少 平均復原時間 (MTTR)。

下表列出 Oracle 資料庫在內部部署實作和 Azure 實作之間的一些差異。

內部部署實作 Azure 實作
網路功能 LAN/WAN 軟體定義網路 (SDN)
安全性群組 IP/連接埠限制工具 網路安全性群組 (NSG)
恢復功能 MTBF MTTR
預定的維修 修補/升級 可用性設定組 (Azure 所管理的修補/升級)
資源 專用 與其他用戶端共用
地區 資料中心 區域配對
Storage SAN/實體磁碟 Azure 受控儲存體
縮放比例 垂直調整 水平調整

需求

開始移轉之前,請考慮下列需求:

  • 查明實際 CPU 使用量。 Oracle 依核心授權,這表示為了降低成本,調整 vCPU 需求的大小是基本工作。
  • 決定資料庫大小、備份儲存體和成長率。
  • 決定 I/O 需求,這可以根據 Oracle Statspack 和 AWR 報告來估計。 您也可以利用作業系統提供的儲存體監視工具來估計需求。

設定選項

最好產生 AWR 報告,從中取得一些計量,以協助您決定如何設定。 此外,可能有四個方面可調整,以改善 Azure 環境中的效能:

  • 虛擬機器大小
  • 網路輸送量
  • 磁碟類型和設定
  • 磁碟快取設定

產生 AWR 報表

如果您目前有 Oracle Enterprise Edition 資料庫,且打算遷移至 Azure,則幾個選項。 如果您有 Oracle 執行個體的診斷套件,則可以執行 Oracle AWR 報告來取得計量 (例如 IOPS、Mbps 和 GiB)。 對於沒有診斷套件授權的資料庫,或 Oracle Standard Edition 資料庫,在收集手動快照集之後,您可以使用 Statspack 報告來收集同樣重要的計量。 這兩個報告方法的主要差異在於 AWR 是自動收集,而且提供的資料庫資訊比 Statspack 更多。

您可以考慮在一般和尖峰工作負載期間執行 AWR 報表,以進行比較。 為了收集更準確的工作負載,請考慮將報告時段延長為一週,而不是一天。 AWR 在報告中提供計算的平均值。 AWR 存放庫預設保留八天的資料,而且每小時建立快照集。

若為資料中心移轉,您應該在生產系統上收集調整大小的報告。 依百分比估計用於使用者測試、測試和開發的剩餘資料庫複本。 例如,估計 50% 的生產大小調整。

若要從命令列執行 AWR 報告,請使用下列命令:

sqlplus / as sysdba
@$ORACLE_HOME/rdbms/admin/awrrpt.sql;

重要計量

報告提示您輸入下列資訊:

  • 報告類型:HTML 或 TEXT。 HTML 類型提供較多資訊。
  • 要顯示的快照集天數。 例如,若為每小時間隔,則一週報告會產生 168 個快照集識別碼。
  • 報告時段的開頭 SnapshotID
  • 報表時段的結尾 SnapshotID
  • 由 AWR 指令碼建立的報告名稱。

如果您在 Real Application Cluster (RAC) 上執行 AWR 報告,則命令列報告為 awrgrpt.sql 檔案,而不是 awrrpt.sqlg 報告在單一報告中為 RAC 資料庫中的所有節點建立報告。 此報告不需要在每個 RAC 節點上都執行一份報告。

您可以從 AWR 報告取得下列計量:

  • 資料庫名稱、執行個體名稱和主機名稱
  • 資料庫版本 (Oracle 的支援能力)
  • CPU/核心
  • SGA/PGA,和建議程式,讓您知道是否不夠大
  • 記憶體總計 (GB)
  • CPU 忙碌百分比
  • DB CPU
  • IOPs (讀取/寫入)
  • MBPs (讀取/寫入)
  • 網路輸送量
  • 網路延遲速率 (低/高)
  • 前幾名等候事件
  • 資料庫的參數設定
  • 資料庫是 RAC、Exadata,或使用進階功能或設定

虛擬機器大小

您可以採取以下一些步驟來設定虛擬機器大小,以獲得最佳效能。

根據 AWR 報表中的 CPU、記憶體和 I/O 使用量來預估 VM 大小

查看前五個計時前景事件,這指出系統瓶頸所在。 例如在下圖中,記錄檔案同步在頂端。 這代表記錄寫入器將記錄緩衝區寫入重做記錄檔之前需要的等候次數。 這些結果代表您需要效能更好的儲存體或磁碟。 此外,此圖也會顯示 CPU (核心) 數目和記憶體數量。

Screenshot that shows the log file sync at the top of the table.

下圖顯示讀取和寫入的 I/O 總計。 報表統計期間共有 59 GB 的讀取和 247.3 GB 的寫入。

Screenshot that shows the total I/O of read and write.

選擇 VM

根據您從 AWR 報表收集到的資訊,下一個步驟是選擇符合您需求且大小類似的 VM。 如需可用的 VM 的詳細資訊,請參閱記憶體最佳化的虛擬機器大小

根據 ACU 微調類似 VM 系列的 VM 大小

選擇 VM 之後,請注意 VM 的 Azure 計算單位 (ACU)。 您可以根據較適合您需求的 ACU 值,選擇不同的 VM。 如需詳細資訊,請參閱 Azure 計算單位

Screenshot of the ACU units page.

網路輸送量

下圖顯示輸送量與 IOPS 之間的關聯性:

Diagram that shows the relationship between throughput and IOPS, which is IOPS times IO size equals throughput.

總網路輸送量是根據下列資訊進行預估:

  • SQL*Net 流量
  • MBps x 伺服器數目 (輸出串流,例如 Oracle Data Guard)
  • 其他因素,例如應用程式複寫

Screenshot of the SQL*Net throughput.

根據您的網路頻寬需求,有各種閘道類型可供您選擇。 這些類型包括基本、VpnGw 和 Azure ExpressRoute。 如需詳細資訊,請參閱 VPN 閘道定價

建議

  • 與內部部署相較之下,網路延遲較高。 減少網路來回行程可以大幅改善效能。
  • 若要減少來回行程,請合併相同虛擬機器上具有高交易或 Chatty 應用程式的應用程式。
  • 使用具有加速網路的虛擬機器,以提升網路效能。
  • 針對某些 Linux 發行版本,請考慮啟用 TRIM/UNMAP 支援
  • 在單獨的虛擬機器上安裝 Oracle Enterprise Manager
  • Linux 上預設不啟用超大分頁。 請考慮啟用超大分頁,並在 Oracle DB 上設定 use_large_pages = ONLY。 此方法可能有助於提升效能。 如需詳細資訊,請參閱 USE_LARGE_PAGES

磁碟類型和設定

以下是您考慮磁碟時的一些秘訣。

  • 預設 OS 磁碟:這些磁碟類型提供持續性資料和快取。 最適合開機時的作業系統存取,並非為了交易式或資料倉儲 (分析) 工作負載而設計。

  • 受控磁碟:Azure 管理您用於 VM 磁碟的儲存體帳戶。 您可以指定需要的磁碟類型和磁碟大小。 此類型最常用於 Oracle 工作負載的 Premium (SSD)。 Azure 會為您建立並管理該磁碟。 進階 SSD 受控磁碟僅適用於已最佳化記憶體且經過設計的 VM 系列。 在選擇特定的 VM 大小之後,功能表只會根據該 VM 大小顯示可用的進階儲存體 SKU。

    Screenshot of the managed disk page.

在 VM 上設定儲存體之後,您可能會想要在建立資料庫之前對磁碟進行負載測試。 知道延遲和輸送量方面的 I/O 速率可以協助您判斷 VM 是否支援具有延遲目標的預期輸送量。 有一些適用於應用程式負載測試的工具,例如 Oracle Orion、Sysbench、SLOB 和 Fio。

在部署好 Oracle 資料庫之後,請再次執行負載測試。 啟動您的一般和尖峰工作負載,其結果會顯示您環境的基準數據。 在工作負載測試中要務實。 執行您在 VM 上實際不會執行的工作負載毫無意義。

因為 Oracle 可能是耗用大量 I/O 的資料庫,請務必根據 IOPS 速率來調整儲存體大小,而不是根據儲存體大小。 例如,如果所需的 IOPS 值是 5000,但您只需要 200 GB,則您可能仍會得到 P30 等級的進階磁碟,即使它隨附 200 GB 以上的儲存體。

您可以從 AWR 報告取得 IOPS 速率。 IOPS 速率是由重做記錄、實體讀取和寫入速率決定。 請務必確認您選擇的 VM 系列能處理工作負載的 I/O 需求。 如果 VM 的 I/O 限制低於儲存體,則由 VM 設定上限。

Screenshot of the AWR report page.

例如:重做大小是每秒 12,200,000 個位元組,相當於 11.63 MBPs。 IOPS 值為 12,200,000 / 2,358 = 5,174。

在清楚了解 I/O 需求之後,即可選擇最符合這些需求的磁碟機組合。

磁碟類型建議

  • 針對資料的資料表空間,使用受控儲存體或 Oracle Automatic Storage Management (ASM),將 I/O 工作負載分散到一些磁碟。
  • 使用 Oracle 進階壓縮來減少 I/O (資料和索引兩者都是)。
  • 將重做記錄、暫存和復原資料表空間分開到不同資料磁碟上。
  • 不要將任何應用程式檔案放在預設作業系統磁碟上。 這些磁碟不適合用於快速 VM 啟動階段,因此可能不會為您的應用程式提供良好的效能。
  • 當您在進階儲存體上使用 M-Series VM 時,請在重做記錄磁碟上啟用寫入加速器
  • 請考慮將高延遲的重做記錄移至 Ultra 磁碟。

磁碟快取設定

雖然主機快取有三個選項,但針對 Oracle 資料庫上的資料庫工作負載,只建議使用唯讀快取。 讀取/寫入可能讓資料檔案出現重大弱點,因為資料庫寫入的目標是記錄到資料檔案,而不是快取資訊。 唯讀會快取所有要求,供未來讀取。 所有寫入會持續寫入磁碟。

磁碟快取建議

若要達到最大輸送量,主機快取盡可能從唯讀開始。 針對進階儲存體,當您以唯讀選項裝載檔案系統時,請記住必須停用屏障。 以磁碟的通用唯一識別碼來更新 /etc/fstab 檔案。

Screenshot of the managed disk page that shows the read-only option.

  • 針對作業系統磁碟,請使用具有讀寫主機快取的進階 SSD。
  • 針對包含下列各項的資料磁碟,請使用具有唯讀主機快取的進階 SSD:Oracle 資料檔案、暫存檔案、控制檔案、區塊變更追蹤檔案、BFILE、外部資料表的檔案,以及快閃回傳記錄。
  • 對於包含 Oracle 線上重做記錄檔的資料磁碟,請使用無主機快取 (None 選項) 的進階 SSD 或 UltraDisk。 封存的 Oracle 重做記錄檔及 Oracle 復原管理員備份組,也可以與線上重做記錄檔一起存放。 主機快取限制為 4095 GiB,因此使用主機快取時,請勿配置大於 P50 的進階 SSD。 如果您需要超過 4 TiB 的儲存體,請使用 RAID-0 等量數個進階 SSD。 使用 Linux LVM2 或 Oracle Automatic Storage Management。

如果白天和晚上的工作負載變化很大,但 I/O 工作負載有能力支援,則具有高載的 P1-P20 進階 SSD 可能提供夜間批次負載或有限 I/O 需求期間所需的效能。

安全性

安裝並設定 Azure 環境之後,接著需要保護網路。 以下是一些建議:

  • NSG 原則:您可以依子網路或網路介面卡來定義 NSG。 不論是安全性或強制路由應用程式防火牆,在子網路層級控制存取比較簡單。

  • Jumpbox:基於更安全的存取,管理員不應該直接連線至應用程式服務或資料庫。 在管理員機器與 Azure 資源之間使用 jumpbox。

    Diagram that shows the jumpbox topology.

    管理員機器應該只提供 jumpbox 的 IP 受限存取權。 Jumpbox 應該要能夠存取應用程式和資料庫。

  • 私人網路 (子網路):最好將應用程式服務和資料庫放在不同的子網路,NSG 原則才能設定更妥善的控制。

資源

下一步