使用 AWR 報告估計甲骨文資料庫的 Amazon RDS 引擎大小 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWR 報告估計甲骨文資料庫的 Amazon RDS 引擎大小

由阿布舍克韋爾馬(AWS)和愛德華多·瓦倫丁(AWS)創建

環境:生產

來源:甲骨文數據庫

目標:Amazon RDS 或 Amazon Aurora

R 型:重新建築

工作量:甲骨文

技術:資料庫;移轉

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 (Amazon EC2) 執行個體上,也可以是適用於 Oracle 資料庫執行個體的 Amazon RDS。目標資料庫可以是任何 Amazon RDS 或 Aurora 資料庫。

備註:如果您的目標資料庫引擎是 Oracle,則容量預估會更精確。對於其他 Amazon RDS 資料庫,引擎大小可能會因資料庫架構的差異而有所不同。

建議您先執行效能測試,然後再移轉 Oracle 資料庫。

先決條件和限制

先決條件

  • 可下載 AWR 報表的「Oracle 資料庫企業版」授權與「Oracle 診斷套件」授權。

產品版本

  • 適用於版本 11g (11.2.0.3.v1 及更新版本) 以及最高至 12.2 和 18c、19 版的所有甲骨文資料庫版本。

  • 此模式不包括 Oracle 工程系統或 Oracle 雲端基礎架構 (OCI)。

架構

源, 技術, 堆棧

下列其中一項:

  • 內部部署 Oracle 資料庫

  • EC2 執行個體上的甲骨文資料庫

  • Amazon RDS for Oracle 數據庫實例

目標技術堆疊

  • 任何 Amazon RDS 或 Amazon Aurora 數據庫

目標架構

如需完整遷移程序的相關資訊,請參閱使用 AWS DMS 和 AWS SCT 將甲骨文資料庫遷移至 Aurora PostgreSQL 模式。

自動化和規模

如果您要遷移多個 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 彈性區塊存放區 (Amazon EBS) 輸送量和網路輸送量。

  • 在移轉前執行效能測試,以驗證引擎大小。

史诗

任務描述所需技能

啟用 AWR 報表。

若要啟用報表,請遵循 Oracle 說明文件中的指示。

DBA

檢查保留期。

若要檢查 AWR 報表的保留期間,請使用下列查詢。

SQL> SELECT snap_interval,retention FROM dba_hist_wr_control;
DBA

產生快照。

如果 AWR 快照間隔的精細度不夠,無法擷取尖峰工作負載的尖峰,您可以手動產生 AWR 報告。若要產生手動 AWR 快照,請使用下列查詢。

SQL> EXEC dbms_workload_repository.create_snapshot;
DBA

檢查最近的快照。

若要檢查最近的 AWR 快照,請使用下列查詢。

SQL> SELECT snap_id, to_char(begin_interval_time,'dd/MON/yy hh24:mi') Begin_Interval, to_char(end_interval_time,'dd/MON/yy hh24:mi') End_Interval FROM dba_hist_snapshot ORDER BY 1;
DBA
任務描述所需技能

選擇一種方法。

IOPS 是儲存裝置上每秒輸入和輸出操作的標準測量方法,包括讀取和寫入作業。 

如果要將現場部署資料庫遷移到 AWS,則需要判斷資料庫使用的尖峰磁碟 I/O。 您可以使用下列方法來估計目標資料庫的磁碟 I/O:

  • AWR 報表的載入設定檔段落

  • AWR 報表的「執行處理活動統計資料」段落 (Oracle 資料庫 12c 或更新的版本請使用此段落)

  • AWR 報表的「I/O 設定檔」段落 (如果是 12c 之前的「Oracle 資料庫」版本,請使用此段落)

  • AWR 檢視表

下列步驟說明這四種方法。

DBA

選項 1:使用負載輪廓。

下表顯示 AWR 報表之「負載設定檔」段落的範例。

重要事項:如需更準確的資訊,建議您使用選項 2 (I/O 設定檔) 或選項 3 (執行個體活動統計資料),而非負載設定檔。

 

每秒

每宗交易

每位執行

每次通話

資料庫時間:

26.6

0.2

0.00

0.02

資料庫中央處理器:

18.0

0.1

0.00

0.01

背景中央處理器:

0.2

0.0

0.00

0.00

重做大小 (位元組):

2,458,539.9

17,097.5

 

 

邏輯讀取(塊):

