

# 配置高级 RDS for Oracle 功能
<a name="CHAP_Oracle.advanced-features"></a>

RDS for Oracle 支持各种高级功能，包括大页、实例存储和扩展数据类型。

**Topics**
+ [在 RDS for Oracle 实例存储中存储临时数据](CHAP_Oracle.advanced-features.instance-store.md)
+ [为 RDS for Oracle 实例开启大页](Oracle.Concepts.HugePages.md)
+ [在 RDS for Oracle 中开启扩展数据类型](Oracle.Concepts.ExtendedDataTypes.md)

# 在 RDS for Oracle 实例存储中存储临时数据
<a name="CHAP_Oracle.advanced-features.instance-store"></a>

在支持的 RDS for Oracle 数据库实例上，为临时表空间和数据库智能闪存缓存（闪存缓存）使用实例存储。

**Topics**
+ [RDS for Oracle 实例存储的概述](#CHAP_Oracle.advanced-features.instance-store.overview)
+ [开启 RDS for Oracle 实例存储](#CHAP_Oracle.advanced-features.instance-store.Enable)
+ [配置 RDS for Oracle 实例存储](CHAP_Oracle.advanced-features.instance-store.configuring.md)
+ [在 Oracle 只读副本上使用实例存储](CHAP_Oracle.advanced-features.instance-store.replicas.md)
+ [在实例存储和 Amazon EBS 上配置临时表空间组](CHAP_Oracle.advanced-features.instance-store.temp-ebs.md)
+ [删除 RDS for Oracle 实例存储](#CHAP_Oracle.advanced-features.instance-store.Disable)

## RDS for Oracle 实例存储的概述
<a name="CHAP_Oracle.advanced-features.instance-store.overview"></a>

*实例存储*为 RDS for Oracle 数据库实例提供临时性块级存储。您可以使用实例存储来临时存储经常变化的信息。

实例存储基于物理附加到主机的非易失性存储规范（NVMe）设备。此存储针对低延迟、随机 I/O 性能和连续读取吞吐量进行了优化。

实例存储的大小因数据库实例类型而异。有关实例存储的更多信息，请参阅《适用于 Linux 实例的 Amazon Elastic Compute Cloud 用户指南》**中的 [Amazon EC2 实例存储](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html)。

**Topics**
+ [RDS for Oracle 实例存储中的数据类型](#CHAP_Oracle.advanced-features.instance-store.overview.uses)
+ [RDS for Oracle 实例存储的优点](#CHAP_Oracle.advanced-features.instance-store.overview.benefits)
+ [RDS for Oracle 实例存储支持的实例类](#CHAP_Oracle.advanced-features.instance-store.overview.instance-classes)
+ [RDS for Oracle 实例存储支持的引擎版本](#CHAP_Oracle.advanced-features.instance-store.overview.db-versions)
+ [RDS for Oracle 实例存储支持的 AWS 区域](#CHAP_Oracle.advanced-features.instance-store.overview.regions)
+ [RDS for Oracle 实例存储的成本](#CHAP_Oracle.advanced-features.instance-store.overview.cost)

### RDS for Oracle 实例存储中的数据类型
<a name="CHAP_Oracle.advanced-features.instance-store.overview.uses"></a>

您可以将以下类型的 RDS for Oracle 临时数据放入实例存储中：

临时表空间  
Oracle 数据库使用临时表空间来存储不适合放入内存中的中间查询结果。较大的查询会生成大量的中间数据，这些数据需要进行临时缓存，但不需要持久保留。尤其是，临时表空间可用于排序、哈希聚合和联接。如果您的 RDS for Oracle 数据库实例使用企业版或标准版 2，则可以将临时表空间放在实例存储中。

闪存缓存  
闪存缓存可提高传统路径中单块随机读取的性能。最佳做法是调整缓存的大小以容纳大部分活动的数据集。如果 RDS for Oracle 数据库实例使用企业版，则可以将闪存缓存放在实例存储中。

原定设置情况下，将实例存储配置用于临时表空间而非闪存缓存。您无法将 Oracle 数据文件和数据库日志文件放在实例存储中。

### RDS for Oracle 实例存储的优点
<a name="CHAP_Oracle.advanced-features.instance-store.overview.benefits"></a>

您可以考虑使用实例存储来存储可以承受丢失的临时文件和缓存。如果您想提高数据库性能，或者，如果增加的工作负载导致 Amazon EBS 存储出现性能问题，请考虑扩展到支持实例存储的实例类。

通过将临时表空间和闪存缓存放在实例存储上，您可以获得以下优势：
+ 降低读取延迟
+ 提高吞吐量
+ 减少了 Amazon EBS 卷上的负载
+ 由于减少了 Amazon EBS 负载，因此降低了存储和快照成本
+ 减少了预调配高 IOPS 的需要，可能会降低您的总体成本

 通过将临时表空间放在实例存储上，您可以立即提高使用临时空间的查询的性能。当您将闪存缓存放在实例存储上时，缓存块读取的延迟通常比 Amazon EBS 读取的延迟要低得多。闪存缓存需要“预热”，然后才能提供性能优势。缓存会自行预热，因为当块从数据库缓冲区缓存中过期时，数据库会将块写入闪存缓存。

**注意**  
在某些情况下，闪存缓存会因为缓存管理而导致性能开销。在生产环境中启用闪存缓存之前，我们建议您分析工作负载并在测试环境中测试缓存。

### RDS for Oracle 实例存储支持的实例类
<a name="CHAP_Oracle.advanced-features.instance-store.overview.instance-classes"></a>

Amazon RDS 对于以下数据库实例类支持实例存储：
+ db.m5d
+ db.m6id
+ db.r5d
+ db.r6id
+ db.x2idn
+ db.x2iedn

RDS for Oracle 仅对于 BYOL 许可模式支持上述数据库实例类。有关更多信息，请参阅[支持的 RDS for Oracle 数据库实例类](Oracle.Concepts.InstanceClasses.md#Oracle.Concepts.InstanceClasses.Supported)和[EE 和 SE2 自带许可（BYOL）](Oracle.Concepts.Licensing.md#Oracle.Concepts.Licensing.BYOL)。

要查看受支持的数据库实例类型的总实例存储量，请在 AWS CLI 中运行以下命令。

**Example**  

```
aws ec2 describe-instance-types \
  --filters "Name=instance-type,Values=*5d.*large*,*6id.*large*" \
  --query "InstanceTypes[?contains(InstanceType,'m5d')||contains(InstanceType,'r5d')||contains(InstanceType,'m6id')||contains(InstanceType,'r6id')][InstanceType, InstanceStorageInfo.TotalSizeInGB]" \
  --output table
```

前面的命令返回实例存储的原始设备大小。RDS for Oracle 使用此空间的一小部分进行配置。实例存储中可用于临时表空间或闪存缓存的空间稍小。

### RDS for Oracle 实例存储支持的引擎版本
<a name="CHAP_Oracle.advanced-features.instance-store.overview.db-versions"></a>

以下 RDS for Oracle 数据库引擎版本支持实例存储：
+ 21.0.0.0.ru-2022-01.rur-2022-01.r1 或更高的 Oracle Database 21c 版本
+ 19.0.0.0.ru-2021-10.rur-2021-10.r1 或更高的 Oracle Database 19c 版本

### RDS for Oracle 实例存储支持的 AWS 区域
<a name="CHAP_Oracle.advanced-features.instance-store.overview.regions"></a>

在支持其中一种或多种实例类型的所有 AWS 区域中均可使用实例存储。有关 db.m5d 和 db.r5d 实例类的更多信息，请参阅 [数据库实例类](Concepts.DBInstanceClass.md)。有关 Amazon RDS for Oracle 支持的实例类的更多信息，请参阅 [RDS for Oracle 数据库实例类](Oracle.Concepts.InstanceClasses.md)。

### RDS for Oracle 实例存储的成本
<a name="CHAP_Oracle.advanced-features.instance-store.overview.cost"></a>

实例存储的成本计入已开启实例存储的实例的成本中。对 RDS for Oracle 数据库实例启用实例存储不会产生额外费用。有关已开启实例存储的实例的更多信息，请参阅 [RDS for Oracle 实例存储支持的实例类](#CHAP_Oracle.advanced-features.instance-store.overview.instance-classes)。

## 开启 RDS for Oracle 实例存储
<a name="CHAP_Oracle.advanced-features.instance-store.Enable"></a>

要为 RDS for Oracle 临时数据开启实例存储，请执行下列操作之一：
+ 使用支持的实例类创建 RDS for Oracle 数据库实例。有关更多信息，请参阅 [创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。
+ 修改现有 RDS for Oracle 数据库实例以使用支持的实例类。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

# 配置 RDS for Oracle 实例存储
<a name="CHAP_Oracle.advanced-features.instance-store.configuring"></a>

原定设置情况下，100% 的实例存储空间分配给临时表空间。要将实例存储配置为向闪存缓存和临时表空间分配空间，请在实例的参数组中设置以下参数：

**db\$1flash\$1cache\$1size=\$1DBInstanceStore\$1\$10,2,4,6,8,10\$1/10\$1**  
此参数指定为闪存缓存分配的存储空间量。此参数仅对 Oracle Database 企业版有效。默认值为 `{DBInstanceStore*0/10}`。如果您为 `db_flash_cache_size` 设置非零值，则 RDS for Oracle 实例将在您重新启动实例后启用闪存缓存。

**rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$1\$10,2,4,6,8,10\$1/10\$1**  
此参数指定为临时表空间分配的存储空间量。默认值为 `{DBInstanceStore*10/10}`。对于 Oracle Database 企业版，此参数是可修改的，而对于标准版 2 为只读的。如果您为 `rds.instance_store_temp_size` 设置非零值，Amazon RDS 将在实例存储中为临时表空间分配空间。  
您可以为不使用实例存储的数据库实例设置 `db_flash_cache_size` 和 `rds.instance_store_temp_size` 参数。在这种情况下，这两个设置的计算结果均为 `0`，这会关闭该功能。在这种情况下，您可以为不同的实例大小和不使用实例存储的实例使用相同的参数组。如果您修改这些参数，则确保重启关联的实例，以使更改生效。  
如果您为临时表空间分配空间，Amazon RDS 不会自动创建临时表空间。要了解如何在实例存储上创建临时表空间，请参阅 [在实例存储上创建临时表空间](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store)。

上述参数的组合值不得超过 10/10 或 100%。下表说明了有效和无效的参数设置。


| db\$1flash\$1cache\$1size 设置 | rds.instance\$1store\$1temp\$1size 设置 | 说明 | 
| --- | --- | --- | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$10/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$110/10\$1  |  这是适用于所有 Oracle Database 版本的有效配置。Amazon RDS 将 100% 的实例存储空间分配给临时表空间。这是默认模式。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$110/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$10/10\$1  |  这是仅适用于 Oracle Database 企业版的有效配置。Amazon RDS 将 100% 的实例存储空间分配给闪存缓存。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$12/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$18/10\$1  |  这是仅适用于 Oracle Database 企业版的有效配置。Amazon RDS 将 20% 的实例存储空间分配给闪存缓存，而将 80% 的实例存储空间分配给临时表空间。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$16/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$14/10\$1  |  这是仅适用于 Oracle Database 企业版的有效配置。Amazon RDS 将 60% 的实例存储空间分配给闪存缓存，而将 40% 的实例存储空间分配给临时表空间。  | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$12/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$14/10\$1  | 这是仅适用于 Oracle Database 企业版的有效配置。Amazon RDS 将 20% 的实例存储空间分配给闪存缓存，而将 40% 的实例存储空间分配给临时表空间。 | 
|  db\$1flash\$1cache\$1size=\$1DBInstanceStore\$18/10\$1  |  rds.instance\$1store\$1temp\$1size=\$1DBInstanceStore\$18/10\$1  |  这是无效的配置，因为实例存储空间的总百分比超过 100%。在这种情况下，Amazon RDS 会使此尝试失败。  | 

## 更改数据库实例类型时的注意事项
<a name="CHAP_Oracle.advanced-features.instance-store.configuring.modifying"></a>

如果您更改数据库实例类型，则这可能会影响实例存储上闪存缓存或临时表空间的配置。考虑以下修改及其影响：

**您可以纵向扩展或缩减支持实例存储的数据库实例。**  
以下各值根据实例存储的新大小成比例增加或减少：  
+ 闪存缓存的新大小。
+ 分配给驻留在实例存储中的临时表空间的空间。
例如，db.m5d.4xlarge 实例上的设置 `db_flash_cache_size={DBInstanceStore*6/10}` 提供了大约 340GB 的闪存缓存空间。如果您将实例类型纵向扩展到 db.m5d.8xlarge，则闪存缓存空间将增加到大约 680GB。

**您将不使用实例存储的数据库实例修改为确实使用实例存储的实例。**  
如果将 `db_flash_cache_size` 设置为大于 `0` 的值，则配置闪存缓存。如果将 `rds.instance_store_temp_size` 设置为大于 `0` 的值，则会分配实例存储空间供临时表空间使用。RDS for Oracle 不会自动将临时文件移动到实例存储。有关使用分配的空间的信息，请参阅 [在实例存储上创建临时表空间](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store) 或 [在只读副本上向实例存储中添加临时文件](Appendix.Oracle.CommonDBATasks.using-tempfiles.md#Appendix.Oracle.CommonDBATasks.adding-tempfile-replica)。

**您将使用实例存储的数据库实例修改为不使用实例存储的实例。**  
在这种情况下，RDS for Oracle 会删除闪存缓存。RDS 在 Amazon EBS 卷上重新创建当前位于实例存储中的临时文件。新临时文件的最大大小是 `rds.instance_store_temp_size` 参数以前的大小。

# 在 Oracle 只读副本上使用实例存储
<a name="CHAP_Oracle.advanced-features.instance-store.replicas"></a>

只读副本在实例存储上支持闪存缓存和临时表空间。虽然闪存缓存的工作方式与在主数据库实例上的工作方式相同，但请注意对于临时表空间的以下区别：
+ 您无法在只读副本上创建临时表空间。如果您在主实例上创建新的临时表空间，则 RDS for Oracle 会在没有临时文件的情况下复制表空间信息。要添加新的临时文件，请使用下列任一方法：
  + 适用 Amazon RDS 过程 `rdsadmin.rdsadmin_util.add_inst_store_tempfile`。RDS for Oracle 在只读副本上的实例存储中创建一个临时文件，并将其添加到指定的临时表空间中。
  + 运行 `ALTER TABLESPACE … ADD TEMPFILE` 命令。RDS for Oracle 将临时文件放在 Amazon EBS 存储上。
**注意**  
主数据库实例和只读副本上的临时文件大小和存储类型可能不同。
+ 您只能在主数据库实例上管理原定设置临时表空间设置。RDS for Oracle 会将该设置复制到所有只读副本。
+ 您只能在主数据库实例上配置临时表空间组。RDS for Oracle 会将该设置复制到所有只读副本。

# 在实例存储和 Amazon EBS 上配置临时表空间组
<a name="CHAP_Oracle.advanced-features.instance-store.temp-ebs"></a>

您可以将临时表空间组配置为包括实例存储和 Amazon EBS 上的临时表空间。当您想要的临时存储空间超过 `rds.instance_store_temp_size` 的最大设置所允许的空间时，此方法很有用。

当您在实例存储和 Amazon EBS 上配置临时表空间组时，这两个表空间的性能特征显著不同。Oracle 数据库根据内部算法，选择表空间来处理查询。因此，类似查询的性能可能会有所不同。

通常，您在实例存储中创建临时表空间，如下所示：

1. 在实例存储中创建临时表空间。

1. 将新的表空间设置为数据库原定设置临时表空间。

如果实例存储中的表空间大小不足，则可以按如下方式创建额外的临时存储：

1. 将实例存储中的临时表空间分配给临时表空间组。

1. 如果临时表空间不存在，请在 Amazon EBS 中创建一个新的临时表空间。

1. 将 Amazon EBS 中的临时表空间分配给包含实例存储表空间的同一个表空间组。

1. 将表空间组设置为原定设置临时表空间。

以下示例假设实例存储中临时表空间的大小不符合您的应用程序要求。该示例在实例存储中创建临时表空间 `temp_in_inst_store`，将其分配给表空间组 `temp_group`，将名为 `temp_in_ebs` 的现有 Amazon EBS 表空间添加到该组中，并将该组设置为原定设置临时表空间。

```
SQL> EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace('temp_in_inst_store');

PL/SQL procedure successfully completed.

SQL> ALTER TABLESPACE temp_in_inst_store TABLESPACE GROUP temp_group;

Tablespace altered.

SQL> ALTER TABLESPACE temp_in_ebs TABLESPACE GROUP temp_group;

Tablespace altered.

SQL> EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace('temp_group');

PL/SQL procedure successfully completed.

SQL> SELECT * FROM DBA_TABLESPACE_GROUPS;

GROUP_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
TEMP_GROUP                     TEMP_IN_EBS
TEMP_GROUP                     TEMP_IN_INST_STORE

SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

PROPERTY_VALUE
--------------
TEMP_GROUP
```

## 删除 RDS for Oracle 实例存储
<a name="CHAP_Oracle.advanced-features.instance-store.Disable"></a>

要删除实例存储，请修改 RDS for Oracle 数据库实例以使用不支持实例存储的实例类型，如 db.m5 或 db.r5。

# 为 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)。

# 在 RDS for Oracle 中开启扩展数据类型
<a name="Oracle.Concepts.ExtendedDataTypes"></a>

Amazon RDS for Oracle 支持扩展数据类型。对于扩展数据类型，`VARCHAR2`、`NVARCHAR2` 和 `RAW` 数据类型的最大大小为 32767 字节。要使用扩展数据类型，请将 `MAX_STRING_SIZE` 参数设置为 `EXTENDED`。有关更多信息，请参阅 Oracle 文档中的[扩展数据类型](https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF55623)。

如果您不希望使用扩展数据类型，请将 `MAX_STRING_SIZE` 参数设置为 `STANDARD`（默认值）。在这种情况下，`VARCHAR2` 和 `NVARCHAR2` 数据类型的大小限制为 4,000 字节，RAW 数据类型的大小限制为 2,000 字节。

您可以在新的或现有的数据库实例上开启扩展数据类型。对于新的数据库实例，在开启扩展数据类型时，数据库实例的创建时间通常较长。对于现有的数据库实例，数据库实例在转换过程中不可用。

## 扩展数据类型的注意事项
<a name="Oracle.Concepts.ExtendedDataTypes.considerations"></a>

为数据库实例启用扩展数据类型时，请考虑以下几点：
+ 在为新的或现有的数据库实例开启扩展数据类型时，必须重启实例才能使更改生效。
+ 在开启扩展数据类型之后，无法将数据库实例改回为使用数据类型的标准大小。如果将 `MAX_STRING_SIZE` 参数重新设置为 `STANDARD`，则会导致 `incompatible-parameters` 状态。
+ 在还原使用扩展数据类型的数据库实例时，您必须指定一个参数组并将 `MAX_STRING_SIZE` 参数设置为 `EXTENDED`。在还原期间，如果指定默认参数组或任何其他参数组并将 `MAX_STRING_SIZE` 设置为 `STANDARD`，则会导致 `incompatible-parameters` 状态。
+ 如果由于 `incompatible-parameters` 设置而导致数据库实例状态为 `MAX_STRING_SIZE`，数据库实例将保持不可用状态，直到您将 `MAX_STRING_SIZE` 参数设置为 `EXTENDED` 并重新引导数据库实例。

## 为新数据库实例开启扩展数据类型
<a name="Oracle.Concepts.ExtendedDataTypes.CreateDBInstance"></a>

当您创建将 `MAX_STRING_SIZE` 设置为 `EXTENDED` 的数据库实例时，该实例将显示 `MAX_STRING_SIZE` 设置为默认 `STANDARD`。重启实例以启用更改。

**为新数据库实例开启扩展数据类型**

1. 在参数组中将 `MAX_STRING_SIZE` 参数设置为 `EXTENDED`。

   要设置该参数，您可以创建新的参数组或修改现有的参数组。

   有关更多信息，请参阅 [Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。

1. 创建新的 RDS for Oracle 数据库实例。

   有关更多信息，请参阅 [创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。

1. 将其 `MAX_STRING_SIZE` 设置为 `EXTENDED` 的参数组与数据库实例相关联。

   有关更多信息，请参阅 [创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)。

1. 重新引导数据库实例以使参数更改生效。

   有关更多信息，请参阅 [重启数据库实例](USER_RebootInstance.md)。

## 为现有数据库实例开启扩展数据类型
<a name="Oracle.Concepts.ExtendedDataTypes.ModifyDBInstance"></a>

在修改数据库实例以开启扩展数据类型时，RDS 将转换数据库中的数据以使用扩展的大小。参数更改后，下次重启数据库时会发生转换和停机。数据库实例在转换期间不可用。

转换数据所需的时间取决于数据库实例类、数据库大小和最后一个数据库快照的时间。为减少停机时间，请考虑就在重启前拍摄快照。这缩短了转换工作流程期间执行的备份的时间。

**注意**  
在开启扩展数据类型后，您无法在转换期间执行时间点还原以还原到某个时间。您可以还原到紧靠转换前或转换后的时间。

**为现有数据库实例开启扩展数据类型**

1. 拍摄数据库的快照。

   如果在数据库中具有无效的对象，Amazon RDS 将尝试重新编译这些对象。如果 Amazon RDS 无法重新编译无效的对象，转换为扩展数据类型可能会失败。如果在转换过程中出现问题，您可以使用快照还原数据库。请始终在转换之前检查无效的对象，并修复或删除这些无效的对象。对于生产数据库，我们建议先在数据库实例的副本上测试转换过程。

   有关更多信息，请参阅“[为 Amazon RDS 的单可用区数据库实例创建数据库快照](USER_CreateSnapshot.md)”。

1. 在参数组中将 `MAX_STRING_SIZE` 参数设置为 `EXTENDED`。

   要设置该参数，您可以创建新的参数组或修改现有的参数组。

   有关更多信息，请参阅“[Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)”。

1. 修改数据库实例以将其与 `MAX_STRING_SIZE` 设置为 `EXTENDED` 的参数组相关联。

   有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

1. 重新引导数据库实例以使参数更改生效。

   有关更多信息，请参阅“[重启数据库实例](USER_RebootInstance.md)”。