

 本白皮书仅供历史参考。有些内容可能已过时，有些链接可能不可用。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 针对安全性和性能进行架构设计
<a name="architecting-for-security-and-performance"></a>

 无论您选择在 Amazon RDS 上还是在 Amazon 上运行 Oracle 数据库 EC2，优化基础设施的每个组件都将增强安全性、性能和可靠性。以下各节讨论了在 Oracle 数据库实现中优化网络配置、实例类型和数据库存储的最佳实践。 AWS 

**Topics**
+ [网络配置](network-configuration.md)
+ [亚马逊 EC2 实例类型](amazon-ec2-instance-type.md)
+ [数据库存储](database-storage.md)

# 网络配置
<a name="network-configuration"></a>

 借助 Amazon Virtual Private Cloud（亚马逊 VPC） AWS 云 ，您可以为自己的账户配置一个逻辑隔离的部分。您可以完全控制自己的虚拟网络环境，包括选择自己的 IP 地址范围、创建子网、安全设置以及配置路由表和网络网关。

 子*网*是指您的 Amazon VPC 中的 IP 地址范围。您可以将 AWS 资源启动到您选择的子网中。对必须连接互联网的资源使用公有子网，而对将不会连接到互联网的资源使用私有子网。

 要保护每个子网中的 AWS 资源，您可以使用多层安全措施，包括安全组和网络访问控制列表（ACLs）。

 下表描述了安全组和网络之间的基本区别 ACLs。


|  **安全组**  |  **网络 ACL**  | 
| --- | --- | 
|  在实例级别操作 (第一防御层)  |  在子网级别操作 (第二防御层)  | 
|  仅支持允许规则  |  支持允许规则和拒绝规则  | 
|  Stateful：无论规则如何，都会自动允许返回流量  |  无状态：返回数据流必须被规则明确允许  | 
|  在决定是否允许流量前评估所有规则  |  在决定是否允许流量时按照数字顺序处理所有规则  | 
|  只有在启动实例的同时指定安全组、或稍后将安全组与实例关联的情况下，操作才会被应用到实例  |  自动应用到关联子网内的所有实例 (备份防御层，因此您便不需要依靠别人为您指定安全组)  | 

 

 Amazon VPC 提供隔离、额外的安全性，能够将 Amazon EC2 实例分成子网，并允许使用私有 IP 地址。所有这些在数据库实现中都很重要。

将 Oracle 数据库实例部署在私有子网中，仅允许 Amazon VPC 内的应用程序服务器或 Amazon VPC 内的堡垒主机访问该数据库实例。

创建适当的安全组，仅允许通过指定端口访问特定 IP 地址。无论您使用的是亚马逊 RDS 还是亚马逊，这些建议都适用于 Oracle 数据库 EC2。