3,371,931.5

23,449.6

 

 

區塊變更:

21,643.5

150.5

 

 

物理讀取(塊):

13,575.1

94.4

 

 

物理寫入(塊):

3,467.3

24.1

 

 

讀取 IO 請求:

3,586.8

24.9

 

 

寫入 IO 請求:

574.7

4.0

 

 

讀取 IO (MB):

106.1

0.7

 

 

寫入 IO (MB):

27.1

0.2

 

 

IM 掃描行:

0.0

0.0

 

 

會話邏輯讀取 IM:

 

 

 

 

使用者呼叫:

1,245.7

8.7

 

 

剖析:

4,626.2

32.2

 

 

硬解析(SQL):

8.9

0.1

 

 

SQL 工作區域 (MB):

824.9

5.7

 

 

登入:

1.7

0.0

 

 

執行 (SQL):

136,656.5

950.4

 

 

回滾:

22.9

0.2

 

 

交易:

143.8

 

 

 

根據這項資訊,您可以計算 IOP 和輸送量,如下所示:

IOPS = 讀取 I/O 請求:+ 寫入 I/O 請求 =

輸送量 = 實體讀取 (區塊) + 實體寫入 (區塊) =

由於 Oracle 中的區塊大小為 8 KB,因此您可以按如下方式計算總輸送量:

總輸送量 (以 MB 為單位) 為 17042.4 * 8 * 1024

警告:請勿使用負載設定檔來估計執行個體大小。它不如執行個體活動統計資料或 I/O 設定檔那麼精確。

DBA

選項 2:使用執行個體活動統計資料。

如果您使用的是 12c 之前的 Oracle 資料庫版本,可以使用 AWR 報表的「執行處理活動統計資料」區段來估計 IOPS 和輸送量。下表顯示本節的範例。

統計數字

總計

每秒

每次反式

物理讀取總 IO 請求

2,547,333,217

3,610.28

25.11

物理讀取總字節

80,776,296,124,928

114,482,426.26

796,149.98

物理寫入總 IO 請求

534,198,208

757.11

5.27

實體寫入總位元組

25,517,678,849,024

36,165,631.84

251,508.18

根據這項資訊,您可以計算 IOPS 和輸送量的總計,如下所示:

總 IOPS 總數 = 3,610.28 + 757.11 = 4367

總兆比特 = 114,482,426.26 +

DBA

選項 3:使用 I/O 設定檔。

在 Oracle 資料庫 12c 中,AWR 報表包含「I/O 設定檔」段落,以單一表格顯示所有資訊,並提供更精確的資料庫效能資料。下表顯示本節的範例。

 

每秒讀取 + 寫入

每秒讀取

每秒寫入次數

請求總數:

4,367.4

3,610.3

757.1

資料庫要求:

4,161.5

3,586.8

574.7

優化請求:

0.0

0.0

0.0

重做請求:

179.3

2.8

176.6

總計 (MB):

143.7

109.2

34.5

資料庫 (MB):

133.1

106.1

27.1

最佳化總計 (MB):

0.0

0.0

0.0

重做功能 (MB):

7.6

2.7

4.9

資料庫 (區塊):

17,042.4

13,575.1

3,467.3

通過緩衝區緩存(塊):

5,898.5

5,360.9

537.6

直接(塊):

11,143.9

8,214.2

2,929.7

此表格提供下列輸送量和 IOPS 總數值:

輸送量 = 143 MBPS (從第五列開始,標示為「總計」,第二欄)

IOPS = 4,367.4(從第一行,標記為「總請求」,第二列)

DBA

選項 4:使用 AWR 視觀表。

您可以使用 AWR 檢視來查看相同的 IOPS 和輸送量資訊。若要取得此資訊,請使用下列查詢: 

break on report compute sum of Value on report select METRIC_NAME,avg(AVERAGE) as "Value" from dba_hist_sysmetric_summary where METRIC_NAME in ('Physical Read Total IO Requests Per Sec','Physical Write Total IO Requests Per Sec') group by metric_name;
DBA
任務描述所需技能

選擇一種方法。

您可以透過三種方式估計目標資料庫所需的 CPU:

  • 使用處理器的實際可用核心

  • 通過使用基於操作系統統計信息的使用內核

  • 通過使用基於數據庫統計信息的使用內核

