本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWR 報告估計 Oracle 資料庫的 Amazon RDS 引擎大小
由 Abhishek Verma (AWS) 和 Eduardo Valentim (AWS) 建立
Summary
當您將 Oracle 資料庫遷移至 Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora 時,計算目標資料庫的 CPU、記憶體和磁碟 I/O 是關鍵需求。您可以分析 Oracle 自動工作負載儲存庫 (AWR) 報告,來估計目標資料庫所需的容量。此模式說明如何使用 AWR 報告來估計這些值。
來源 Oracle 資料庫可以是內部部署或託管在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上,也可以是 Amazon RDS for Oracle 資料庫執行個體。目標資料庫可以是任何 Amazon RDS 或 Aurora 資料庫。
注意
如果您的目標資料庫引擎是 Oracle,容量估算會更精確。對於其他 Amazon RDS 資料庫,引擎大小可能會因資料庫架構的差異而有所不同。
我們建議您在遷移 Oracle 資料庫之前執行效能測試。
先決條件和限制
先決條件
下載 AWR 報告的 Oracle Database Enterprise Edition 授權和 Oracle Diagnostics Pack 授權。
產品版本
11g 版 (11.2.0.3.v1 版及更新版本) 和最多 12.2 版和 18c,19c 版的所有 Oracle 資料庫版本。
此模式不包含 Oracle Engineered Systems 或 Oracle Cloud Infrastructure (OCI)。
架構
來源技術堆疊
下列其中一項:
內部部署 Oracle 資料庫
EC2 執行個體上的 Oracle 資料庫
Amazon RDS for Oracle 資料庫執行個體
目標技術堆疊
任何 Amazon RDS 或 Amazon Aurora 資料庫
目標架構
如需完整遷移程序的資訊,請參閱使用 AWS DMS 和 AWS SCT 將 Oracle 資料庫遷移至 Aurora PostgreSQL 的模式。
自動化和擴展
如果您有多個 Oracle 資料庫要遷移,而且想要使用其他效能指標,您可以依照部落格文章中所述的步驟,根據 Oracle 效能指標大規模調整 Amazon RDS 執行個體的大小
工具
Oracle 自動工作負載儲存庫 (AWR)
是內建於 Oracle 資料庫的儲存庫。它會定期收集和存放系統活動和工作負載資料,然後由自動資料庫診斷監控 (ADDM) 進行分析。AWR 會定期擷取系統效能資料的快照 (預設為每 60 分鐘),並存放資訊 (預設為最多 8 天)。 您可以使用 AWR 檢視和報告來分析此資料。
最佳實務
若要計算目標資料庫的資源需求,您可以使用單一 AWR 報告、多個 AWR 報告或動態 AWR 檢視。我們建議您在尖峰負載期間使用多個 AWR 報告來估計處理這些尖峰負載所需的資源。此外,動態檢視提供了更多資料點,可協助您更精確地計算資源需求。
您應該僅針對計劃遷移的資料庫估計 IOPS,而不是使用磁碟的其他資料庫和程序。
若要計算資料庫使用的 I/O 數量,請勿使用 AWR 報告載入設定檔區段中的資訊。如果可用,請改用輸入/輸出設定檔區段,或跳至執行個體活動統計資料區段,並查看實體讀取和寫入操作的總值。
當您估計 CPU 使用率時,我們建議您使用資料庫指標方法,而不是作業系統 (OS) 統計資料,因為它是以資料庫使用的 CPU 為基礎。(OS 統計資料也包含其他程序的 CPU 用量。) 您也應該檢查 ADDM 報告中與 CPU 相關的建議,以提升遷移後的效能。
當您判斷正確的執行個體類型時,請考慮特定執行個體大小的 I/O 輸送量限制:Amazon Elastic Block Store (Amazon EBS) 輸送量和網路輸送量。
在遷移之前執行效能測試,以驗證引擎大小。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
啟用 AWR 報告。 | 若要啟用報告,請遵循 Oracle 文件 | DBA |
檢查保留期間。 | 若要檢查 AWR 報告的保留期間,請使用下列查詢。
| DBA |
產生快照。 | 如果 AWR 快照間隔不夠精細,無法擷取尖峰工作負載的峰值,您可以手動產生 AWR 報告。若要產生手動 AWR 快照,請使用下列查詢。
| DBA |
檢查最近的快照。 | 若要檢查最近的 AWR 快照,請使用下列查詢。
| DBA |
任務 | 描述 | 所需的技能 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
選擇方法。 | IOPS 是儲存裝置上每秒輸入和輸出操作的標準測量,並包含讀取和寫入操作。 如果您要將現場部署資料庫遷移至 AWS,您需要判斷資料庫使用的尖峰磁碟 I/O。您可以使用下列方法來估算目標資料庫的磁碟 I/O:
下列步驟說明這四種方法。 | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 1:使用負載描述檔。 | 下表顯示 AWR 報告的 Load Profile 區段範例。 重要如需更準確的資訊,建議您使用選項 2 (I/O 設定檔) 或選項 3 (執行個體活動統計資料),而非負載設定檔。
根據此資訊,您可以計算 IOPs和輸送量,如下所示: IOPS = 讀取 I/O 請求:+ 寫入 I/O 請求 = 3,586.8 + 574.7 = 4134.5 輸送量 = 實體讀取 (區塊) + 實體寫入 (區塊) = 13,575.1 + 3,467.3 = 17,042.4 由於 Oracle 中的區塊大小為 8 KB,因此您可以計算總輸送量,如下所示: MB 的總輸送量為 17042.4 * 8 * 1024 / 1024 / 1024 = 133.2 MB 警告請勿使用負載描述檔來估計執行個體大小。它不如執行個體活動統計資料或 I/O 設定檔精確。 | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 2:使用執行個體活動統計資料。 | 如果您使用的是 12c 之前的 Oracle 資料庫版本,則可以使用 AWR 報告的執行個體活動統計資料區段來估計 IOPS 和輸送量。下表顯示本節的範例。
根據此資訊,您可以計算總 IOPS 和輸送量,如下所示: 總 IOPS = 3,610.28 + 757.11 = 4367 總 Mbps = 114,482,426.26 + 36,165,631.84 = 150648058.1 / 1024 / 1024 = 143 Mbps | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 3:使用 I/O 設定檔。 | 在 Oracle Database 12c 中,AWR 報告包含 I/O Profiles 區段,可在單一資料表中呈現所有資訊,並提供更準確的資料庫效能資料。下表顯示本節的範例。
此資料表提供以下輸送量和總 IOPS 的值: 輸送量 = 143 MBPS (從第五列,標記為總計,第二欄) IOPS = 4,367.4 (從第一列,標記為請求總數,第二欄) | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 4:使用 AWR 檢視。 | 您可以使用 AWR 檢視來查看相同的 IOPS 和輸送量資訊。若要取得此資訊,請使用下列查詢:
| DBA |
任務 | 描述 | 所需的技能 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
選擇方法。 | 您可以透過三種方式估算目標資料庫所需的 CPU:
如果您正在查看已使用的核心,我們建議您使用資料庫指標方法,而不是作業系統統計資料,因為它是以您計劃遷移的資料庫所使用的 CPU 為基礎。(OS 統計資料也包含其他程序的 CPU 用量。) 您也應該檢查 ADDM 報告中與 CPU 相關的建議,以提升遷移後的效能。 您也可以根據 CPU 產生來估計需求。如果您使用的是不同的 CPU 世代,您可以依照白皮書中的指示來預估目標資料庫所需的 CPU,說明 vCPUs 數量,以獲得最佳工作負載效能 | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 1:根據可用核心估算需求。 | 在 AWR 報告中:
您可以透過兩種方式預估可用的核心:
使用作業系統命令來估計可用的核心 使用以下命令計算處理器中的核心。
使用以下命令計算處理器中的通訊端。
注意我們不建議使用 nmon 和 sar 等作業系統命令來擷取 CPU 使用率。這是因為這些計算包含其他程序的 CPU 使用率,而且可能不會反映資料庫使用的實際 CPU。 使用 AWR 報告預估可用的核心 您也可以從 AWR 報告的第一個區段衍生 CPU 使用率。以下是報告中的摘錄。
在此範例中,CPUs計數為 80,這表示這些是邏輯 (虛擬) CPUs。您也可以看到此組態有兩個通訊端,每個通訊端有一個實體處理器 (總共兩個實體處理器),以及每個實體處理器或通訊端有 40 個核心。 | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 2:使用作業系統統計資料估計 CPU 使用率。 | 您可以直接在作業系統 (使用 sar 或其他主機作業系統公用程式) 中檢查作業系統 CPU 用量統計資料,也可以從 AWR 報告的作業系統統計資料區段檢閱 IDLE/(IDLE+BUSY) 值。您可以看到直接從 v$osstat 消耗的 CPU 秒數。AWR 和 Statspack 報告也會在作業系統統計資料區段中顯示此資料。 如果同一個方塊中有多個資料庫,則它們都有相同的 BUSY_TIME v$osstat 值。
如果系統中沒有其他主要 CPU 取用者,請使用下列公式來計算 CPU 使用率的百分比: 使用率 = 忙碌時間/總時間 忙碌時間 = 要求 = v$osstat.BUSY_TIME C = 總時間 (忙碌 + 閒置) C = 容量 = v$ostat.BUSY_TIME + v$ostat.IDLE_TIME 使用率 = BUSY_TIME / (BUSY_TIME + IDLE_TIME) = -1,305,569,937 / (1,305,569,937 + 4,312,718,839) = 使用 23% | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 3:使用資料庫指標估計 CPU 使用率。 | 如果系統中有多個資料庫正在執行,您可以使用報告開頭顯示的資料庫指標。
若要取得 CPU 使用率指標,請使用此公式: 資料庫 CPU 用量 (可用 CPU 功率的百分比) = CPU 時間 / NUM_CPUS / 經過時間 其中 CPU 用量是以 CPU 時間描述,並代表在 CPU 上花費的時間,而不是等待 CPU 的時間。此計算會導致: = 312,625.40 / 11,759.64/80 = 正在使用 33% 的 CPU 核心數量 (33%) * 80 = 26.4 個核心 總核心 = 26.4 * (120%) = 31.68 個核心 您可以使用這兩個值中的較大值來計算 Amazon RDS 或 Aurora 資料庫執行個體的 CPU 使用率。 注意在 IBM AIX 上,計算的使用率與作業系統或資料庫的值不相符。這些值確實符合其他作業系統。 | DBA |
任務 | 描述 | 所需的技能 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
使用記憶體統計資料估計記憶體需求。 | 您可以使用 AWR 報告來計算來源資料庫的記憶體,並在目標資料庫中比對。您也應該檢查現有資料庫的效能,並減少記憶體需求以節省成本,或提高需求以改善效能。這需要詳細分析應用程式的 AWR 回應時間和服務層級協議 (SLA)。使用 Oracle 系統全域區域 (SGA) 和程式全域區域 (PGA) 用量的總和作為 Oracle 的估計記憶體使用率。為作業系統新增額外的 20%,以判斷目標記憶體大小需求。對於 Oracle RAC,請使用所有 RAC 節點的估計記憶體使用率總和,並降低總記憶體,因為它存放在一般區塊中。
使用中的執行個體記憶體總數 = SGA + PGA = 220 GB + 45 GB = 265 GB 新增 20% 的緩衝區: 執行個體記憶體總計 = 1.2 * 265 GB = 318 GB 由於 SGA 和 PGA 佔主機記憶體的 70%,因此記憶體需求總計為: 主機記憶體總數 = 318/0.7 = 464 GB 注意當您遷移至 Amazon RDS for Oracle 時,PGA 和 SGA 會根據預先定義的公式預先計算。請確定預先計算的值接近您的預估值。 | DBA |
任務 | 描述 | 所需的技能 |
---|---|---|
根據磁碟 I/O、CPU 和記憶體預估值判斷資料庫執行個體類型。 | 根據先前步驟中的預估,目標 Amazon RDS 或 Aurora 資料庫的容量應該是:
在目標 Amazon RDS 或 Aurora 資料庫中,您可以將這些值映射到 db.r5.16xlarge 執行個體類型,其容量為 32 個核心、512 GB RAM 和 13,600 Mbps 的輸送量。如需詳細資訊,請參閱 AWS 部落格 postRight-size Amazon RDS 執行個體,根據 Oracle 效能指標進行擴展 | DBA |
相關資源
Aurora 資料庫執行個體類別 (Amazon Aurora 文件)
Amazon RDS 資料庫執行個體儲存 (Amazon RDS 文件)
AWS Miner 工具
(GitHub 儲存庫)