![\[亚马逊 VPC 私有子网中的 Oracle 数据库\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/oracle-database-aws-best-practices/images/oracle-db-private-subnet.png)


 

 亚马逊 VPC 私有子网中的 Oracle 数据库 

# 亚马逊 EC2 实例类型
<a name="amazon-ec2-instance-type"></a>

 AWS 有大量可用的 Amazon EC2 实例类型，因此您可以选择最适合您的工作负载的实例类型。但是，并非所有可用的实例类型都最适合运行 Oracle 数据库。

 如果您将 Amazon RDS 用于 Oracle 数据库，请根据最佳实践 AWS 筛选出一些实例类型，并在 T 级、M 级和 R 级实例中为您提供各种选项。AWS 建议您为任何企业数据库工作负载选择基于 db.m 或基于 r 的 Amazon RDS 实例。R5 实例非常适合内存密集型应用程序，例如高性能数据库。

有关 RDS 实例的最新信息，请参阅适用于 [Oracle 数据库的 Amazon RDS 定价](https://aws.amazon.com/rds/oracle/pricing/)。您应根据数据库工作负载和可用的 Oracle 数据库许可证来选择 Amazon RDS 实例类型。

 如果您在 Amazon 上运行自行管理的数据库 EC2，那么亚马逊 EC2 实例类型还有更多选择。这通常是用户选择在亚马逊上运行 Oracle 数据库 EC2 而不是使用 Amazon RDS 的原因之一。

非常小的实例类型不适合，因为 Oracle 数据库在 CPU 使用率方面是资源密集型的。内存占用量较大的实例通过提供更好的缓存和更大的系统全局区域 (SGA) 来帮助提高数据库性能。 AWS 建议您选择具有良好内存和 CPU 平衡的实例。

选择与您计划使用的 Oracle 数据库许可证和计划实施的架构相匹配的实例类型。要了解最适合您的业务需求的架构，请参阅白皮书《[Amazon EC2 Oracle 数据库高级架构》](https://d1.awsstatic.com/whitepapers/aws-advanced-architectures-for-oracle-db-on-ec2.pdf)。

 Oracle 数据库在 read/write 操作中大量使用磁盘存储，因此 AWS 强烈建议您仅使用针对亚马逊弹性块存储 (Amazon EBS) Elastic Block Store 进行了优化的实例。亚马逊 EBS 优化实例在亚马逊和 EC2 亚马逊 EBS 之间提供专用吞吐量。存储子系统的带宽和吞吐量对于良好的数据库性能至关重要。选择网络性能更高的实例以获得更好的数据库性能。

 以下实例系列最适合在亚马逊上运行 Oracle 数据库 EC2。


|  **实例系列**  |  **功能**  | 
| --- | --- | 
|  M 家族  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/oracle-database-aws-best-practices/amazon-ec2-instance-type.html)  | 
|  X 家族  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/oracle-database-aws-best-practices/amazon-ec2-instance-type.html)    | 
|  R 家族  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/oracle-database-aws-best-practices/amazon-ec2-instance-type.html)    | 
|  我家人  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/oracle-database-aws-best-practices/amazon-ec2-instance-type.html)    | 
|  z1d 家族  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/oracle-database-aws-best-practices/amazon-ec2-instance-type.html)  | 

 

# 数据库存储
<a name="database-storage"></a>

 大多数用户通常使用 Amazon EBS 进行数据库存储。对于一些非常高性能的架构，您可以使用实例存储 SSDs，但应使用 Amazon EBS 存储对其进行扩展，以实现可靠的持久性。

 为了获得高且一致的 IOPS 和数据库性能，AWS 强烈建议使用通用型 (GP2) 卷或预配置 IOPS (PIOPS) 卷。 GP2 而且 PIOPS 卷可用于亚马逊 EC2 和亚马逊 RDS。请参阅 [Amazon RDS 数据库实例存储](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)，了解两种 GP2 卷类型和 PIOPS 卷类型对每个卷的 IOPS 的最新限制。 GP2 卷在价格和性能之间取得了出色的平衡，可满足大多数数据库需求。当您的数据库需要的 IOPS 高于所 GP2 能提供的 IOPS 时，PIOPS 卷是正确的选择。

 对于 PIOPS 卷，您可以在创建卷时指定 IOPS 速率，Amazon EBS 在给定年份的 99.9% 的时间内提供预配置 IOPS 性能的 10% 以内。预配置 IOPS 与请求的卷大小的比率最多可以为 30。例如，要获得 3,000 IOPS，您的卷大小应至少为 100 GB。

 与 PIOPS 卷类似， GP2 卷也是基于 SSD 的，但是您从卷中获得的 IOPS 可以从基准 IOPS 到每个 GP2 卷的最大可突发 3,000 IOPS 不等。这对于大多数数据库工作负载来说效果非常好，因为数据库所需的 IOPS 性能在一段时间内会根据负载大小和正在执行的查询数量而变化多次。

 通用型 (SSD) 卷性能受卷大小控制，卷大小决定了卷的基本性能级别及其积累积积分 I/O 的速度。卷越大，基础性能等级越高，积累积 I/O 积分的速度也更快。

 I/O 积分表示当需要超过基本性能 I/O 时，您的通用型 (SSD) 卷可以用来突发大量可用带宽。您的卷获得的 I/O 积分越多，它突破基本性能水平的时间就越长，在需要更高性能时性能也越好。

 吞吐量优化的 HDD 卷 (st1) 提供低成本的 HDD 卷，专为需要较少 IOPS 但需要高吞吐量的密集型工作负载而设计。用于数据仓库和数据分析目的的 Oracle 数据库可以利用 st1 卷。