如果您要查看使用的核心,我們建議您使用資料庫指標方法而非作業系統統計資料,因為它是以您計劃移轉的資料庫使用的 CPU 為基礎。(操作系統統計信息還包括其他進程的 CPU 使用率。) 您也應該在 ADDM 報表中檢查 CPU 相關建議,以改善移轉後的效能。

您也可以根據 CPU 產生預估需求。如果您使用的是不同的 CPU 世代,則可以依照白皮書中的指示來預估目標資料庫所需的 CPU,以達到最佳工作負載效能的神秘面紗。

DBA

選項 1:根據可用核心預估需求。

在 AWR 報表中:

  • CPU 指的是邏輯和虛擬 CPU。 

  • 核心是實體 CPU 晶片組中的處理器數量。 

  • 插槽是將晶片連接至主機板的實體裝置。多核心處理器具有多個 CPU 核心的插槽。

您可以使用兩種方式估算可用的核心:

  • 通過使用 OS 命令

  • 使用 AWR 報表

使用 OS 命令估計可用的核心

使用下列指令來計算處理器中的核心數。

$ cat /proc/cpuinfo |grep "cpu cores"|uniq cpu cores : 4 cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed s/physical/\\nphysical/g | grep -v ^$ | sort | uniq | wc -l

使用以下命令來計算處理器中的插槽。

grep "physical id" /proc/cpuinfo | sort -u physical id : 0 physical id : 1

注意:我們不建議使用作業系統命令 (例如 nmonsar) 來擷取 CPU 使用率。這是因為這些計算包括其他處理序的 CPU 使用率,而且可能無法反映資料庫所使用的實際 CPU。

使用 AWR 報表預估可用核心

您也可以從 AWR 報告的第一個區段衍生 CPU 使用率。以下是報告的摘錄。

資料庫名稱

資料庫 ID

執行個體

研究所

啟動時間

發行版本

RAC

XXXX

<DB_ID>

XXXX

1

九月二十日 23:09

12.1.0.2.0

NO

Host Name (主機名稱)

平台

CPU

核心

插座

記憶體 (GB)

<host_name>

64 位

80

80

2

441.78

在此範例中,CPU 計數為 80,表示這些是邏輯 (虛擬) CPU。您也可以看到此組態有兩個插槽,每個插槽上有一個實體處理器 (總共兩個實體處理器),以及每個實體處理器或插槽 40 個核心。 

DBA

選項 2:使用作業系統統計資料預估 CPU 使用率。

您可以直接在作業系統中 (使用 sar 或其他主機作業系統公用程式) 檢查作業系統 CPU 使用率統計資料,或從 AWR 報告的「作業系統統計資料」段落檢查 IDLE/ (IDLE+BUSY) 值。您可以看到直接從 v$ osstat 消耗的 CPU 的秒數。AWR 和 Statspack 報表也會在「作業系統統計資料」段落中顯示此資料。

如果在同一個方塊上有多個資料庫,它們都具有相同的 v$osstat 值為 BUSY_TIME。

統計數字

Value

結束值

自由記憶體位元組

6,810,677,248

12,280,799,232

非作用中記憶體位元組

175,627,333,632

160,380,653,568

免費 _ 位元組交換

17,145,614,336

17,145,872,384

商務時間

1,305,569,937

 

閒置時間

4,312,718,839

 

科威特時間

53,417,174

 

美好時光

29,815

 

系統時間

148,567,570

 

使用者時間

1,146,918,783

 

載入

25

29

以位元組為單位

593,920

 

輸出位元組

327,680

 

實體記憶體位元組

474,362,417,152

 

CPU 数

80

 

CPU 核心數

80

 

通訊端數

2

 

全局接收 _ 大小 _ 最大

4194,304

 

全局發送大小 _ 最大

2,097,152

 

TCP_ 接收 _ 大小 _ 預設值

87,380

 

TCP_ 接收 _ 大小 _ 最大

6,291,456

 

TCP_ 接收 _ 大小 _ 分鐘

4,096

 

TCP_ 發送 _ 大小 _ 默認值

16,384

 

TCP_ 發送 _ 大小 _ 最大

4194,304

 

傳送大小 _ 最小值

4,096

 

如果系統中沒有其他主要 CPU 消費者,請使用下列公式來計算 CPU 使用率的百分比:

使用率 = 忙碌時間/總時間

忙碌時間 = 要求 = V $ 操作時間

C = 總時間 (忙碌 + 閒置)

