

# 为 RDS for Oracle 实例开启大页
<a name="Oracle.Concepts.HugePages"></a>

Amazon RDS for Oracle 支持 Linux 内核大页，提高了数据库扩展能力。大页会导致页表变小，花在内存管理上的 CPU 时间也减少，从而提高大数据库实例的性能。有关更多信息，请参阅 Oracle 文档中的[巨页概述](https://docs.oracle.com/database/121/UNXAR/appi_vlm.htm#UNXAR400)。

您可以将大页与所有支持的 RDS for Oracle 版本和修订版一起使用。

 `use_large_pages` 参数控制是否为数据库实例开启大页。该参数的可能设置包括 `ONLY`、`FALSE` 和 `{DBInstanceClassHugePagesDefault}`。在 Oracle 的默认数据库参数组中，`use_large_pages` 参数设置为 `{DBInstanceClassHugePagesDefault}`。

要控制是否自动为数据库实例开启大页，您可以在参数组中使用 `DBInstanceClassHugePagesDefault` 公式变量。该值如下所示确定：
+ 对于下表中提及的数据库实例类别，`DBInstanceClassHugePagesDefault` 默认情况下计算结果始终为 `FALSE`，而 `use_large_pages` 的计算结果为 `FALSE`。如果数据库实例类至少具有 14GiB 内存，您可为这些数据库实例类手动开启大页。
+ 对于未在下表中提及的数据库实例类别，如果数据库实例类别内存小于 14 GiB，则 `DBInstanceClassHugePagesDefault` 的计算结果始终为 `FALSE`。此外，`use_large_pages` 计算结果为 `FALSE`。
+ 对于未在下表中提及的数据库实例类别，如果实例类别内存至少为 14 GiB 且小于 100 GiB，则 `DBInstanceClassHugePagesDefault` 默认情况下计算结果为 `TRUE`。此外，`use_large_pages` 计算结果为 `ONLY`。您可以通过将 `use_large_pages` 设置为 `FALSE`，手动关闭大页。
+ 对于未在下表中提及的数据库实例类别，如果实例类内存至少为 100 GiB，则 `DBInstanceClassHugePagesDefault` 的计算结果始终为 `TRUE`。此外，`use_large_pages` 的计算结果为 `ONLY`，并且不能禁用大页。

原定设置情况下，不为以下数据库实例类开启大页。


****  

| 数据库实例类系列 | 原定设置情况下未开启大页的数据库实例类 | 
| --- | --- | 
|  db.m5  |  db.m5.large  | 
|  db.m4  |  db.m4.large，db.m4.xlarge，db.m4.2xlarge，db.m4.4xlarge，db.m4.10xlarge  | 
|  db.t3  |  db.t3.micro，db.t3.small，db.t3.medium，db.t3.large  | 

有关数据库实例类的更多信息，请参阅[数据库实例类的硬件规格](Concepts.DBInstanceClass.Summary.md)。

要为新的或现有的数据库实例手动开启大页，请将 `use_large_pages` 参数设置为 `ONLY`。大页不能与 Oracle 自动内存管理 (AMM) 一起使用。如果将 `use_large_pages` 参数设置为 `ONLY`，则还必须将 `memory_target` 和 `memory_max_target` 都设置为 `0`。有关为数据库实例设置数据库参数的更多信息，请参阅[Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。

您也可以设置 `sga_target`、`sga_max_size` 和 `pga_aggregate_target` 参数。当设置系统全局区域 (SGA) 和程序全局区域 (PGA) 内存参数时，请将这些值加在一起。从可用实例内存 (`DBInstanceClassMemory`) 中减去此计算得到的总计值，可确定大页分配后的可用内存。必须保留至少 2 GiB 可用内存或总可用实例内存的 10% (取两者中较小的值)。

配置参数之后，必须重启数据库实例才能使更改生效。有关更多信息，请参阅“[重启数据库实例](USER_RebootInstance.md)”。

**注意**  
Oracle 数据库实例会推迟对与 SGA 相关的初始化参数的更改，直到您重启实例而不进行故障转移。在 Amazon RDS 控制台中，选择**重启**，但*不要* 选择**通过故障转移重启**。在 AWS CLI 中，调用带 `reboot-db-instance` 参数的 `--no-force-failover` 命令。在故障转移期间或导致实例重启的其他维护操作期间，数据库实例不会处理与 SGA 相关的参数。

针对大页，以下示例参数配置手动启用大页。您应根据自己的需要设置这些值。

```
1. memory_target            = 0
2. memory_max_target        = 0
3. pga_aggregate_target     = {DBInstanceClassMemory*1/8}
4. sga_target               = {DBInstanceClassMemory*3/4}
5. sga_max_size             = {DBInstanceClassMemory*3/4}
6. use_large_pages          = ONLY
```

假设在参数组中设置以下参数值。

```
1. memory_target            = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
2. memory_max_target        = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
3. pga_aggregate_target     = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
4. sga_target               = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
5. sga_max_size             = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
6. use_large_pages          = {DBInstanceClassHugePagesDefault}
```

参数组由内存小于 100 GiB 的 db.r4 数据库实例类使用。如果使用这些参数设置并将 `use_large_pages` 设置为 `{DBInstanceClassHugePagesDefault}`，则为 db.r4 实例开启大页。

请考虑在参数组中设置了以下参数值的另一个示例。

```
1. memory_target           = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
2. memory_max_target       = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4})
3. pga_aggregate_target    = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0)
4. sga_target              = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
5. sga_max_size            = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0)
6. use_large_pages         = FALSE
```

该参数组由内存小于 100 GiB 的 db.r4 数据库实例类和 db.r5 数据库实例类使用。如果使用这些参数设置，将在 db.r4 和 db.r5 实例上关闭大页。

**注意**  
如果该参数组由具有至少 100 GiB 内存的 db.r4 数据库实例类或 db.r5 数据库实例类使用，则将覆盖 `FALSE` 的 `use_large_pages` 设置并将其设置为 `ONLY`。在这种情况下，将发送有关覆盖的客户通知。

当大页在数据库实例上处于活动状态后，您可以启用增强监控以查看大页信息。有关更多信息，请参阅 [使用增强监控来监控操作系统指标](USER_Monitoring.OS.md)。