在 Azure 中設計和實作 Oracle 資料庫
適用於:✔️ Linux VM
Azure 適用于所有 Oracle 工作負載,包括需要繼續使用 Oracle 在 Azure 中以最佳方式執行的工作負載。 如果您有 Oracle 診斷套件 或 自動工作負載存放庫 (AWR) ,您可以收集工作負載的相關資料。 使用此資料來評估 Oracle 工作負載、調整資源需求的大小,並將工作負載遷移至 Azure。 這些報表中的 Oracle 提供的各種計量,可讓您瞭解應用程式效能和平臺使用方式。
本文可協助您準備 Oracle 工作負載以在 Azure 中執行,並探索最佳架構解決方案,以提供最佳的雲端效能。 Oracle 在 Statspack 中提供的資料,以及更進一步的子代 AWR,可協助您開發明確的期望。 這些期望包括透過架構進行實體微調的限制、資料庫程式碼邏輯調整的優點,以及整體資料庫設計。
兩個環境之間的差異
將內部部署應用程式遷移至 Azure 時,請記住兩個環境之間的一些重要差異。
其中的一項重要差異是,Azure 實作中的資源 (例如 VM、磁碟和虛擬網路) 會與其他用戶端共用。 此外,您可以根據需求來節流資源。 Azure 不會專注于避免失敗,而是更著重于存留失敗。 第一種方法會嘗試增加 MTBF) 失敗之間的平均時間 (,第二種方法會嘗試減少 平均復原時間 , (MTTR) 。
下表列出 Oracle 資料庫在內部部署實作和 Azure 實作之間的一些差異。
內部部署實作 | Azure 實作 | |
---|---|---|
網路功能 | LAN/WAN | 軟體定義網路 (SDN) |
安全性群組 | IP/連接埠限制工具 | 網路安全性群組 (NSG) |
恢復功能 | MTBF | MTTR |
預定的維修 | 修補/升級 | 具有 Azure 所管理修補/升級的可用性設定組 |
資源 | 專用 | 與其他用戶端共用 |
區域 | 資料中心 | 區域配對 |
存放裝置 | 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.sql。 報表 g
會針對單一報表中 RAC 資料庫中的所有節點建立報表。 此報告不需要在每個 RAC 節點上都執行一份報告。
您可以從 AWR 報告取得下列計量:
- 資料庫名稱、執行個體名稱和主機名稱
- Oracle 支援的資料庫版本
- CPU/核心
- SGA/PGA 和建議程式,讓您知道是否過低
- 記憶體總計 (GB)
- CPU 忙碌百分比
- DB CPU
- IOPs (讀取/寫入)
- MBPs (讀取/寫入)
- 網路輸送量
- 網路延遲速率 (低/高)
- 前幾名等候事件
- 資料庫的參數設定
- 資料庫是 RAC、Exadata 或使用進階功能或組態
虛擬機器大小
您可以採取以下一些步驟來設定虛擬機器大小,以獲得最佳效能。
根據 AWR 報表中的 CPU、記憶體和 I/O 使用量來預估 VM 大小
查看前五個計時前景事件,這指出系統瓶頸所在。 例如在下圖中,記錄檔案同步在頂端。 指出記錄寫入器將記錄緩衝區寫入重做記錄檔之前所需的等候次數。 這些結果代表您需要效能更好的儲存體或磁碟。 此外,圖表也會顯示 CPU 核心數目和記憶體數量。
下圖顯示讀取和寫入的 I/O 總計。 報表統計期間共有 59 GB 的讀取和 247.3 GB 的寫入。
選擇 VM
根據您從 AWR 報表收集到的資訊,下一個步驟是選擇符合您需求且大小類似的 VM。 如需可用 VM 的詳細資訊,請參閱 記憶體優化虛擬機器大小。
根據 ACU 微調類似 VM 系列的 VM 大小
選擇 VM 之後,請注意 VM 的 Azure 計算單位 (ACU) 。 您可以根據較適合您需求的 ACU 值,選擇不同的 VM。 如需詳細資訊,請參閱 Azure 計算單位。
網路輸送量
下圖顯示輸送量與 IOPS 之間的關聯性:
總網路輸送量是根據下列資訊進行預估:
- SQL*Net 流量
- MBps 會 (輸出資料流程的伺服器數目,例如 Oracle Data Guard)
- 其他因素,例如應用程式複寫
根據您的網路頻寬需求,有各種閘道類型可供您選擇。 這些類型包括基本、VpnGw 和 Azure ExpressRoute。 如需詳細資訊,請參閱 VPN 閘道定價。
建議
- 與內部部署相較之下,網路延遲較高。 減少網路來回行程可以大幅改善效能。
- 若要減少來回行程,請合併在相同虛擬機器上具有高交易或 聊天 應用程式的應用程式。
- 使用具有加速網路的虛擬機器,以提升網路效能。
- 針對某些 Linux 發行版本,請考慮啟用 TRIM/UNMAP 支援。
- 在單獨的虛擬機器上安裝 Oracle Enterprise Manager。
- 預設不會在 Linux 上啟用大型頁面。 請考慮啟用超大分頁,並在 Oracle DB 上設定
use_large_pages = ONLY
。 這種方法可能有助於提升效能。 如需詳細資訊,請參閱 USE_LARGE_PAGES。
磁碟類型和設定
以下是您考慮磁片的一些秘訣。
預設 OS 磁碟:這些磁碟類型提供持續性資料和快取。 最適合開機時的作業系統存取,並非為了交易式或資料倉儲 (分析) 工作負載而設計。
受控磁碟:Azure 管理您用於 VM 磁碟的儲存體帳戶。 您可以指定磁片類型和所需磁片的大小。 此類型通常是 Oracle 工作負載的進階 (SSD) 。 Azure 會為您建立並管理該磁碟。 進階 SSD 受控磁片僅適用于記憶體優化和設計 VM 系列。 在選擇特定的 VM 大小之後,功能表只會根據該 VM 大小顯示可用的進階儲存體 SKU。
在 VM 上設定儲存體之後,建議您在建立資料庫之前載入測試磁片。 知道延遲和輸送量方面的 I/O 速率可以協助您判斷 VM 是否支援具有延遲目標的預期輸送量。 應用程式負載測試有數個工具,例如 Oracle Orion、Sysbench、SLOB 和 Fio。
部署 Oracle 資料庫之後,再次執行負載測試。 啟動您的一般和尖峰工作負載,其結果會顯示您環境的基準數據。 在工作負載測試中要務實。 執行與實際在 VM 上執行的內容無關的工作負載並不合理。
由於 Oracle 可以是需要大量 I/O 的資料庫,因此請務必根據 IOPS 速率來調整儲存體大小,而不是儲存體大小。 例如,如果所需的 IOPS 值為 5,000,但您只需要 200 GB,您仍可能會取得 P30 類別進階磁片,即使它隨附超過 200 GB 的儲存體也一樣。
您可以從 AWR 報告取得 IOPS 速率。 重做記錄檔、實體讀取和寫入速率會決定 IOPS 速率。 請務必確認您選擇的 VM 系列能夠處理工作負載的 I/O 需求。 如果 VM 的 I/O 限制低於儲存體,VM 會設定上限。
例如:重做大小是每秒 12,200,000 個位元組,相當於 11.63 MBPs。 IOPS 值為 12,200,000 / 2,358 = 5,174。
在清楚了解 I/O 需求之後,即可選擇最符合這些需求的磁碟機組合。
磁片類型建議
- 針對資料表空間,使用受控儲存體或 Oracle 自動儲存體管理 (ASM) ,將 I/O 工作負載分散到數個磁片上。
- 使用 Oracle 進階壓縮來減少資料和索引的 I/O。
- 將重做記錄、暫存和復原資料表空間分開到不同資料磁碟上。
- 不要將任何應用程式檔案放在預設作業系統磁碟上。 這些磁碟不適合用於快速 VM 啟動階段,因此可能不會為您的應用程式提供良好的效能。
- 當您在進階儲存體上使用 M-Series VM 時,請在重做記錄磁碟上啟用寫入加速器。
- 請考慮將高延遲的重做記錄移至 Ultra 磁碟。
磁碟快取設定
雖然主機快取有三個選項,但針對 Oracle 資料庫上的資料庫工作負載,只建議使用唯讀快取。 讀取/寫入可能讓資料檔案出現重大弱點,因為資料庫寫入的目標是記錄到資料檔案,而不是快取資訊。 唯讀會快取所有要求,供未來讀取。 所有寫入會持續寫入磁碟。
磁片快取建議
若要達到最大輸送量,主機快取盡可能從唯讀開始。 針對進階儲存體,當您以唯讀選項裝載檔案系統時,請記住必須停用屏障。 以磁碟的通用唯一識別碼來更新 /etc/fstab 檔案。
- 針對作業系統磁碟,請使用具有讀寫主機快取的進階 SSD。
- 針對包含下列各項的資料磁碟,請使用具有唯讀主機快取的進階 SSD:Oracle 資料檔案、暫存檔案、控制檔案、區塊變更追蹤檔案、BFILE、外部資料表的檔案,以及快閃回傳記錄。
- 對於包含 Oracle 線上重做記錄檔的資料磁片,請使用沒有主機快取的進階 SSD 或 UltraDisk, 則為 [無 ] 選項。 封存的 Oracle 重做記錄檔和 Oracle 復原管理員備份組,也可以與線上重做記錄檔一起存放。 主機快取限制為 4095 GiB,因此請勿使用主機快取配置大於 P50 的進階 SSD。 如果您需要超過 4 TiB 的儲存體,請使用 RAID-0 等量數個進階 SSD。 使用 Linux LVM2 或 Oracle 自動儲存體管理。
如果白天和晚上的工作負載變化很大,但 I/O 工作負載有能力支援,則具有高載的 P1-P20 進階 SSD 可能提供夜間批次負載或有限 I/O 需求期間所需的效能。
安全性
設定並設定 Azure 環境之後,您必須保護您的網路。 以下是一些建議:
NSG 原則:您可以依子網路或網路介面卡來定義 NSG。 不論是安全性或強制路由應用程式防火牆,在子網路層級控制存取比較簡單。
Jumpbox:基於更安全的存取,管理員不應該直接連線至應用程式服務或資料庫。 在管理員機器與 Azure 資源之間使用 jumpbox。
管理員機器應該只提供 jumpbox 的 IP 受限存取權。 Jumpbox 應該要能夠存取應用程式和資料庫。
私人網路 (子網路):最好將應用程式服務和資料庫放在不同的子網路,NSG 原則才能設定更妥善的控制。