C = 容量 = V $ 奧斯塔. 繁忙時間 + V $ 閒置時間

使用率 = 忙碌時間/(工作時間 + 閒置時間)

= -1,305,569,937/(1,305,569,937 + 4,312,718,839)

= 已使用 23%

DBA

選項 3:使用資料庫測量結果預估 CPU 使用率。

如果系統中有多個資料庫執行,您可以使用報表開頭顯示的資料庫測量結果。

 

鎖點識別碼

捕捉時間

工作階段

光標/工作階段

開始鎖點:

184662

九月二十八日

1226

35.8

結束鎖點:

185446

十月六日至二十

1876

41.1

經過:

 

11,759.64 (分鐘)

 

 

資料庫時間:

 

(分鐘)

 

 

若要取得 CPU 使用率測量結果,請使用下列公式:

資料庫 CPU 使用率 (CPU 可用電源的百分比) = CPU 時間/CPU 數量/經歷時間

其中 CPU 使用率由 CPU 時間描述,代表花在 CPU 上的時間,而不是等待 CPU 的時間。此計算結果如下:

= 312,625.40/11,759.64/80 = 正在使用中央處理器的 33%

核心數目 (33%) * 80 = 26.4 個核心

核心總數 = 26.4 * (120%) =

您可以使用這兩個值中的較大值來計算 Amazon RDS 或 Aurora 資料庫執行個體的 CPU 使用率。

附註:在 IBM AIX 上,計算的使用率與作業系統或資料庫中的值不符。這些值在其他作業系統上確實相符。

DBA
任務描述所需技能

使用記憶體統計資料預估記憶體需求。

您可以使用 AWR 報表來計算來源資料庫的記憶體,並在目標資料庫中比對它。您也應該檢查現有資料庫的效能,並降低記憶體需求以節省成本,或增加需求以提升效能。這需要對 AWR 響應時間和應用程序的服務級別協議(SLA)進行詳細分析。使用 Oracle 系統整體區域 (SGA) 與程式整體區域 (PGA) 使用量的總和,作為 Oracle 的預估記憶體使用率。為 OS 添加額外的 20% 以確定目標內存大小需求。對於 Oracle RAC,請在所有 RAC 節點上使用預估的記憶體使用率總和,並減少總記憶體,因為它儲存在一般區塊上。

  1. 檢查「執行處理效率百分比」表格中的測量結果。此表格使用下列術語:

    • 緩衝區命中百分比」是在緩衝區快取中找到特定區塊 (而非執行實體 I/O) 的百分比。為了獲得較佳效能,請以 100% 為目標。 

    • 緩衝區無等待百分比應接近 100%。

    • 鎖存命中% 應接近 100%。 

    • % 非剖析 CPU 是非剖析活動所花費的 CPU 時間百分比。這個值應該接近 100%。.

    執行環境效率百分比 (目標 100%)

    緩衝區未等待%:

    99.99

    重做 NoWait %:

    100.00

    緩衝區命中%:

    99.84

    記憶體內排序%:

    100.00

    程式庫命中率:

    748.77

    軟剖析%:

    99.81

    執行以解析%:

    96.61

    閂鎖命中%:

    100.00

    剖析 CPU 以剖析耗用%:

    72.73

    % 非剖析中央處理器:

    99.21

    快閃記憶體命中率:

    0.00

     

     

    在此範例中,所有測量結果看起來都很好,因此您可以將 SGA 和 PGA 用於現有資料庫作為容量規劃需求。

  2. 檢查記憶體統計資料區段並計算 SGA/PGA。

     

    開始

    結束

    主機記憶體 (MB):

    452,387.3

    452,387.3

    SGA 用途 (MB):

    220,544.0

    220,544.0

    PGA 使用量 (MB):

    36,874.9

    45,270.0

使用中的執行個體記憶體總計 = 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 資料庫的容量應為:

  • 68 核心處理器

  • 每秒 143 兆比特的輸送量  

  • 4367 IOPS,適用於磁碟 I/O

  • 464 GB 的記憶體

在目標 Amazon RDS 或 Aurora 資料庫中,您可以將這些值對應至資料庫 .r5.16xlarge 執行個體類型,其容量為 32 個核心、512 GB 的記憶體和 13,600 Mbps 的輸送量。 如需詳細資訊,請參閱 AWS 部落格文章根據 Oracle 效能指標大小適當大小的 Amazon RDS 執行個體大小。

DBA

相關資源