

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

# 在 Oracle 数据库中备份@AWS
<a name="managing-backups"></a>

Oracle Database@AWS 提供了多种备份选项来保护您的 Oracle 数据库。您可以使用与 Amazon S3 无缝集成的 Oracle 托管备份，也可以使用 Oracle 恢复管理器 (RMAN) 创建自己的用户管理备份。

## 甲骨文管理了对亚马逊 S3 的备份
<a name="s3-managed-backups-how-it-works"></a>

创建 ODB 网络时，Oracle Database@AWS 会自动为 Oracle 托管的 Amazon S3 备份配置网络访问权限。OCI 配置必要的 DNS 条目和安全列表。这些配置允许 OCI 虚拟云网络 (VCN) 和 Amazon S3 之间的流量。ODB 网络不启用或控制自动备份。

Oracle 托管的备份完全由 OCI 管理。创建 Oracle Exadata 数据库时，您可以通过在 OCI 控制台中选择**启用自动备份**来启用自动备份。选择以下备份目标之一：
+ **Amazon S3**
+ **OCI 对象存储**
+ **自主恢复服务**

有关更多信息，请参阅 OCI 文档中的 [Backup Exadata 数据库](https://docs.oracle.com/en-us/iaas/Content/database-at-aws-exadata-awscr/awscr-create-exadata-database.html)。

## 在 Oracle 数据库中由用户管理的 Amazon S3 备份@AWS
<a name="manual-backups-section"></a>

借助 Oracle Database@AWS，您可以使用专用基础架构上的 Exadata 数据库服务创建用户管理的数据库备份。您可以使用 Oracle 恢复管理器 (RMAN) 备份数据并将其存储在 Amazon S3 存储桶中。您可以完全控制备份计划、保留策略和存储成本，同时保持 Oracle Database AWS@ 的托管服务优势。

**注意**  
Oracle Database@AWS 不支持在专用基础设施上对自治数据库进行用户管理的备份。

用户管理的备份与 Oracle Databas AWS e@ 提供的 AWS 托管备份解决方案相得益彰。您可以使用手动备份来满足合规性要求、跨区域灾难恢复或与现有备份管理工作流程的集成。

您可以使用以下用户管理的备份技术：

**Oracle Secure Backup**  
以最佳性能将备份直接传输到 Amazon S3。

**Storage Gateway**  
使用 Storage Gateway 进行使用 NFS 共享的基于文件的备份。

**S3 挂载点**  
使用文件客户端将 Amazon S3 存储桶挂载为本地文件系统。

### 在 Oracle 数据库中由用户管理的 Amazon S3 备份的先决条件@AWS
<a name="manual-backups-prerequisites"></a>

在将 Oracle Exadata 数据库备份到 Amazon S3 之前，请执行以下操作：

1. 允许从您的 ODB 网络直接访问 Amazon S3。

1. 在 Oracle Database@ 和 Amazon S3 之间配置网络连接AWS 和路由。

#### 允许从您的 ODB 网络访问 Amazon S3
<a name="enabling-s3-customer-access"></a>

要将数据库手动备份到 Amazon S3，请启用从 ODB 网络直接访问 S3。该技术允许您的数据库访问Amazon S3以满足您的业务需求，例如数据导入/导出或用户管理的备份。您可以完全控制备份存储的目标位置，并且可以使用 VPC Lattice 使用策略来限制对 Amazon S3 的访问。

默认情况下，不启用从您的 ODB 网络直接访问 Amazon S3。您可以在创建或修改 ODB 网络时启用 S3 访问权限。

##### 控制台
<a name="S3Access.CON"></a>

**允许从您的 ODB 网络直接访问 Amazon S3**

1. 打开 Oracle Database@AWS 控制台，网址为。[https://console.aws.amazon.com/odb/](https://console.aws.amazon.com/odb/)

1. 在导航窗格中，选择 **ODB 网络**。

1. 选择您要为其启用 Amazon S3 访问权限的 ODB 网络。

1. 选择 **Modify**(修改)。

1. 选择 **Amazon S3**。

1. （可选）配置 Amazon S3 策略文档以控制对 Amazon S3 的访问权限。如果您未指定策略，则默认策略会授予完全访问权限。

1. 选择 “**继续**”，然后选择 “**修改”**。

##### AWS CLI
<a name="S3Access.CLI"></a>

要允许从 ODB 网络直接访问 Amazon S3，请使用带`s3-access`参数的`update-odb-network`命令：

```
aws odb update-odb-network \
  --odb-network-id odb-network-id \
  --s3-access ENABLED
```

要配置 Amazon S3 策略文档，请使用以下`--s3-policy-document`参数：

```
aws odb update-odb-network \
  --odb-network-id odb-network-id \
  --s3-policy-document file://s3-policy.json
```

启用 Amazon S3 访问后，您可以使用区域 DNS `s3.region.amazonaws.com` 从您的 ODB 网络访问 Amazon S3。默认情况下，OCI 会配置此 DNS 名称。要使用自定义 DNS 名称，请修改您的 VCN DNS 以确保自定义 DNS 解析为服务网络终端节点的 IP 地址。

#### 在 Oracle Database@AWS 和 Amazon S3 之间配置网络连接
<a name="managing-backups-routing"></a>

要允许用户管理备份到 Amazon S3，您的虚拟机必须能够访问 S3 Amazon VPC 终端节点。在 OCI 控制台中，您可以编辑网络安全组 (NSG) 中的安全规则以控制入口和出口流量。对于用户管理的备份，流量通过客户端子网而不是备份子网流动。在以下步骤中，您将更新客户端子网以添加 VPC 终端节点 IP 地址的出口规则。 NSGs 

**允许虚拟机访问 Amazon S3 终端节点**

1. 打开 Oracle Database@AWS 控制台，网址为。[https://console.aws.amazon.com/odb/](https://console.aws.amazon.com/odb/)

1. 选择 **ODB 网络**。

1. 选择 ODB 网络的名称。

1. 选择 **OCI 资源**。

1. 选择 “**服务集成” 选项卡。**

1. 在 **Amazon S3** 下，请注意以下信息：
   + 亚马逊 VPC S3 终端节点 IPv4 的地址。您稍后需要此信息。例如，IP 地址可能是`192.168.12.223`。
   + 亚马逊 VPC S3 终端节点的域名。您稍后需要此信息。例如，域名可能是`s3.us-east-1.amazonaws.com`。

1. 在左侧导航窗格中，选择 Exadata 虚拟机集群，然后选择您的虚拟机集群名称。

1. 在页面顶部，选择 “**摘要**” 选项卡。

1. 选择**虚拟机**，然后选择虚拟机的名称。

1. 注意 D **NS 名称**中的值。这是您在使用连接虚拟机时指定的主机名`ssh`。

1. 在右上角，选择**在 OCI 中管理**。这将打开 OCI 控制台。

1. 在**虚拟云网络**列表页上，选择包含 ODB 网络客户端子网 () 的网络安全组 (NSG) 的 VCN。`exa_static_nsg`有关更多信息，请参阅 OCI 文档中的[管理 NSG 的安全规则](https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/manage-nsg-security-rules.htm)。

1. 在详细信息页面上，根据您看到的选项执行以下操作之一：
   + 在 “**安全**” 选项卡上，转到 “**网络安全组**”。
   + 在**资源**下，选择**网络安全组**。

1. 为客户机子网选择 NSG (`exa_static_nsg`)。

1. 为您之前记下的 VPC 终端节点地址添加一条出口规则。

**测试从您的虚拟机到 S3 的连接**

1. `ssh`用于连接您之前`root`获得的 DNS 名称的虚拟机。连接时，请使用您的 SSH 密钥指定一个`.pem`文件。

1. 运行以下命令以确保虚拟机可以访问 Amazon S3 Amazon VPC 终端节点。使用您之前记下的 S3 域名。

   ```
   # nslookup s3.us-east-1.amazonaws.com
   # curl -v https://s3.us-east-1.amazonaws.com/
   # aws s3 ls --endpoint-url https://s3.us-east-1.amazonaws.com
   ```

### 使用 Oracle Secure Backup 备份到亚马逊 S3
<a name="manual-backups-osb"></a>

Oracle Secure Backup 充当 SBT 接口，可与恢复管理器 (RMAN) 配合使用。你可以使用 RMAN 和 Oracle Secure Backup 将你的 Oracle Database@AWS 数据库直接备份到 Amazon S3。Oracle Secure Backup 具有以下优势：
+ Oracle Secure Backup 优化了 RMAN 和 S3 之间的数据传输。
+ 无需中间备份存储。
+ Oracle Secure Backup 管理备份媒体的生命周期。

**使用 Oracle Secure Backup 备份到亚马逊 S3**

1. 在 Exadata 虚拟机服务器上安装 Oracle 安全备份模块。将占位符值替换为您的 AWS 访问密钥和私有访问密钥。有关更多信息，请参阅使用 Oracle [安全备份云模块备份到云上的 Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/backup-cloud-osb.html#GUID-EE4F48D8-61FA-4DAF-8169-FC42F15D828A) 文档。

   ```
   cd $ORACLE_HOME/lib
   java -jar osbws_install.jar -AWSID aws-access-key-id -AWSKey aws-secret-access-key -walletDir $ORACLE_HOME/dbs/osbws_wallet -location us-west-2 -useHttps -awsEndPoint s3.us-west-2.amazonaws.com
   ```

1. 连接 RMAN 并配置备份通道和默认设备类型。

   ```
   RMAN target /
   RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/u02/app/oracle/product/19.0.0.0/dbhome_2/lib/libosbws.so, ENV=(OSB_WS_PFILE=/u02/app/oracle/product/19.0.0.0/dbhome_2/dbs/osbwssmalikdb1.ora)';
   RMAN> CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
   ```

1. 验证配置。

   ```
   RMAN> SHOW ALL;
   ```

1. 备份数据库。

   ```
   RMAN> BACKUP DATABASE;
   ```

1. 验证备份是否成功完成。

   ```
   RMAN> LIST BACKUP OF DATABASE SUMMARY;
   ```

### 在亚马逊上使用 AWS Storage Gateway 备份到亚马逊 S3 EC2
<a name="manual-backups-storage-gateway"></a>

AWS Storage Gateway 是一项混合服务，可将您的本地环境与 AWS 云 存储服务连接起来。对于 Oracle Database@AWS 备份，您可以使用 Storage Gateway 创建直接写入 Amazon S3 的基于文件的备份工作流程。与 Oracle 安全备份技术不同，您可以管理备份的生命周期。

在此解决方案中，您可以创建一个单独的 Amazon EC2 实例来配置 Storage Gateway。您还可以添加一个 Amazon EBS 卷来缓存对 Amazon S3 的读取和写入。

此技术具有以下优点：
+ 您不需要像 Oracle Secure Backup 这样的媒体管理器。
+ 无需中间备份存储。

**部署 Storage Gateway 并创建文件共享**

1. 打开 AWS 管理控制台 at [https://console.aws.amazon.com/storagegateway/home/](https://console.aws.amazon.com/storagegateway/home/)，然后选择要在其中创建网关的 AWS 区域。

1. 使用亚马逊 EC2 实例作为中心，部署并激活 Amazon S3 文件网关。按照 *Storage Gateway 用户指南*[中为 S3 文件网关部署自定义 Amazon EC2 主机](https://docs.aws.amazon.com/filegateway/latest/files3/ec2-gateway-file.html)中的说明进行操作。

   配置文件网关时，请确保执行以下操作：
   + 至少添加一个 Amazon EBS 卷作为缓存存储空间，其大小至少为 150 GiB。
   + 在您的安全组中打开 TCP/UDP 端口 2049 以进行 NFS 访问。这允许您创建 NFS 文件共享。
   + 为入站流量打开 TCP 端口 80，以便在网关激活期间允许一次性 HTTP 访问。激活后，您可以关闭此端口。

1. 为你的 ODB 网络和 Storage Gateway 之间的私有连接创建一个 Amazon VPC 终端节点。有关更多信息，请参阅[使用接口 VPC 终端节点访问 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

1. 通过 Storage Gateway 控制台为您的 Amazon S3 存储桶创建文件共享。有关更多信息，请参阅[创建文件共享](https://docs.aws.amazon.com/filegateway/latest/files3/GettingStartedCreateFileShare.html)。

**使用 Storage Gateway 将数据库备份到 Amazon S3**

1. 在终端中，使用连接`ssh`到 Exadata 虚拟机的 DNS 名称。要查找 DNS 名称，请参阅[在 Oracle 数据库中由用户管理的 Amazon S3 备份的先决条件@AWS](#manual-backups-prerequisites)。

1. 在 Exadata 虚拟机群集服务器上为 NFS 挂载创建一个目录。以下示例会创建 `/home/oracle/sgw_mount/` 目录。

   ```
   mkdir /home/oracle/sgw_mount/
   ```

1. 将 NFS 共享挂载到您刚刚创建的目录上。以下示例在目录上创建共享`/home/oracle/sgw_mount/`。*SG-IP-address*替换为您的 Storage Gatew *your-bucket-name* ay IP 地址和 S3 存储桶的名称。

   ```
   sudo mount -t nfs -o nolock,hard SG-IP-address:/your-bucket-name /home/oracle/sgw_mount/
   ```

1. 连接到 RMAN 并将数据库备份到已装载的目录。以下示例创建通道`rman_local_bkp`并使用装入点路径来格式化备份片段。

   ```
   $ rman TARGET /
   RMAN> ALLOCATE CHANNEL rman_local_bkp DEVICE TYPE DISK;
   RMAN> BACKUP FORMAT '/home/oracle/sgw_mount/%U' DATABASE;
   ```

1. 确认备份文件已在装载目录中创建。以下示例显示了两个备份片段。

   ```
   $ ls -lart /home/oracle/sgw_mount/
   total 8569632
   -rw-r----- 1 oracle asmdba 1112223334 Jul 10 20:51 1a2b34cd_1234_1_1
   drwxrwxrwx 1 nobody nobody 0 Jul 10 20:56 .
   -rw-r----- 1 oracle asmdba 5556667778 Jul 10 20:56 1a2b34cd_1235_1_1
   ```

### 使用 S3 挂载点备份到 Amazon S3
<a name="manual-backups-s3-mount"></a>

您可以使用 Amazon S3 挂载点先在本地创建备份，然后将其复制到 Amazon S3。此技术在本地存储上创建备份，然后使用挂载点接口将其传输到 Amazon S3。备份时间比其他技术长，因为您需要备份两次数据。

**注意**  
不支持使用挂载点直接备份到 Amazon S3，无需暂存。RMAN 需要与 Amazon S3 挂载点接口不兼容的特定文件系统权限。

此技术不需要您许可 Oracle Secure Backup 等媒体管理器。您可以管理备份的生命周期。

**使用 S3 挂载点备份到 Amazon S3**

1. 在终端中，使用连接`ssh`到 Exadata 虚拟机的 DNS 名称。要查找 DNS 名称，请参阅[在 Oracle 数据库中由用户管理的 Amazon S3 备份的先决条件@AWS](#manual-backups-prerequisites)。

1. 在 Exadata 虚拟机群集服务器上安装 Amazon S3 挂载点。有关安装和配置的更多信息，请参阅《亚马逊 S3 *用户指南》中的 Amazon S* [3 安装点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountpoint.html)。

   ```
   $ sudo yum install ./mount-s3.rpm
   ```

1. 通过运行`mount-s3`命令来验证安装。

   ```
   $ mount-s3 --version
   mount-s3 1.19.0
   ```

1. 在 Exadata 虚拟机群集服务器的本地存储上创建中间备份目录。您将数据库备份到此本地目录，然后将备份复制到 S3 存储桶。以下示例创建目录`/u02/rman_bkp_local`。

   ```
   mkdir /u02/rman_bkp_local
   ```

1. 为 Amazon S3 挂载点创建目录。以下示例创建目录`/home/oracle/s3mount`。

   ```
   $ mkdir /home/oracle/s3mount
   ```

1. 使用挂载点挂载您的 Amazon S3 存储桶。以下示例在目录`/home/oracle/s3mount`上安装一个 S3 存储桶。*your-s3-bucket-name*替换为您实际的 Amazon S3 存储桶名称。

   ```
   $ mount-s3 s3://your-s3-bucket-name /home/oracle/s3mount
   ```

1. 确认您可以访问 Amazon S3 存储桶中的内容。

   ```
   $ ls -lart /home/oracle/s3mount
   ```

1. 将 RMAN 连接到您的目标数据库并将其备份到本地暂存目录。以下示例创建通道`rman_local_bkp`并使用该路径`/u02/rman_bkp_local/`格式化备份片段。

   ```
   $ rman TARGET /
   
   RMAN> ALLOCATE CHANNEL rman_local_bkp DEVICE TYPE DISK;
   RMAN> BACKUP FORMAT '/u02/rman_bkp_local/%U' DATABASE;
   ```

1. 确认备份是在本地目录中创建的：

   ```
   $ cd /u02/rman_bkp_local/
   $ ls -lart
   total 4252128
   drwxr-xr-x 8 oracle oinstall 4096 Jul 10 02:13 ..
   -rw-r----- 1 oracle asmdba 1112223334 Jul 10 02:13 abcd1234_1921_1_1
   drwxr-xr-x 2 oracle oinstall 4096 Jul 10 02:13 .
   -rw-r----- 1 oracle asmdba 5556667778 Jul 10 02:14 abcd1234_1922_1_1
   ```

1. 将备份文件从本地暂存目录复制到 Amazon S3 挂载点。

   ```
   cp /u02/rman_bkp_local/* /home/oracle/s3mount/
   ```

1. 确认您已成功将文件复制到 Amazon S3。

   ```
   $ ls -lart /home/oracle/s3mount/
   total 4252112
   drwx------ 6 oracle oinstall 225 Jul 10 02:09 ..
   drwxr-xr-x 2 oracle oinstall 0 Jul 10 02:24 .
   -rw-r--r-- 1 oracle oinstall 1112223334 Jul 10 02:24 abcd1234_1921_1_1
   -rw-r--r-- 1 oracle oinstall 5556667778 Jul 10 02:24 abcd1234_1922_1_1
   ```

### 禁止直接访问 Amazon S3
<a name="disabling-s3-customer-access"></a>

如果您不再需要从 ODB 网络直接访问 Amazon S3，则可以将其禁用。启用或禁用对 S3 的直接网络访问不会影响对 Oracle 托管的 Amazon S3 备份的网络访问。

#### 控制台
<a name="DisableS3Access.CON"></a>

**禁用直接访问 Amazon S3**

1. 打开 Oracle Database@AWS 控制台，网址为。[https://console.aws.amazon.com/odb/](https://console.aws.amazon.com/odb/)

1. 在导航窗格中，选择 **ODB 网络**。

1. 选择您要禁用 Amazon S3 访问权限的 ODB 网络。

1. 选择 **Modify**(修改)。

1. 清除 “**启用 S3 访问权限**” 复选框。

1. 选择**修改 ODB 网络**。

#### AWS CLI
<a name="DisableS3Access.CLI"></a>

将 `update-odb-network` 命令与 `s3-access` 参数一起使用。

```
aws odb update-odb-network \
  --odb-network-id odb-network-id \
  --s3-access DISABLED
```

## 对 Amazon S3 集成进行故障排除
<a name="troubleshooting-s3-managed-backups"></a>

如果您在 Oracle 托管的 Amazon S3 备份或直接访问 Amazon S3 时遇到问题，请考虑以下故障排除步骤：

**无法从您的数据库访问 Amazon S3**  
请检查以下事项：  
+ 确认您的 ODB 网络已启用 Amazon S3 访问权限。使用`GetOdbNetwork`操作来检查`s3Access`状态是否为`Enabled`。
+ 确保您使用的是正确的区域 DNS 名称：`s3.region.amazonaws.com`。
+ 检查您的 Oracle 数据库是否具有访问亚马逊 S3 所需的权限。

**甲骨文管理的备份失败**  
请检查以下事项：  
+ 默认情况下，Oracle 对 Amazon S3 的托管备份处于启用状态，无法禁用。如果备份失败，请查看 Oracle 数据库日志中是否有特定的错误消息。
+ 通过查看服务集成资源，验证 Amazon VPC Lattice 资源配置是否正确。
+ 请联系 Oracle 支持部门，获取有关 Oracle 托管自动备份问题的帮助。有关更多信息，请参阅 [获取对 Oracle 数据库的支持@AWS](odb-troubleshooting-overview.md#oracle-database-aws-support)。