任何需要高吞吐量的日志处理或数据暂存区域（例如 Oracle 外部表或外部 BLOB 存储）都可以利用 st1 卷。吞吐量优化 (st1) 卷每个卷最多可以处理 500 个 IOPS。

 Cold HDD 卷 (sc1) 适用于处理遗留系统，这些系统会随身携带以供偶尔参考或存档。这些系统的访问频率较低，每天对卷进行几次扫描。

 一个好的方法是估算数据库持续需要的 IOPS 量，然后分配足够的 GP2 存储空间来获得这么多 IOPS。周期性峰值所需的任何额外 IOPS 都应根据可用积分在突发性能中得到满足。

有关可用于确定 Oracle 数据库的 IOPS 需求的估算方法的信息，请参阅《确定 AWS 上的 Orac [le 数据库的 IOPS 需求》](https://docs.aws.amazon.com/whitepapers/latest/determining-iops-needs-oracle-db-on-aws/determining-iops-needs-oracle-db-on-aws.html)白皮书。

 卷的突增持续时间取决于卷的大小、所需的突增 IOPS 以及突增开始时的积分余额。如果您发现您的卷性能通常仅限于基本级别（由于 I/O 积分余额为空），则应考虑使用更大的通用型 (SSD) 卷（基本性能级别更高），或者对于需要持续 IOPS 性能超过 10,000 IOPS 的工作负载，切换到预配置 IOPS (SSD) 卷。有关 GP2 卷的更多详细信息，请参阅 [Amazon EBS 卷类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html)。

 对于 Amazon RDS，通用型 (SSD) 存储可提供每预配置 GB 3 IOPS 的稳定基准，并能够突增至 3,000 IOPS。如果您已经在 Amazon RDS 中使用磁性存储，则可以转换为通用型 (SSD) 存储，但这样做会对可用性造成短暂影响。使用预配置 IOPS，您最多可以预配置当前的最大存储限制和每个数据库实例的最大 IOPS。

根据您的数据库工作负载、实例类型和数据库引擎，您实际实现的 IOPS 可能与您的预配置量有所不同。有关更多信息，请参阅 [*Amazon RDS 用户指南中的影响已实现 IOPS* 速率的因素](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)。

 对于 Amazon 上的 Oracle 数据库 EC2，将多个卷分成条带以获得更高的 IOPS 和更大的容量。您可以单独使用多个 Amazon EBS 卷来存储不同的数据文件，但是将它们分散在一起可以实现更好的平衡和可扩展性。

Oracle 自动存储管理 (ASM) 可用于条带化。将数据文件、日志文件和二进制文件保存在单独的 Amazon EBS 卷上，并定期拍摄日志文件卷的快照。选择具有本地 SSD 存储的实例类型允许您使用智能闪存缓存（如果操作系统是 Oracle Linux）以及使用本地存储来存储临时文件和表空间，从而提高数据库性能。

 对于 AWS 上的 Oracle VMware 云数据库，vSAN 提供了跨裸机主机分条的必要虚拟化存储。vSAN 虚拟化存储功能可以在 Oracle RAC 中用于高性能共享存储。

为 Oracle RAC 创建的 VMDK（虚拟机磁盘）文件必须配置为急于零的厚度，并启用多写入器标志。 VMware 已在 AWS 上发布了一份针对 VMware 云上的 Oracle 数据库的[详细性能研究](https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/whitepaper/solutions/oracle/vmw-oracle-performance-on-the-vmware-cloud-on-aws.pdf)。