

# 常见数据库任务
<a name="db2-managing-databases"></a>

可以在 RDS for Db2 数据库实例上创建、删除或还原数据库。创建、删除或还原数据库需要更高级别的 `SYSADM` 权限，而主用户无法获得该权限。因此，可改为使用 Amazon RDS 存储过程。

还可以执行常见的管理任务，例如监控、维护和收集有关数据库的信息。

**Topics**
+ [创建数据库](#db2-creating-database)
+ [为数据库配置设置](#db2-configuring-database)
+ [修改数据库参数](#db2-modifying-db-parameters)
+ [配置日志保留期](#db2-configuring-log-retention)
+ [列出日志信息](#db2-listing-log-information)
+ [使用精细访问控制（FGAC）](#db2-using-fine-grained-access-control)
+ [停用数据库](#db2-deactivating-database)
+ [激活数据库](#db2-activating-database)
+ [重新激活数据库](#db2-reactivating-database)
+ [删除数据库](#db2-dropping-database)
+ [备份数据库](#db2-backing-up-database)
+ [将归档日志复制到 Amazon S3](#db2-copying-archive-logs-to-s3)
+ [还原数据库](#db2-restoring-database)
+ [列出数据库](#db2-listing-databases)
+ [收集有关数据库的信息](#db2-collecting-info-db)
+ [强制应用程序退出数据库](#db2-forcing-application-off-db)
+ [生成性能报告](#db2-generating-performance-reports)

## 创建数据库
<a name="db2-creating-database"></a>

要在 RDS for Db2 数据库实例上创建数据库，请调用 `rdsadmin.create_database` 存储过程。有关更多信息，请参阅 IBM Db2 文档中的 [CREATE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-create-database)。

**注意**  
如果您打算修改 `db2_compatibility_vector` 参数，请在创建数据库之前进行修改。有关更多信息，请参阅 [设置 db2\$1compatibility\$1vector 参数](db2-known-issues-limitations.md#db2-known-issues-limitations-db2-compatibility-vector)。

**创建数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.create_database` 创建数据库。有关更多信息，请参阅 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)。

   ```
   db2 "call rdsadmin.create_database(
       'database_name',
       'database_page_size',
       'database_code_set',
       'database_territory',
       'database_collation',
       'database_autoconfigure_str',
       'database_non-restrictive')"
   ```

1. （可选）通过对您要创建的每个数据库调用 `rdsadmin.create_database` 可创建额外数据库。每个 Db2 数据库实例最多可包含 50 个数据库。有关更多信息，请参阅 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)。

   ```
   db2 "call rdsadmin.create_database('database_name')"
   ```

1. （可选）使用以下方法之一确认数据库已创建：
   + 调用 `rdsadmin.list_databases`。有关更多信息，请参阅 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases)。
   + 运行以下 SQL 命令：

     ```
     db2 "select varchar(r.task_type,25) as task_type, r.database_name, 
         varchar(r.lifecycle,15) as lifecycle, r.created_at, r.database_name,
         varchar(bson_to_json(task_input_params),256) as input_params, 
         varchar(r.task_output,1024) as task_output 
         from table(rdsadmin.get_task_status(null,null,'create_database')) 
         as r order by created_at desc"
     ```

## 为数据库配置设置
<a name="db2-configuring-database"></a>

要为 RDS for Db2 数据库实例上的数据库配置设置，请调用 `rdsadmin.set_configuration` 存储过程。例如，您可以配置在还原操作期间要创建的缓冲区或缓冲区操纵器的数量。

**为数据库配置设置**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. （可选）通过调用 `rdsadmin.show_configuration` 检查您当前的配置设置。有关更多信息，请参阅 [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)。

   ```
   db2 "call rdsadmin.show_configuration('name')"
   ```

1. 通过调用 `rdsadmin.set_configuration` 配置数据库的设置。有关更多信息，请参阅 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)。

   ```
   db2 "call rdsadmin.set_configuration(
       'name',  
       'value')"
   ```

## 修改数据库参数
<a name="db2-modifying-db-parameters"></a>

Amazon RDS for Db2 使用三种类型的参数：数据库管理器配置参数、注册表变量和数据库配置参数。可以通过参数组更新前两种类型，并通过 [rdsadmin.update\$1db\$1param](db2-sp-managing-databases.md#db2-sp-update-db-param) 存储过程更新最后一种类型。

**注意**  
只能修改现有参数的值。无法添加 RDS for Db2 不支持的新参数。

有关这些参数以及如何修改其值的更多信息，请参阅 [Amazon RDS for Db2 参数](db2-supported-parameters.md)。

## 配置日志保留期
<a name="db2-configuring-log-retention"></a>

要配置 Amazon RDS 为 RDS for Db2 数据库保留日志文件的时间长度，请调用 `rdsadmin.set_archive_log_retention` 存储过程。

**为数据库配置日志保留期**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. （可选）通过调用 `rdsadmin.show_archive_log_retention` 检查您当前的日志保留期配置。有关更多信息，请参阅 [rdsadmin.show\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-show-archive-log-retention)。

   ```
   db2 "call rdsadmin.show_archive_log_retention(
       ?,
       'database_name')"
   ```

1. 通过调用 `rdsadmin.set_archive_log_retention` 配置数据库的日志保留期。有关更多信息，请参阅 [rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention)。

   ```
   db2 "call rdsadmin.set_archive_log_retention(
       ?,            
       'database_name',  
       'archive_log_retention_hours')"
   ```

## 列出日志信息
<a name="db2-listing-log-information"></a>

要列出有关归档日志文件的详细信息，包括使用的总存储大小等详细信息，请调用 `rdsadmin.list_archive_log_information` 存储过程。

**列出数据库的日志信息**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.list_archive_log_information` 返回日志文件信息列表。有关更多信息，请参阅 [rdsadmin.list\$1archive\$1log\$1information](db2-sp-managing-databases.md#db2-sp-list-archive-log-information)。

   ```
   db2 "call rdsadmin.list_archive_log_information(
       ?,            
       'database_name')"
   ```

## 使用精细访问控制（FGAC）
<a name="db2-using-fine-grained-access-control"></a>

要使用精细访问控制命令来控制对 RDS for Db2 数据库实例上数据库中表数据的访问，请调用 `rdsadmin.fgac_command` 存储过程。您可能需要使用 FGAC 根据用户角色或数据属性来限制对数据的访问。例如，您可以根据数据类型限制对患者医疗保健数据的访问权限，或者限制某些医疗服务提供商的访问权限。

**使用精细访问控制来控制对数据库中表数据的访问**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.fgac_command` 运行各种精细访问控制命令。有关更多信息，请参阅 [rdsadmin.fgac\$1command参数](db2-sp-managing-databases.md#db2-sp-fgac-command)。

   ```
   db2 "call rdsadmin.fgac_command(     
       ?,
       'database_name',
       'fgac_command')"
   ```

## 停用数据库
<a name="db2-deactivating-database"></a>

要在 RDS for Db2 数据库实例上停用数据库，请调用 `rdsadmin.deactivate_database` 存储过程。

默认情况下，当您在 RDS for Db2 数据库实例上创建数据库时，Amazon RDS 会激活数据库。您可以停用不常使用的数据库以节省内存资源。

**停用数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.deactivate_database` 停用数据库。有关更多信息，请参阅 [rdsadmin.deactivate\$1database](db2-sp-managing-databases.md#db2-sp-deactivate-database)。

   ```
   db2 "call rdsadmin.deactivate_database(    
       ?, 
       'database_name')"
   ```

## 激活数据库
<a name="db2-activating-database"></a>

要在独立的 RDS for Db2 数据库实例上激活数据库，请调用 `rdsadmin.activate_database` 存储过程。

默认情况下，当您在 RDS for Db2 数据库实例上创建数据库时，Amazon RDS 会激活数据库。您可以停用不常使用的数据库以节省内存资源，在以后再激活已停用的数据库。

**激活数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.activate_database` 激活数据库。有关更多信息，请参阅 [rdsadmin.activate\$1database](db2-sp-managing-databases.md#db2-sp-activate-database)。

   ```
   db2 "call rdsadmin.activate_database(
       ?, 
       'database_name')"
   ```

## 重新激活数据库
<a name="db2-reactivating-database"></a>

要在副本源 RDS for Db2 数据库实例上重新激活数据库，请调用 `rdsadmin.reactivate_database` 存储过程。更改数据库配置后，您可能需要在 RDS for Db2 数据库实例上重新激活数据库。要确定是否需要重新激活数据库，请连接到该数据库并运行 `db2 get db cfg show detail`。

也可以在更改数据库配置后调用此存储过程，以便在独立的 RDS for Db2 数据库实例上重新激活数据库。或者，可以通过先调用 `rdsadmin.deactivate_database` 存储过程，然后调用 `rdsadmin.activate_database` 存储过程，在独立的 RDS for Db2 数据库实例上重新激活数据库。有关更多信息，请参阅[停用数据库](#db2-deactivating-database)和[激活数据库](#db2-activating-database)。

**重新激活数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.reactivate_database` 重新激活数据库。有关更多信息，请参阅 [rdsadmin.reactivate\$1database](db2-sp-managing-databases.md#db2-sp-reactivate-database)。

   ```
   db2 "call rdsadmin.reactivate_database(
       ?, 
       'database_name')"
   ```

## 删除数据库
<a name="db2-dropping-database"></a>

要从 RDS for Db2 数据库实例中删除数据库，请调用 `rdsadmin.drop_database` 存储过程。有关更多信息，请参阅 IBM Db2 文档中的 [Dropping databases](https://www.ibm.com/docs/en/db2/11.5?topic=databases-dropping)。

**注意**  
只有满足某些条件时，才能通过调用存储过程来删除数据库。有关更多信息，请参阅 `rdsadmin.drop_database` 的[使用说明](db2-sp-managing-databases.md#db2-sp-drop-database-usage-notes)。

**删除数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.drop_database` 来删除数据库。有关更多信息，请参阅 [rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database)。

   ```
   db2 "call rdsadmin.drop_database('database_name')"
   ```

## 备份数据库
<a name="db2-backing-up-database"></a>

要在 RDS for Db2 数据库实例中将数据库备份到 Amazon S3，请调用 `rdsadmin.backup_database` 存储过程。有关更多信息，请参阅 IBM Db2 文档中的 [BACKUP DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5.x?topic=commands-backup-database)。

**注意**  
此存储过程使用与 Amazon S3 的集成。请确保您已配置了集成，然后再继续。有关更多信息，请参阅 [将 Amazon RDS for Db2 数据库实例与 Amazon S3 集成](db2-s3-integration.md)。

**备份数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 为 S3 创建 VPC 网关端点。如果您已有用于 S3 的 VPC 网关端点，请跳至第 4 步。

   要让 RDS for Db2 数据库实例能够与 Amazon S3 交互，您必须有一个 VPC 和一个供私有子网使用的 Amazon S3 网关端点。有关更多信息，请参阅 [步骤 1：为 Amazon S3 创建 VPC 网关端点](db2-troubleshooting.md#db2-creating-endpoint)。

1. 确认 S3 的 VPC 网关端点。有关更多信息，请参阅 [步骤 2：确认适用于 Amazon S3 的 VPC 网关端点存在](db2-troubleshooting.md#db2-confirming-endpoint)。

1. 通过调用 `rdsadmin.backup_database` 来备份数据库。有关更多信息，请参阅 [rdsadmin.backup\$1database](db2-sp-managing-databases.md#db2-sp-backup-database)。

   ```
   db2 "call rdsadmin.backup_database(
       ?,
       'database_name', 
       's3_bucket_name', 
       's3_prefix', 
       'backup_type',
       'compression_option',
       'util_impact_priority', 
       'num_files',
       'parallelism',
       'num_buffers')"
   ```

1. 终止连接。

   ```
   terminate
   ```

1. （可选）确认备份文件已上传到 Amazon S3 存储桶中的 *s3\$1prefix/dbi\$1resource\$1id/db\$1name* 下。如果这些文件未出现在 *s3\$1prefix/dbi\$1resource\$1id/db\$1name* 中，请检查备份数据库的状态以查明问题。有关更多信息，请参阅 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。如果您无法解决任何已发现的问题，请联系 [AWS 支持人员](https://aws.amazon.com/premiumsupport/)。

1. （可选）完成向 Amazon S3 的备份后，您可以将备份还原到 RDS for Db2 数据库实例或其他位置，例如本地服务器。有关还原到 RDS for Db2 数据库实例的信息，请参阅[还原数据库](#db2-restoring-database)。

## 将归档日志复制到 Amazon S3
<a name="db2-copying-archive-logs-to-s3"></a>

Db2 归档日志现在可以从 RDS for Db2 数据库实例复制到 Amazon S3。归档日志与使用 `rdsadmin.backup_database` 创建的原生备份相结合，可用于将数据库还原和前滚到另一个 RDS for Db2 实例或 EC2 数据库上的时间点。

 在配置此功能之前，请使用存储过程 `rdsadmin.backup_database` 来设置 RDS for Db2 数据库。

此功能在 RDS for Db2 数据库实例级别运行，但可以为每个数据库启用或禁用归档日志复制。

**配置到 Amazon S3 的归档日志复制**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration) 将归档日志备份设置为 S3。

   ```
   db2 "call rdsadmin.set_configuration(
       'name',
       'value')"
   ```

    **示例：**

   ```
   db2 "call rdsadmin.set_configuration('ARCHIVE_LOG_COPY_TARGET_S3_ARN', 'arn:aws:s3:::my_rds_db2_backups/archive-log-copy/')"
   ```

1. 通过调用 `rdsadmin.enable_archive_log_copy` 为数据库启用归档日志复制。将 *database\$1name* 替换为数据库名称。

   ```
   db2 "call rdsadmin.enable_archive_log_copy(?, 'database_name')"
   ```

1. 同样，要禁用数据库的归档日志复制，请调用 `rdsadmin.disable_archive_log_copy`。

   ```
   db2 "call rdsadmin.disable_archive_log_copy(?, 'database_name')"
   ```

1. 通过调用 `rdsadmin.list_databases` 来确认归档日志复制状态。

   ```
   db2 "select * from table(rdsadmin.list_databases())"
   ```

    **示例输出。**

   ```
   DATABASE_NAME   CREATE_TIME                DATABASE_UNIQUE_ID                                 ARCHIVE_LOG_RETENTION_HOURS ARCHIVE_LOG_COPY ARCHIVE_LOG_LAST_UPLOAD_FILE ARCHIVE_LOG_LAST_UPLOAD_FILE_TIME ARCHIVE_LOG_COPY_STATUS
   --------------- -------------------------- -------------------------------------------------- --------------------------- ---------------- ---------------------------- --------------------------------- ------------------------------
   RDSADMIN        2026-01-06-02.03.42.569069 RDSADMIN                                                                     0 DISABLED         -                            -                                 -
   FOO             2026-01-06-02.13.42.885650 F0D81C7E-7213-4565-B376-4F33FCF420E3                                         7 ENABLED          S0006536.LOG                 2026-01-28-19.15.10.000000        UPLOADING
   CODEP           2026-01-14-19.42.42.508476 106EEF95-6E30-4FFF-85AE-B044352DF095                                         0 DISABLED         -                            -                                 -
   ...
   ```

## 还原数据库
<a name="db2-restoring-database"></a>

要将数据库从 Amazon S3 存储桶移动到 RDS for Db2 数据库实例，请调用 `rdsadmin.restore_database` 存储过程。有关更多信息，请参阅 IBM Db2 文档中的 [RESTORE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database)。

**还原数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. （可选）通过调用 `rdsadmin.show_configuration` 来检查当前的配置设置以优化还原操作。有关更多信息，请参阅 [rdsadmin.show\$1configuration](db2-sp-managing-databases.md#db2-sp-show-configuration)。

   ```
   db2 "call rdsadmin.show_configuration('name')"
   ```

1. 通过调用 `rdsadmin.set_configuration` 来配置设置以优化还原操作。显式设置这些值可以提高还原包含大量数据的数据库时的性能。有关更多信息，请参阅 [rdsadmin.set\$1configuration](db2-sp-managing-databases.md#db2-sp-set-configuration)。

   ```
   db2 "call rdsadmin.set_configuration(
       'name',  
       'value')"
   ```

1. 通过调用 `rdsadmin.restore_database` 来还原数据库。有关更多信息，请参阅 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database)。

   ```
   db2 "call rdsadmin.restore_database(
       ?,
       'database_name', 
       's3_bucket_name', 
       's3_prefix', 
       restore_timestamp, 
       'backup_type')"
   ```

1. （可选）通过调用 `rdsadmin.list_databases` 并检查已还原的数据库是否已列出，来确认您的数据库已还原。有关更多信息，请参阅 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases)。

1. 通过调用 `rdsadmin.rollforward_database` 使数据库恢复联机并应用其它事务日志。有关更多信息，请参阅 [rdsadmin.rollforward\$1database](db2-sp-managing-databases.md#db2-sp-rollforward-database)。

   ```
   db2 "call rdsadmin.rollforward_database(
       ?,
       'database_name',
       's3_bucket_name', 
       s3_prefix, 
       'rollforward_to_option', 
       'complete_rollforward')"
   ```

1. （可选）通过调用 [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status) 存储过程来检查 `rdsadmin.rollforward_database` 存储过程的状态。

1. 如果在上一步中将 `complete_rollforward` 设置为 `FALSE`，则必须通过调用 `rdsadmin.complete_rollforward` 来完成使数据库恢复联机的过程。有关更多信息，请参阅 [rdsadmin.complete\$1rollforward](db2-sp-managing-databases.md#db2-sp-complete-rollforward)。

   ```
   db2 "call rdsadmin.complete_rollforward(
       ?,
       'database_name')"
   ```

1. （可选）通过调用 [rdsadmin.rollforward\$1status](db2-sp-managing-databases.md#db2-sp-rollforward-status) 存储过程来检查 `rdsadmin.complete_rollforward` 存储过程的状态。

## 列出数据库
<a name="db2-listing-databases"></a>

通过调用 `rdsadmin.list_databases` 用户定义的函数，您可以列出在 Amazon RDS for Db2 上运行的所有数据库。

**列出您的数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.list_databases` 列出您的数据库。有关更多信息，请参阅 [rdsadmin.list\$1databases](db2-user-defined-functions.md#db2-udf-list-databases)。

   ```
   db2 "select * from table(rdsadmin.list_databases())"
   ```

## 收集有关数据库的信息
<a name="db2-collecting-info-db"></a>

要收集有关 RDS for Db2 数据库实例上数据库的信息，请调用 `rdsadmin.db2pd_command` 存储过程。这些信息可以帮助监控您的数据库或排查问题。

**收集有关数据库的信息**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.db2pd_command` 收集有关数据库的信息。有关更多信息，请参阅 [rdsadmin.db2pd\$1command](db2-sp-managing-databases.md#db2-sp-db2pd-command)。

   ```
   db2 "call rdsadmin.db2pd_command('db2pd_cmd')"
   ```

## 强制应用程序退出数据库
<a name="db2-forcing-application-off-db"></a>

要强制应用程序退出 RDS for Db2 数据库实例上的数据库，请调用 `rdsadmin.force_application` 存储过程。在对数据库进行维护之前，请强制应用程序退出数据库。

**强制应用程序退出数据库**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.force_application` 来强制应用程序退出数据库 有关更多信息，请参阅 [rdsadmin.force\$1application](db2-sp-managing-databases.md#db2-sp-force-application)。

   ```
   db2 "call rdsadmin.force_application(     
       ?,
       'applications')"
   ```

## 生成性能报告
<a name="db2-generating-performance-reports"></a>

您可以使用过程或脚本生成性能报告。有关使用过程的信息，请参阅 IBM Db2 文档中的 [DBSUMMARY procedure ‐ Generate a summary report of system and application performance metrics](https://www.ibm.com/docs/en/db2/11.5?topic=mm-dbsummary-procedure-generate-summary-report-system-application-performance-metrics)。

Db2 在其 `~sqllib/sample/perf` 目录中包含一个 `db2mon.sh` 文件。运行该脚本会生成低成本、广泛的 SQL 指标报告。要下载 `db2mon.sh` 文件和相关的脚本文件，请参阅 IBM db2-samples GitHub 存储库中的 [https://github.com/IBM/db2-samples/tree/master/perf](https://github.com/IBM/db2-samples/tree/master/perf) 目录。

**使用脚本生成性能报告**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到您的 Db2 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 connect to rdsadmin user master_username using master_password
   ```

1. 通过调用 `rdsadmin.create_bufferpool` 创建一个名为 `db2monbp`、页面大小为 4096 的缓冲池。有关更多信息，请参阅 [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)。

   ```
   db2 "call rdsadmin.create_bufferpool('database_name','db2monbp',4096)"
   ```

1. 通过调用 `rdsadmin.create_tablespace` 创建一个名为 `db2montmptbsp` 且使用 `db2monbp` 缓冲池的临时表空间。有关更多信息，请参阅 [rdsadmin.create\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-create-tablespace)。

   ```
   db2 "call rdsadmin.create_tablespace('database_name',\
       'db2montmptbsp','db2monbp',4096,1000,100,'T')"
   ```

1. 打开 `db2mon.sh` 脚本，并修改有关连接到数据库的行。

   1. 删除以下行。

      ```
      db2 -v connect to $dbName
      ```

   1. 将上一步中的行替换为下一行。在以下示例中，将 *master\$1username* 和 *master\$1password* 替换为您的 RDS for Db2 数据库实例的主用户名和主密码。

      ```
      db2 -v connect to $dbName user master_username using master_password
      ```

   1. 移除以下各行。

      ```
      db2 -v create bufferpool db2monbp
      
      db2 -v create user temporary tablespace db2montmptbsp bufferpool db2monbp
      
      db2 -v drop tablespace db2montmptbsp
      
      db2 -v drop bufferpool db2monbp
      ```

1. 运行 `db2mon.sh` 脚本以按指定的间隔输出报告。在以下示例中，将 *absolute\$1path* 替换为指向脚本文件的完整路径，将 *rds\$1database\$1alias* 替换为数据库的名称，并将 *seconds* 替换为报告生成之间的秒数（0 到 3600）。

   ```
   absolute_path/db2mon.sh rds_database_alias seconds | tee -a db2mon.out
   ```

   **示例**

   以下示例显示脚本文件位于 `home` 目录下的 `perf` 目录中。

   ```
   /home/db2inst1/sqllib/samples/perf/db2mon.sh rds_database_alias seconds | tee -a db2mon.out
   ```

1. 删除为 `db2mon.sh` 文件创建的缓冲池和表空间。在以下示例中，将 *master\$1username* 和 *master\$1password* 替换为您的 RDS for Db2 数据库实例的主用户名和主密码。将 *database\$1name* 替换为数据库的名称。有关更多信息，请参阅[rdsadmin.drop\$1tablespace](db2-sp-managing-tablespaces.md#db2-sp-drop-tablespace)和[rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool)。

   ```
   db2 connect to rdsadmin user master_username using master_password
   
   db2 "call rdsadmin.drop_tablespace('database_name','db2montmptbsp')"
   
   db2 "call rdsadmin.drop_bufferpool('database_name','db2monbp')"
   ```