本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用AWR報告估算 Oracle 資料庫的 Amazon RDS引擎大小
由 Abhishek Verma (AWS) 和 Eduardo Valentim (AWS) 建立
環境:生產 | 來源:Oracle 資料庫 | 目標:Amazon RDS或 Amazon Aurora |
R 類型:重新架構 | 工作負載:Oracle | 技術:資料庫;遷移 |
AWS 服務:Amazon RDS;Amazon Aurora |
Summary
當您將 Oracle 資料庫遷移至 Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora 時,計算目標資料庫的 CPU、記憶體和磁碟 I/O 是金鑰需求。您可以分析 Oracle 自動工作負載儲存庫 (AWR) 報告,預估目標資料庫所需的容量。此模式說明如何使用AWR報告來估算這些值。
來源 Oracle 資料庫可以是內部部署或託管在 Amazon Elastic Compute Cloud (AmazonEC2) 執行個體上,也可以是 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 資料庫
目標架構
如需完整遷移程序的相關資訊,請參閱使用 AWSDMS和 將 Oracle 資料庫遷移至 Aurora PostgreSQL AWS 的SCT模式。
自動化和擴展
如果您有多個 Oracle 資料庫要遷移,而且想要使用其他效能指標,您可以依照部落格文章中所述的步驟,根據 Oracle 效能指標大規模調整大小的 Amazon RDS執行個體
工具
Oracle 自動工作負載儲存庫 (AWR)
是內建於 Oracle 資料庫的儲存庫。它會定期收集和存放系統活動和工作負載資料,然後由自動資料庫診斷監視器 () 進行分析ADDM。AWR 會定期 (依預設,每 60 分鐘) 擷取系統效能資料的快照,並儲存資訊 (依預設,最多 8 天)。 您可以使用AWR檢視和報告來分析此資料。
最佳實務
若要計算目標資料庫的資源需求,您可以使用單一AWR報告、多個AWR報告或動態AWR檢視。建議您在尖峰負載期間使用多個AWR報告,以估算處理這些尖峰負載所需的資源。此外,動態檢視提供了更多資料點,可協助您更精確地計算資源需求。
您IOPS僅應預估要遷移的資料庫,而不是使用磁碟的其他資料庫和程序。
若要計算資料庫使用的 I/O 數量,請勿使用AWR報告載入設定檔區段中的資訊。如果 I/O 設定檔區段可用,請改用它,或跳至執行個體活動統計資料區段,並查看實體讀取和寫入操作的總值。
當您估計CPU使用率時,我們建議您使用資料庫指標方法,而不是作業系統 (OS) 統計資料,因為其以僅由資料庫CPU使用的 為基礎。(作業系統統計資料也包含其他程序CPU的使用量。) 您也應該檢查ADDM報告中CPU與 相關的建議,以提高遷移後的效能。
當您判斷正確的執行個體類型時,請考慮特定執行個體大小的 I/O 輸送量限制:Amazon Elastic Block Store (AmazonEBS) 輸送量和網路輸送量。
在遷移之前執行效能測試,以驗證引擎大小。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
啟用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 設定檔區段,可在單一資料表中呈現所有資訊,並提供更準確的資料庫效能資料。下表顯示本節的範例。
此資料表提供以下輸送量和總計 的值IOPS: 輸送量 = 143 MBPS(從第五列,標記為總計,第二欄) IOPS = 4,367.4 (從第一列,標記為請求總數,第二欄) | DBA | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
選項 4:使用AWR檢視。 | 您可以使用AWR檢視來查看相同的 IOPS和輸送量資訊。若要取得此資訊,請使用下列查詢:
| DBA |
任務 | 描述 | 所需的技能 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
選擇方法。 | 您可以透過三種方式估算目標資料庫CPU所需的 :
如果您正在查看已使用的核心,我們建議您使用資料庫指標方法,而不是作業系統統計資料,因為該方法僅基於您計劃遷移的資料庫CPU所使用的 。(作業系統統計資料也包含其他程序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_ v$osstat 值TIME。
如果系統中沒有其他主要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 資料庫的容量應該是:
在目標 AmazonRDS 或 Aurora 資料庫中,您可以將這些值對應至 db.r5.16xlarge 執行個體類型,其容量為 32 個核心RAM、512 GB 的 和 13,600 Mbps 的輸送量。如需詳細資訊,請參閱AWS部落格 postRight-size Amazon RDS執行個體,根據 Oracle 效能指標 進行擴展 | DBA |
相關資源
Aurora 資料庫執行個體類別 (Amazon Aurora 文件)
Amazon 資料庫執行個體儲存 RDS (Amazon RDS 文件)
AWS Miner 工具
GitHub (儲存庫)