

# 用于管理 RDS for Db2 数据库的存储过程
<a name="db2-sp-managing-databases"></a>

本主题中介绍的内置存储过程可管理 Amazon RDS for Db2 数据库。要运行这些过程，主用户必须先连接到 `rdsadmin` 数据库。

这些存储过程可用于执行各种任务。此列表并不详尽。
+ [常见数据库任务](db2-managing-databases.md)
+ [使用 EBCDIC 排序规则创建数据库](db2-ebcdic.md)
+ [收集有关数据库的信息](db2-supported-parameters.md#db2-modifying-parameters-db2-commands)
+ [修改数据库配置参数](db2-supported-parameters.md#db2-modifying-parameters-db2-commands)
+ [从 Linux 迁移到 Linux](db2-one-time-migration-linux.md)
+ [从 Linux 迁移到 Linux，停机时间接近零](db2-near-zero-downtime-migration.md)

请参阅以下内置存储过程，了解其语法、参数、用法说明和示例。

**Topics**
+ [rdsadmin.create\$1database](#db2-sp-create-database)
+ [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database)
+ [rdsadmin.activate\$1database](#db2-sp-activate-database)
+ [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database)
+ [rdsadmin.drop\$1database](#db2-sp-drop-database)
+ [rdsadmin.update\$1db\$1param](#db2-sp-update-db-param)
+ [rdsadmin.set\$1configuration](#db2-sp-set-configuration)
+ [rdsadmin.show\$1configuration](#db2-sp-show-configuration)
+ [rdsadmin.backup\$1database](#db2-sp-backup-database)
+ [rdsadmin.restore\$1database](#db2-sp-restore-database)
+ [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)
+ [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status)
+ [rdsadmin.complete\$1rollforward](#db2-sp-complete-rollforward)
+ [rdsadmin.db2pd\$1command](#db2-sp-db2pd-command)
+ [rdsadmin.force\$1application](#db2-sp-force-application)
+ [rdsadmin.set\$1archive\$1log\$1retention](#db2-sp-set-archive-log-retention)
+ [rdsadmin.show\$1archive\$1log\$1retention](#db2-sp-show-archive-log-retention)
+ [rdsadmin.list\$1archive\$1log\$1information](#db2-sp-list-archive-log-information)
+ [rdsadmin.enable\$1archive\$1log\$1copy](#db2-sp-enable_archive_log_copy)
+ [rdsadmin.disable\$1archive\$1log\$1copy](#db2-sp-disable_archive_log_copy)
+ [rdsadmin.fgac\$1command](#db2-sp-fgac-command)
+ [rdsadmin.db2support\$1command](#db2-sp-db2support-command)

## rdsadmin.create\$1database
<a name="db2-sp-create-database"></a>

创建一个数据库。

### 语法
<a name="db2-sp-create-database-syntax"></a>

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

### 参数
<a name="db2-sp-create-database-parameters"></a>

**注意**  
此存储过程不验证所需参数的组合。当您调用 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status) 时，由于 `database_codeset`、`database_territory` 和 `database_collation` 的组合无效，用户定义函数可能会返回错误。有关更多信息，请参阅 IBM Db2 文档中的 [Choosing the code page, territory, and collation for your database](https://www.ibm.com/docs/en/db2/11.5?topic=support-choosing-code-page-territory-collation-your-database)。

以下参数是必需参数：

*database\$1name*  
要创建的数据库的名称。数据类型为 `varchar`。

以下参数可选：

*database\$1page\$1size*  
数据库的默认页面大小。有效值：`4096`、`8192`、`16384`、`32768`。数据类型为 `integer`。默认值为 `8192`。  
Amazon RDS 支持 4KiB、8KiB 和 16KiB 页面的写入原子性。相比之下，32KiB 页面可能面临*写入数据受到损坏*或部分数据写入磁盘的风险。如果使用 32KiB 页面，我们建议启用时间点故障恢复和自动备份。否则，您将面临无法从损坏的页面中恢复的风险。有关更多信息，请参阅[备份简介](USER_WorkingWithAutomatedBackups.md)和[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

*database\$1code\$1set*  
数据库的代码集。数据类型为 `varchar`。默认值为 `UTF-8`。

*database\$1territory*  
数据库的两个字母的国家/地区代码。数据类型为 `varchar`。默认值为 `US`。

*database\$1collation*  
排序规则序列，用于确定如何对存储在数据库中的字符串进行排序和比较。数据类型为 `varchar`。  
有效值：  
+ `COMPATIBILITY` – IBM Db2 版本 2 排序规则序列。
+ `EBCDIC_819_037` – ISO 拉丁语代码页，排序规则；CCSID 037（EBCDIC 美国英语）。
+ `EBCDIC_819_500` – ISO 拉丁语代码页，排序规则；CCSID 500（EBCDIC 国际）。
+ `EBCDIC_850_037` – ASCII 拉丁语代码页，排序规则；CCSID 037（EBCDIC 美国英语）。
+ `EBCDIC_850_500` – ASCII 拉丁语代码页，排序规则；CCSID 500（EBCDIC 国际）。
+ `EBCDIC_932_5026`：ASCII 日语代码页，排序规则；CCSID 5026（EBCDIC 美国英语）。
+ `EBCDIC_932_5035`：ASCII 日语代码页，排序规则；CCSID 5035（EBCDIC 国际）。
+ `EBCDIC_1252_037` – Windows 拉丁语代码页，排序规则；CCSID 037（EBCDIC 美国英语）。
+ `EBCDIC_1252_500` – Windows 拉丁语代码页，排序规则；CCSID 500（EBCDIC 国际）。
+ `IDENTITY` – 默认排序规则。对字符串进行逐字节比较。
+ `IDENTITY_16BIT` – UTF-16 的兼容性编码方案：8 位（CESU-8）排序规则序列。有关更多信息，请参阅 Unicode Consortium 网站上的 [Unicode Technical Report \$126](https://www.unicode.org/reports/tr26/tr26-4.html)。
+ `NLSCHAR` – 仅适用于泰语代码页（CP874）。
+ `SYSTEM` – 如果您使用 `SYSTEM`，则数据库会自动将排序规则序列用于 `database_codeset` 和 `database_territory`。
默认值为 `IDENTITY`。  
此外，RDS for Db2 还支持以下排序规则组：`language-aware-collation` 和 `locale-sensitive-collation`。有关更多信息，请参阅 IBM Db2 文档中的 [Choosing a collation for a Unicode database](https://www.ibm.com/docs/en/db2/11.5?topic=collation-choosing-unicode-database)。

*database\$1autoconfigure\$1str*  
`AUTOCONFIGURE` 命令语法，例如 `'AUTOCONFIGURE APPLY DB'`。数据类型为 `varchar`。默认值是空字符串或 Null。  
有关更多信息，请参阅 IBM Db2 文档中的 [AUTOCONFIGURE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=cc-autoconfigure)。

*database\$1non-restrictive*  
授予数据库中的默认权限和特权。数据类型为 `varchar`。默认值为 `N`。  
有效值：  
+ `N`：创建的数据库是限制性的，不授予权限或特权。
+ `Y`：创建的数据库是非限制性的，并向特殊组 `PUBLIC` 授予一组权限。有关更多信息，请参阅 IBM Db2 文档中的 [Default privileges granted on creating a database](https://www.ibm.com/docs/en/db2/11.5.x?topic=ownership-default-privileges-granted-creating-database)。

### 使用说明
<a name="db2-sp-create-database-usage-notes"></a>

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

特殊注意事项：
+ 发送到 Db2 实例的 `CREATE DATABASE` 命令使用 `RESTRICTIVE` 选项。
+ RDS for Db2 仅使用 `AUTOMATIC STORAGE` 表空间。
+ RDS for Db2 使用 `NUMSEGS` 和 `DFT_EXTENT_SZ` 的默认值。
+ RDS for Db2 使用存储加密，但不支持数据库加密。

有关这些注意事项的更多信息，请参阅 IBM Db2 文档中的 [CREATE DATABASE command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-create-database#:~:text=in%20the%20database.-,RESTRICTIVE,-If%20the%20RESTRICTIVE)。

在调用 `rdsadmin.create_database` 之前，必须连接到 `rdsadmin` 数据库。在以下示例中，将 *master\$1username* 和 *master\$1password* 替换为 RDS for Db2 数据库实例信息：

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

有关检查创建数据库的状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.create_database` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-create-database-examples"></a>

以下示例创建一个名为 `TESTJP` 的数据库，该数据库具有适用于日本的 *database\$1code\$1set*、*database\$1territory* 和 *database\$1collation* 参数的正确组合：

```
db2 "call rdsadmin.create_database('TESTJP', 4096, 'IBM-437', 'JP', 'SYSTEM')"
```

## rdsadmin.deactivate\$1database
<a name="db2-sp-deactivate-database"></a>

停用数据库。

### 语法
<a name="db2-sp-deactivate-database-syntax"></a>

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

### 参数
<a name="db2-sp-deactivate-database-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要停用的数据库的名称。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-deactivate-database-usage-notes"></a>

您可以停用数据库以节省内存资源或进行其它数据库配置更改。要使已停用的数据库恢复联机，请调用 [rdsadmin.activate\$1database](#db2-sp-activate-database) 存储过程。

在复制过程中，您无法通过调用 `rdsadmin.deactivate_database` 存储过程来停用源数据库实例上的数据库。

有关如何检查数据库停用状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.deactivate_database` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-deactivate-database-examples"></a>

以下示例停用名为 `TESTDB` 的数据库。

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

## rdsadmin.activate\$1database
<a name="db2-sp-activate-database"></a>

激活数据库。

有关 [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database) 与 `rdsadmin.activate_database` 的差异的更多信息，请参阅 [使用说明](#db2-sp-activate-database-usage-notes)。

### 语法
<a name="db2-sp-activate-database-syntax"></a>

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

### 参数
<a name="db2-sp-activate-database-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要激活的数据库的名称。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-activate-database-usage-notes"></a>

默认情况下，所有数据库在创建后都处于激活状态。如果[停用]()独立数据库实例上的数据库以节省内存资源或进行其它数据库配置更改，请调用 `rdsadmin.activate_database` 存储过程以再次激活数据库。

此存储过程仅激活位于独立数据库实例上且已通过调用 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 存储过程停用的数据库。要在副本源数据库实例上激活数据库，必须调用 [rdsadmin.reactivate\$1database](#db2-sp-reactivate-database) 存储过程。

有关如何检查数据库激活状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.activate_database` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-activate-database-examples"></a>

以下示例激活名为 `TESTDB` 的数据库。

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

## rdsadmin.reactivate\$1database
<a name="db2-sp-reactivate-database"></a>

重新激活数据库。

有关 [rdsadmin.activate\$1database](#db2-sp-activate-database) 与 `rdsadmin.reactivate_database` 之间差异的更多信息，请参阅[使用说明](#db2-sp-reactivate-database-usage-notes)。

### 语法
<a name="db2-sp-reactivate-database-syntax"></a>

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

### 参数
<a name="db2-sp-reactivate-database-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要重新激活的数据库的名称。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-reactivate-database-usage-notes"></a>

调用 `rdsadmin.reactivate_database` 存储过程时，该存储过程首先通过调用 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 存储过程来停用数据库，然后通过调用 [rdsadmin.activate\$1database](#db2-sp-activate-database) 存储过程来激活数据库。

更改数据库配置后，您可能需要在 RDS for Db2 数据库实例上重新激活数据库。要确定是否需要重新激活数据库，请连接到该数据库并运行 `db2 get db cfg show detail`。

对于独立数据库实例上的数据库，您可以使用 `rdsadmin.reactivate_database` 存储过程来重新激活该数据库。或者，如果您已经调用了 [rdsadmin.deactivate\$1database](#db2-sp-deactivate-database) 存储过程，则可以改为调用 [rdsadmin.activate\$1database](#db2-sp-activate-database) 存储过程。

对于副本源数据库实例上的数据库，必须使用 `rdsadmin.reactivate_database` 存储过程来重新激活该数据库。

有关检查重新激活数据库的状态的信息，请参阅 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.reactivate_database` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-reactivate-database-examples"></a>

以下示例重新激活名为 `TESTDB` 的数据库。

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

## rdsadmin.drop\$1database
<a name="db2-sp-drop-database"></a>

删除数据库。

### 语法
<a name="db2-sp-drop-database-syntax"></a>

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

### 参数
<a name="db2-sp-drop-database-parameters"></a>

以下参数是必需参数：

*database\$1name*  
要删除的数据库的名称。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-drop-database-usage-notes"></a>

仅当满足以下条件时，才可以通过调用 `rdsadmin.drop_database` 来删除数据库：
+ 您在使用 Amazon RDS 控制台或 AWS CLI 创建 RDS for Db2 数据库实例时未指定数据库的名称。有关更多信息，请参阅 [创建数据库实例](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)。
+ 您通过调用 [rdsadmin.create\$1database](#db2-sp-create-database) 存储过程创建了数据库。
+ 您通过调用 [rdsadmin.restore\$1database](#db2-sp-restore-database) 存储过程从脱机或备份的映像中还原了数据库。

在调用 `rdsadmin.drop_database` 之前，必须连接到 `rdsadmin` 数据库。在以下示例中，将 *master\$1username* 和 *master\$1password* 替换为 RDS for Db2 数据库实例信息：

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

有关如何检查数据库删除状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.drop_database` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-drop-database-examples"></a>

以下示例删除名为 `TESTDB` 的数据库：

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

## rdsadmin.update\$1db\$1param
<a name="db2-sp-update-db-param"></a>

更新数据库参数。

### 语法
<a name="db2-sp-update-db-param-syntax"></a>

```
db2 "call rdsadmin.update_db_param(
    'database_name', 
    'parameter_to_modify', 
    'changed_value',
    'restart_database')"
```

### 参数
<a name="db2-sp-update-db-param-parameters"></a>

以下参数为必需参数：

*database\$1name*  
要运行其任务的数据库的名称。数据类型为 `varchar`。

*parameter\$1to\$1modify*  
要修改的参数的名称。数据类型为 `varchar`。有关更多信息，请参阅 [Amazon RDS for Db2 参数](db2-supported-parameters.md)。

*changed\$1value*  
要将参数值更改为的值。数据类型为 `varchar`。

以下参数为可选参数：

*restart\$1database*  
指定在需要重新启动时 RDS 是否重新启动数据库。数据类型为 `varchar`。要修改 `logprimary` 和 `logfilsiz`，请将此参数设置为 `'YES'`。

### 使用说明
<a name="db2-sp-update-db-param-usage-notes"></a>

有关如何检查数据库参数更新状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.update_db_param` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-update-db-param-examples"></a>

**示例 1：更新参数**

以下示例将名为 `TESTDB` 的数据库的 `archretrydelay` 参数更新为 `100`：

```
db2 "call rdsadmin.update_db_param(
    'TESTDB', 
    'archretrydelay', 
    '100')"
```

**示例 2：延迟对象验证**

以下示例推迟了对在名为 `TESTDB` 的数据库上创建的对象的验证，以避免依赖性检查：

```
db2 "call rdsadmin.update_db_param(
    'TESTDB', 
    'auto_reval', 
    'deferred_force')"
```

## rdsadmin.set\$1configuration
<a name="db2-sp-set-configuration"></a>

配置数据库的特定设置。

### 语法
<a name="db2-sp-set-configuration-syntax"></a>

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

### 参数
<a name="db2-sp-set-configuration-parameters"></a>

以下参数为必需参数：

*name*  
配置设置的名称。数据类型为 `varchar`。

*值*  
配置设置的值。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-set-configuration-usage-notes"></a>

下表显示了您可以使用 `rdsadmin.set_configuration` 控制的配置设置。


| 名称 | 描述 | 
| --- | --- | 
|  `RESTORE_DATABASE_NUM_BUFFERS`  |  还原操作期间要创建的缓冲区数量。此值必须小于数据库实例类的总内存大小。如果未配置此设置，则 Db2 会确定在还原操作期间要使用的值。有关更多信息，请参阅 IBM Db2 文档中的 [RESTORE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database)。  | 
|  `RESTORE_DATABASE_PARALLELISM`  |  在还原操作期间要创建的缓冲区操纵器的数量。此值必须小于数据库实例的 vCPU 数量的两倍。如果未配置此设置，则 Db2 会确定在还原操作期间要使用的值。有关更多信息，请参阅 IBM Db2 文档中的 [RESTORE DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-restore-database)。  | 
|  `RESTORE_DATABASE_NUM_MULTI_PATHS`  |  从 Amazon S3 操作还原期间要使用的路径（或 I/O 流）数量。要使用此配置设置，必须有多个备份文件。此值可以提高还原包含大量数据的数据库时的性能，因为它可以并行还原多个数据库备份文件。我们建议您将此值设置为与数据库备份文件的数量相匹配。有关更多信息，请参阅 IBM Db2 文档中的 [BACKUP DATABASE 命令](https://www.ibm.com/docs/en/db2/11.5?topic=commands-backup-database)。  | 
|  `USE_STREAMING_RESTORE`  |  指定是否在还原期间直接流式传输备份数据，而不是先将整个备份下载到 RDS for Db2 数据库实例，然后再提取。将 `USE_STREAMING_RESTORE` 设置为 `TRUE` 可显著降低存储需求并可提高还原性能。此设置要求使用 IBM Db2 引擎版本 11.5.9.0.sb00063198.r1 或更高版本，并要求通过数据库的弹性网络接口（ENI）进行 Amazon S3 连接。有关更多信息，请参阅 IBM Db2 文档中的 [Remote storage](https://www.ibm.com/docs/en/db2/11.5.x?topic=databases-remote-storage)。  | 

### 示例
<a name="db2-sp-set-configuration-examples"></a>

**示例 1：指定要创建的缓冲区数量**

以下示例将 `RESTORE_DATABASE_NUM_BUFFERS` 配置设置为 `150`。

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_NUM_BUFFERS', 
    '150')"
```

**示例 2：指定要创建的缓冲区操纵符的数量**

以下示例将 `RESTORE_DATABASE_PARALLELISM` 配置设置为 `8`。

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_PARALLELISM', 
    '8')"
```

**示例 3：指定还原期间要使用的路径或 I/O 流的数量**

以下示例将 `RESTORE_DATABASE_NUM_MULTI_PATHS` 配置设置为 `5`。

```
db2 "call rdsadmin.set_configuration(
    'RESTORE_DATABASE_NUM_MULTI_PATHS', 
    '5')"
```

**示例 4：将还原设置为流式传输备份数据**

以下示例将 `USE_STREAMING_RESTORE` 配置设置为 `TRUE`。

```
db2 "call rdsadmin.set_configuration(
    'USE_STREAMING_RESTORE', 
    'TRUE')"
```

## rdsadmin.show\$1configuration
<a name="db2-sp-show-configuration"></a>

返回可使用存储过程 `rdsadmin.set_configuration` 进行设置的当前设置。

### 语法
<a name="db2-sp-show-configuration-syntax"></a>

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

### 参数
<a name="db2-sp-show-configuration-parameters"></a>

以下参数为可选参数：

*name*  
要返回其相关信息的配置设置的名称。数据类型为 `varchar`。  
以下配置名称有效：  
+ `RESTORE_DATABASE_NUM_BUFFERS`：在还原操作期间要创建的缓冲区数量。
+ `RESTORE_DATABASE_PARALLELISM`：在还原操作期间要创建的缓冲区操纵器的数量。
+ `RESTORE_DATABASE_NUM_MULTI_PATHS` – 从 Amazon S3 操作还原期间要使用的路径（或 I/O 流）数量。
+ `USE_STREAMING_RESTORE` – 指定是否在还原期间直接流式传输备份数据，而不是先将整个备份数据下载到 RDS for Db2 数据库实例，然后再提取。

### 使用说明
<a name="db2-sp-show-configuration-usage-notes"></a>

如果您未指定配置设置的名称，则 `rdsadmin.show_configuration` 返回您可以使用存储过程 `rdsadmin.set_configuration` 进行设置的所有配置设置的信息。

### 示例
<a name="db2-sp-show-configuration-examples"></a>

以下示例返回有关当前 `RESTORE_DATABASE_PARALLELISM` 配置的信息。

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

## rdsadmin.backup\$1database
<a name="db2-sp-backup-database"></a>

将数据库从 RDS for Db2 数据库实例备份到 Amazon S3 存储桶。

### 语法
<a name="db2-sp-backup-database-syntax"></a>

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

### 参数
<a name="db2-sp-backup-database-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
RDS for Db2 数据库实例上要备份的目标数据库的名称。数据类型为 `varchar`。  
该数据库必须存在于数据库实例中。您无法备份 `rdsadmin` 数据库。

*s3\$1bucket\$1name*  
您希望备份所在的 Amazon S3 存储桶的名称。数据类型为 `varchar`。  
S3 存储桶在调用 `rdsadmin.backup_database` 之前必须存在，必须与 RDS for Db2 数据库实例中您要备份的目标数据库位于同一个 AWS 区域中，并且可通过连接到数据库实例的 IAM 角色进行访问。

*s3\$1prefix*  
指向 Amazon S3 的路径的前缀，RDS for Db2 将向其中上传备份文件。数据类型为 `varchar`。  
前缀限制为 1024 个字符。它不得包含前导或尾部斜杠（/）。由于 IBM  流式传输到 Amazon S3 的限制，我们建议前缀包含子目录。  
为了更好地管理文件，RDS for Db2 在 *s3\$1prefix* 后创建附加目录。RDS for Db2 将所有备份文件上传到 *s3\$1prefix/dbi\$1resource\$1id/db\$1name*。如果将 *num\$1files* 设置为大于 `1`，则 *db\$1name* 目录将包含不止一个备份文件。  
以下是用于存储备份文件的 Amazon S3 位置示例。在示例中，`backups/daily` 是为 *s3\$1prefix* 参数设置的值。  

```
backups/daily/db-5N7FXOY4GDP7RG2NSH2ZTAI2W4/SAMPLEDB
```

*backup\$1type*  
决定数据库在备份期间是否保持可用状态的备份类型。数据类型为 `varchar`。  
有效值：  
+ `OFFLINE`：数据库在备份期间不可用。这种类型速度更快，但会导致停机。
+ `ONLINE`：数据库在备份期间保持可用。默认情况下，将 `ONLINE` 设置为 `INCLUDE LOGS`。

以下参数可选：

*compression\$1option*  
所使用的压缩算法的类型，它会影响备份时间、CPU 使用率和存储成本。数据类型为 `varchar`。默认值为 `NONE`。  
有效值：  
+ `NONE`：文件大小最大，CPU 使用率最低，存储成本最低。
+ `STANDARD`：标准 Db2 压缩。使用 `libdb2compr.so`。
+ `ZLIB`：增强型 Db2 压缩。使用 `libdb2zcompr.so`，但占用更多的 CPU 资源，存储成本最高。

*util\$1impact\$1priority*  
控制备份对系统资源影响的设置。数据类型为 `integer`。有效值：`1` – `100`（从低到高）。默认值为 `50`。  
较低的值可以减少备份对系统资源的影响，但可能会增加备份数据库所需的时间。较高的值可能会更快地完成数据库的备份，但可能会影响其他操作。实际影响取决于整体系统利用率和 `util_impact_lim` 设置。您可以在参数组中查看和修改 `util_impact_lim` 设置。有关更多信息，请参阅 [Amazon RDS for Db2 参数](db2-supported-parameters.md)。

*num\$1files*  
到 Amazon S3 的并行上传流的数目。数据类型为 `integer`。有效值：`1` – `256`。  
我们建议您仅在观察到 Amazon RDS 自动计算的默认备份性能后才设置此参数。较高的值可以提高大型备份的性能，尤其是在高带宽连接的情况下，但是在某个时候，较高的值会降低性能。此外，请务必考虑您的可用系统资源和网络容量。

*parallelism*  
备份实用程序可以并行读取的表空间数量。数据类型为 `integer`。有效值：`1` – `256`。  
我们建议您仅在观察了备份在 Db2 引擎自动计算的默认最优值下的性能后，再设置此参数。如果您设置此参数，Amazon RDS 将根据可用的处理器进行验证，如果处理能力不足，则不会执行备份请求。

*num\$1buffers*  
要使用的缓冲区数量。数据类型为 `integer`。有效值：`1` – `268435456`。  
我们建议您仅在观察到 Amazon RDS 根据内存自动计算的默认备份性能后才设置此参数。如果您设置此参数，Amazon RDS 会根据可用内存进行验证，如果可用内存不足，则不会执行备份请求。如果您要备份到多个位置（`num_files` 设置为大于 `1`），则缓冲区数量较多可以提高性能。如果未将 `compression_option` 设置为 `NONE`，则可以通过增加 `num_buffers` 和 `parallelism` 来提高性能。

### 使用说明
<a name="db2-sp-backup-database-usage-notes"></a>

此存储过程创建异步备份任务，这些任务使用 Amazon S3 集成将数据库的备份直接流式传输到您的 Amazon S3 存储桶。您可以从本地服务器或 RDS for Db2 数据库实例进行备份，将它们存储到 Amazon S3 中，然后在需要的任何位置还原它们。有关将数据库还原到 RDS for Db2 数据库实例的信息，请参阅 [rdsadmin.restore\$1database](#db2-sp-restore-database)。

在调用存储过程之前，请查看以下注意事项：
+ 一次只能备份一个数据库。
+ 您不能在数据库实例上同时执行备份和还原。
+ 不支持具有 AWS KMS 的 Amazon S3 服务器端加密（SSE-KMS）。即使 S3 存储桶设置为 SSE-KMS，上传到 S3 存储桶的文件也不会使用 SSE-KMS 加密。
+ 要将备份文件流式传输到 Amazon S3，您必须已经配置了集成。有关更多信息，请参阅 [将 Amazon RDS for Db2 数据库实例与 Amazon S3 集成](db2-s3-integration.md)。
+ 要让 RDS for Db2 数据库实例能够与 Amazon S3 交互，您必须有一个 VPC 和一个供私有子网使用的 Amazon S3 网关端点。有关更多信息，请参阅[步骤 1：为 Amazon S3 创建 VPC 网关端点](db2-troubleshooting.md#db2-creating-endpoint)和[步骤 2：确认适用于 Amazon S3 的 VPC 网关端点存在](db2-troubleshooting.md#db2-confirming-endpoint)。

在调用 `rdsadmin.backup_database` 之前，必须连接到 `rdsadmin` 数据库。在以下示例中，将 *master\$1username* 和 *master\$1password* 替换为 RDS for Db2 数据库实例信息：

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

备份数据库后，请务必终止连接。

```
terminate
```

有关如何检查数据库备份状态的信息，请参阅 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.backup_database` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-backup-database-examples"></a>

所有示例都将名为 `MYDB` 的数据库备份到名为 `amzn-s3-demo-bucket` 的 Amazon S3 存储桶，并将 *s3\$1prefix* 设置为 `backups/daily`。

**示例 1：指定数据库离线且不可用，使用中等利用率和单个上传流**

在下面的示例中，数据库处于离线状态，这样速度更快，但意味着备份期间数据库不可用。该示例不对文件进行压缩，对系统资源具有中等影响，并使用单个上传流传输到 Amazon S3。

```
db2 call "rdsadmin.backup_database(
    ?, 
    'MYDB',
    'amzn-s3-demo-bucket', 
    'backups/daily',
    'OFFLINE',
    'NONE', 
    50, 
    1)"
```

**示例 \$12：指定数据库联机且可用，并具有增强型压缩、中等利用率和少量并行上传流**

在以下示例中，数据库在备份期间处于联机状态并且可用。该示例执行增强型压缩，这会导致文件大小更小，但占用大量 CPU 资源。它对系统资源的影响略高于中等程度，并使用五个上传流上传到 Amazon S3。

```
db2 call "rdsadmin.backup_database(
    ?, 
    'MYDB',
    'amzn-s3-demo-bucket', 
    'backups/daily',
    'ONLINE',
    'ZLIB', 
    60, 
    5)"
```

**示例 3：指定数据库脱机且不可用，使用默认值和系统计算**

在下面的示例中，数据库处于离线状态，这样速度更快，但意味着备份期间数据库不可用。该示例使用文件的默认压缩和对系统资源的影响。同时，它允许 RDS for Db2 自动计算并行上传到 Amazon S3 的流数、并行读取的表空间数量以及使用的缓冲区。

```
db2 "call rdsadmin.backup_database(
    ?, 
    'MYDB', 
    'amzn-s3-demo-bucket',
    'backups/daily', 
    'OFFLINE')"
```

**示例 \$14：指定数据库脱机且不可用，没有压缩、高利用率和自定义计算**

在下面的示例中，数据库处于离线状态，这样速度更快，但意味着备份期间数据库不可用。该示例不对文件进行压缩，对系统资源的影响较大，并使用 20 个上传流传输到 Amazon S3。它设置了可并行读取的表空间最大数量，如果处理能力不足，可能导致备份请求失败。同时，它还设置了最大缓冲区数量，如果内存不足，也可能导致备份请求失败。

```
db2 "call rdsadmin.backup_database(
    ?, 
    'MYDB', 
    'amzn-s3-demo-bucket', 
    'backups/daily', 
    'OFFLINE', 
    'NONE', 
    90, 
    20, 
    256, 
    268435456)"
```

## rdsadmin.restore\$1database
<a name="db2-sp-restore-database"></a>

从 Amazon S3 存储桶还原到 RDS for Db2 数据库实例。

### 语法
<a name="db2-sp-restore-database-syntax"></a>

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

### 参数
<a name="db2-sp-restore-database-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要在 RDS for Db2 中恢复的目标数据库的名称。数据类型为 `varchar`。  
例如，如果源数据库名称为 `TESTDB`，而您将 *database\$1name* 设置为 `NEWDB`，则 Amazon RDS 将恢复 `NEWDB` 作为源数据库。

*s3\$1bucket\$1name*  
备份所在的 Amazon S3 存储桶的名称。数据类型为 `varchar`。

*s3\$1prefix*  
下载期间用于文件匹配的前缀。数据类型为 `varchar`。  
如果此参数为空，则将处理 Amazon S3 存储桶中的所有文件。以下是示例前缀：  

```
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
```

*restore\$1timestamp*  
数据库备份映像的时间戳。数据类型为 `varchar`。  
时间戳包含在备份文件名中。例如，`20230615010101` 是文件名 `SAMPLE.0.rdsdb.DBPART000.20230615010101.001` 的时间戳。

*backup\$1type*  
备份的类型。数据类型为 `varchar`。有效值：`OFFLINE`、`ONLINE`。  
使用 `ONLINE` 进行停机时间接近零的迁移。有关更多信息，请参阅 [针对 Amazon RDS for Db2 从 Linux 迁移到 Linux，停机时间接近零](db2-near-zero-downtime-migration.md)。

### 使用说明
<a name="db2-sp-restore-database-usage-notes"></a>

您可以使用此存储过程将 Db2 数据库迁移到 RDS for Db2 数据库实例。有关更多信息，请参阅 [使用 AWS 服务将数据从 Db2 迁移到 Amazon RDS for Db2](db2-migration-approaches.md)。您也可以使用此存储过程创建同一数据库的多个副本但使用不同的数据库名称，这些副本使用相同的还原映像。

在调用存储过程之前，请查看以下注意事项：
+ 在还原数据库之前，您必须为 RDS for Db2 数据库实例预调配存储空间，其大小大于磁盘上的原始 Db2 数据库。如果您启用了 `USE_STREAMING_RESTORE`，则还原备份时，Amazon RDS 会将备份文件直接从 S3 存储桶流式传输到 RDS for Db2 数据库实例。如果您未启用 `USE_STREAMING_RESTORE`，则必须为 RDS for Db2 数据库实例预置存储空间，其大小等于或大于备份大小加上磁盘上原始 Db2 数据库大小之和。有关更多信息，请参阅 [Insufficient disk space](db2-troubleshooting.md#restore-database-sp-insufficient-disk-space)。
+ 还原备份时，Amazon RDS 会在您的 RDS for Db2 数据库实例上提取备份文件。每个备份文件不得超过 5TB。如果备份文件超过 5 TB，则必须将备份文件拆分为较小的文件。
+ 要使用 `rdsadmin.restore_database` 存储过程还原所有文件，请勿在文件名中的时间戳后加上文件号后缀。例如，*s3\$1prefix* `backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101` 还原以下文件：

  ```
  SAMPLE.0.rdsdb.DBPART000.20230615010101.001
  SAMPLE.0.rdsdb.DBPART000.20230615010101.002
  SAMPLE.0.rdsdb.DBPART000.20230615010101.003
  SAMPLE.0.rdsdb.DBPART000.20230615010101.004
  SAMPLE.0.rdsdb.DBPART000.20230615010101.005
  ```
+ RDS for Db2 不支持非自动存储。有关更多信息，请参阅 [Tablespaces not restored](db2-troubleshooting.md#restore-database-sp-tablespaces-not-restored)。
+ RDS for Db2 不支持非防护例程。有关更多信息，请参阅 [Non-fenced routines not allowed](db2-troubleshooting.md#restore-database-sp-non-fenced-routines)。
+ 要提高数据库还原操作的性能，您可以配置缓冲区和缓冲区操纵器的数量以及供 RDS 使用的多个备份路径的数量。为了优化存储使用率并提高性能，您还可以直接从 Amazon S3 流式传输备份。要检查当前配置，请使用 [rdsadmin.show\$1configuration](#db2-sp-show-configuration)。要更改配置，请使用 [rdsadmin.set\$1configuration](#db2-sp-set-configuration)。

要在还原数据库后使数据库联机并应用其他事务日志，请参阅[rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)。

要了解数据库的还原状态，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

要查看调用 `rdsadmin.restore_database` 时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-restore-database-examples"></a>

以下示例使用带有 *s3\$1prefix* `backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101` 的单个文件或多个文件还原脱机备份：

```
db2 "call rdsadmin.restore_database(
    ?,
    'SAMPLE',
    'amzn-s3-demo-bucket',
    'backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101',
    20230615010101,
    'OFFLINE')"
```

## rdsadmin.rollforward\$1database
<a name="db2-sp-rollforward-database"></a>

通过调用 [rdsadmin.restore\$1database](#db2-sp-restore-database) 还原数据库后，使数据库联机并应用其他事务日志。

### 语法
<a name="db2-sp-rollforward-database-syntax"></a>

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

### 参数
<a name="db2-sp-rollforward-database-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要对其执行操作的数据库的名称。数据类型为 `varchar`。

*s3\$1bucket\$1name*  
备份所在的 Amazon S3 存储桶的名称。数据类型为 `varchar`。

*s3\$1prefix*  
下载期间用于文件匹配的前缀。数据类型为 `varchar`。  
如果此参数为空，则将下载 S3 存储桶中的所有文件。以下示例是示例前缀：  

```
backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101
```

以下输入参数为可选参数：

*rollforward\$1to\$1option*  
您想要向前滚动到的点。数据类型为 `varchar`。有效值：`END_OF_LOGS`、`END_OF_BACKUP`（时间戳格式为 `YYYY-MM-DD-HH.MM.SS`）。默认值为 `END_OF_LOGS`。

*complete\$1rollforward*  
指定是否完成向前滚动过程。数据类型为 `varchar`。默认值为 `TRUE`。  
如果为 `TRUE`，则在完成后，数据库处于联机状态并且可以访问。如果为 `FALSE`，则数据库将保持 `ROLL-FORWARD PENDING` 状态。

### 使用说明
<a name="db2-sp-rollforward-database-usage-notes"></a>

可以使用 `rds.rollforward_database` 通过包含的日志进行联机备份，这些日志是在许多不同的场景中本地生成的。

**场景 1：还原数据库、向前滚动包含的日志，然后使数据库联机**

完成 `rdsadmin.restore_database()` 后，使用[示例 1](#db2-sp-rollforward-database-examples) 中的语法来使包含事务日志的数据库联机。

**场景 2：使数据库联机，但不向前滚动包含的日志。**

完成 `rdsadmin.restore_database()` 后，使用[示例 2](#db2-sp-rollforward-database-examples) 中的语法来使不包含事务日志的数据库联机。

**场景 3：在备份中向前滚动包含的日志，并在本地生成其它事务日志时应用这些日志**

完成 `rdsadmin.restore_database()` 后，使用[示例 3 或示例 4](#db2-sp-rollforward-database-examples) 中的语法，在不使数据库联机的情况下向前滚动日志。

如果将 `complete_rollforward` 设置为 `FALSE`，则您的数据库处于 `ROLL-FORWARD PENDING` 状态并处于脱机状态。要使数据库联机，您必须调用 [rdsadmin.complete\$1rollforward](#db2-sp-complete-rollforward)。

有关如何检查数据库向前滚动状态的信息，请参阅[rdsadmin.rollforward\$1status](#db2-sp-rollforward-status)。

### 示例
<a name="db2-sp-rollforward-database-examples"></a>

**示例 1：使包含事务日志的数据库联机**

以下示例向前滚动到包含事务日志的数据库的联机备份，然后使数据库联机：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    null,
    null,
    'END_OF_LOGS',
    'TRUE')"
```

**示例 2：使不包含事务日志的数据库联机**

以下示例向前滚动到不包含事务日志的数据库的联机备份，然后使数据库联机：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'logsfolder/,
    'END_OF_BACKUP',
    'TRUE')"
```

**示例 3：不让包含事务日志的数据库联机**

以下示例向前滚动到包含事务日志的数据库的联机备份，但不会使数据库联机：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    null,
    'onlinebackup/TESTDB',
    'END_OF_LOGS',
    'FALSE')"
```

**示例 4：不让包含其他事务日志的数据库联机**

以下示例向前滚动到包含其他事务日志的数据库的联机备份，但不会使数据库联机：

```
db2 "call rdsadmin.rollforward_database(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'logsfolder/S0000155.LOG',
    'END_OF_LOGS',
    'FALSE')"
```

## rdsadmin.rollforward\$1status
<a name="db2-sp-rollforward-status"></a>

返回 `ROLLFORWARD DATABASE database_name QUERY STATUS` 的输出。

### 语法
<a name="db2-sp-rollforward-status-syntax"></a>

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

### 参数
<a name="db2-sp-rollforward-status-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要对其执行操作的数据库的名称。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-rollforward-status-usage-notes"></a>

调用 [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database) 后，可以调用 `rdsadmin.rollforward_status` 来检查数据库中向前滚动的状态。

有关如何检查此存储过程的状态的信息，请参阅 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

## rdsadmin.complete\$1rollforward
<a name="db2-sp-complete-rollforward"></a>

从 `ROLL-FORWARD PENDING` 状态使数据库联机。

### 语法
<a name="db2-sp-complete-rollforward-syntax"></a>

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

### 参数
<a name="db2-sp-complete-rollforward-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要实现联机的数据库的名称。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-complete-rollforward-usage-notes"></a>

如果您在 `complete_rollforward` 设置为 `FALSE` 的情况下调用了 [rdsadmin.rollforward\$1database](#db2-sp-rollforward-database)，则您的数据库处于 `ROLL-FORWARD PENDING` 状态并处于脱机状态。要完成向前滚动过程并使数据库联机，请调用 `rdsadmin.complete_rollforward`。

有关检查完成向前滚动过程的状态的信息，请参阅 [rdsadmin.rollforward\$1status](#db2-sp-rollforward-status)。

### 示例
<a name="db2-sp-complete-rollforward-examples"></a>

以下示例使 TESTDB 数据库联机：

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

## rdsadmin.db2pd\$1command
<a name="db2-sp-db2pd-command"></a>

收集有关 RDS for Db2 数据库的信息。

### 语法
<a name="db2-sp-db2pd-command-syntax"></a>

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

### 参数
<a name="db2-sp-db2pd-command-parameters"></a>

以下输入参数是必需参数：

*db2pd\$1cmd*  
要运行的 `db2pd` 命令的名称。数据类型为 `varchar`。  
参数必须以连字符开头。有关参数列表，请参阅 IBM Db2 文档中的 [db2pd - Monitor and troubleshoot Db2 database command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2pd-monitor-troubleshoot-db2-engine-activities)。  
不支持以下选项：  
+ `-addnode`
+ `-alldatabases`
+ `-alldbp`
+ `-alldbs`
+ `-allmembers`
+ `-alm_in_memory`
+ `-cfinfo`
+ `-cfpool`
+ `-command`
+ `-dbpartitionnum`
+ `-debug`
+ `-dump`
+ `-everything`
+ `-file | -o`
+ `-ha`
+ `-interactive`
+ `-member`
+ `-pages`
**注意**  
`-pages summary`支持。
+ `-pdcollection`
+ `-repeat`
+ `-stack`
+ `-totalmem`
不支持 `file` 子选项，例如 `db2pd -db testdb -tcbstats file=tcbstat.out`。  
不支持使用 `stacks` 选项，如 `db2pd -edus interval=5 top=10 stacks`。

### 使用说明
<a name="db2-sp-db2pd-command-usage-notes"></a>

此存储过程收集的信息有助于监控 RDS for Db2 数据库并对其进行故障排除。

该存储过程使用 IBM `db2pd` 实用程序运行各种命令。`db2pd` 实用程序需要 `SYSADM` 授权，而 RDS for Db2 主用户却没有此授权。但是，使用 Amazon RDS 存储过程，主用户可以使用该实用程序运行各种命令。有关该实用程序的更多信息，请参阅 IBM Db2 文档中的 [db2pd - Monitor and troubleshoot Db2 database command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2pd-monitor-troubleshoot-db2-engine-activities)。

输出限制为最大 2 GB。

有关检查收集关于数据库的信息的状态的信息，请参阅 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 示例
<a name="db2-sp-db2pd-command-examples"></a>

**示例 1：返回数据库实例的正常运行时间**

以下示例返回 RDS for Db2 数据库实例的正常运行时间：

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

**示例 2：返回数据库的正常运行时间**

以下示例返回名为 `TESTDB` 的数据库的正常运行时间：

```
db2 "call rdsadmin.db2pd_command('-db TESTDB -')"
```

**示例 3：返回数据库实例的内存使用情况**

以下示例返回 RDS for Db2 数据库实例的内存使用情况：

```
db2 "call rdsadmin.db2pd_command('-dbptnmem')"
```

**示例 4：返回数据库实例和数据库的内存集**

以下示例返回 RDS for Db2 数据库实例和名为 `TESTDB` 的数据库的内存集：

```
db2 "call rdsadmin.db2pd_command('-inst -db TESTDB -memsets')"
```

## rdsadmin.force\$1application
<a name="db2-sp-force-application"></a>

强制应用程序退出 RDS for Db2 数据库。

### 语法
<a name="db2-sp-force-application-syntax"></a>

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

### 参数
<a name="db2-sp-force-application-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*应用程序*  
您要强制退出 RDS for Db2 数据库的应用程序。数据类型为 `varchar`。有效值：`ALL` 或 *application\$1handle*。  
用逗号分隔多个应用程序的名称。示例：“*application\$1handle\$11*, *application\$1handle\$12*”。

### 使用说明
<a name="db2-sp-force-application-usage-notes"></a>

此存储过程会强制所有应用程序退出数据库，以便您可以执行维护。

此存储过程使用 IBM `FORCE APPLICATION` 命令。`FORCE APPLICATION` 命令需要 `SYSADM`、`SYSMAINT` 或 `SYSCTRL` 授权，而 RDS for Db2 主用户却没有此类授权。但是，使用 Amazon RDS 存储过程，主用户可以使用该命令。有关更多信息，请参阅 IBM Db2 文档中的 [FORCE APPLICATION command](https://www.ibm.com/docs/en/db2/11.1?topic=commands-force-application)。

有关检查强制应用程序退出数据库的状态的信息，请参阅 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 示例
<a name="db2-sp-force-application-examples"></a>

**示例 1：指定所有应用程序**

以下示例强制所有应用程序退出 RDS for Db2 数据库：

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

**示例 2：指定多个应用程序**

以下示例强制应用程序句柄 `9991`、`8891` 和 `1192` 退出 RDS for Db2 数据库：

```
db2 "call rdsadmin.force_application(
    ?,
    '9991, 8891, 1192')"
```

## rdsadmin.set\$1archive\$1log\$1retention
<a name="db2-sp-set-archive-log-retention"></a>

配置为指定的 RDS for Db2 数据库保留归档日志文件的时间量（以小时为单位）。

### 语法
<a name="db2-sp-set-archive-log-retention-syntax"></a>

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

### 参数
<a name="db2-sp-set-archive-log-retention-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要配置其归档日志保留期的数据库的名称。数据类型为 `varchar`。

*archive\$1log\$1retention\$1hours*  
要保留归档日志文件的小时数。数据类型为 `smallint`。默认值为 `0`，最大值为 `840`（35 天）。  
如果值为 `0`，则 Amazon RDS 不会保留归档日志文件。

### 使用说明
<a name="db2-sp-set-archive-log-retention-usage-notes"></a>

默认情况下，RDS for Db2 会将日志保留 5 分钟。如果您使用诸如 AWS DMS [用于进行更改数据捕获（CDC）] 或 IBM Q Replication 之类的复制工具，建议您在这些工具中将日志保留期设置为 5 分钟以上。

您可以通过调用 [rdsadmin.show\$1archive\$1log\$1retention](#db2-sp-show-archive-log-retention) 来查看当前的归档日志保留期设置。

您无法在 `rdsadmin` 数据库上配置归档日志保留期设置。

### 示例
<a name="db2-sp-set-archive-log-retention-examples"></a>

**示例 1：设置保留时间**

以下示例将名为 `TESTDB` 的数据库的归档日志保留时间设置为 24 小时。

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,
    'TESTDB', 
    '24')"
```

**示例 2：禁用保留时间**

以下示例禁用名为 `TESTDB` 的数据库的归档日志保留期。

```
db2 "call rdsadmin.set_archive_log_retention(
    ?,
    'TESTDB', 
    '0')"
```

## rdsadmin.show\$1archive\$1log\$1retention
<a name="db2-sp-show-archive-log-retention"></a>

返回指定数据库的当前归档日志保留期设置。

### 语法
<a name="db2-sp-show-archive-log-retention-syntax"></a>

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

### 参数
<a name="db2-sp-show-archive-log-retention-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要显示其归档日志保留期设置的数据库的名称。数据类型为 `varchar`。

### 示例
<a name="db2-sp-show-archive-log-retention-examples"></a>

以下示例显示名为 `TESTDB` 的数据库的归档日志保留期设置。

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

## rdsadmin.list\$1archive\$1log\$1information
<a name="db2-sp-list-archive-log-information"></a>

返回有关归档日志文件的详细信息，例如指定数据库的各个日志文件的大小、创建日期和时间以及名称。它还返回数据库中日志文件使用的总存储量。

### 语法
<a name="db2-sp-list-archive-log-information-syntax"></a>

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

### 参数
<a name="db2-sp-list-archive-log-information-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要列出其归档日志信息的数据库的名称。数据类型为 `varchar`。

### 示例
<a name="db2-sp-list-archive-log-information-examples"></a>

以下示例返回名为 `TESTDB` 的数据库的归档日志信息。

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

## rdsadmin.enable\$1archive\$1log\$1copy
<a name="db2-sp-enable_archive_log_copy"></a>

启用将 RDS Db2 数据库归档日志复制到 Amazon S3。

### 语法
<a name="db2-sp-enable_archive_log_copy-syntax"></a>

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

### 参数
<a name="db2-sp-enable_archive_log_copy-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要为其启用将归档日志复制到 Amazon S3 的数据库的名称。数据类型为 `varchar`。

### 示例
<a name="db2-sp-enable_archive_log_copy-examples"></a>

以下示例为名为 `TESTDB` 的数据库启用归档日志复制。

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

## rdsadmin.disable\$1archive\$1log\$1copy
<a name="db2-sp-disable_archive_log_copy"></a>

禁用将 RDS Db2 数据库归档日志复制到 Amazon S3。

### 语法
<a name="db2-sp-disable_archive_log_copy-syntax"></a>

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

### 参数
<a name="db2-sp-disable_archive_log_copy-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要为其禁用将归档日志复制到 Amazon S3 的数据库的名称。数据类型为 `varchar`。

### 示例
<a name="db2-sp-disable_archive_log_copy-examples"></a>

以下示例为名为 `TESTDB` 的数据库禁用归档日志复制。

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

## rdsadmin.fgac\$1command
<a name="db2-sp-fgac-command"></a>

运行精细访问控制（FGAC）命令。

### 语法
<a name="db2-sp-fgac-command-syntax"></a>

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

### 参数
<a name="db2-sp-fgac-command-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要对其运行 FGAC 命令的数据库的名称。数据类型为 `varchar`。

*fgac\$1cmd*  
要运行的精细访问控制命令。数据类型为 `varchar`。  
以下命令有效：  
+ `ALTER MASK`：更改行列访问控制（RCAC）中的现有列掩蔽。
+ `ALTER PERMISSION`：更改 RCAC 中现有行权限的属性。
+ `ALTER SECURITY POLICY`：更改 RCAC 的现有安全策略。
+ `ALTER SECURITY LABEL`：更改基于标签的访问控制（LBAC）中现有安全标签的属性。
+ `ALTER TABLE`：更改表结构，包括添加 RCAC 或 LBAC 控件。
+ `CREATE MASK`：为 RCAC 创建新的列掩蔽。
+ `CREATE PERMISSION`：为 RCAC 创建新的行权限。
+ `CREATE SECURITY LABEL`：为 LBAC 创建新的安全标签。
+ `CREATE SECURITY POLICY`：为 RCAC 创建新的安全策略。
+ `DROP MASK`：删除现有的列掩蔽。
+ `DROP PERMISSION`：删除现有的行权限。
+ `DROP SECURITY LABEL`：从 LBAC 中删除安全标签。
+ `DROP SECURITY POLICY`：删除现有的 RCAC 安全策略。
+ `GRANT EXEMPTION ON RULE`：支持用户绕过特定的 LBAC 规则。
+ `GRANT SECURITY LABEL`：为用户分配 LBAC 安全标签。
+ `REVOKE EXEMPTION ON RULE`：移除用户对 LBAC 规则的豁免。
+ `REVOKE SECURITY LABEL`：移除用户的 LBAC 安全标签。

### 使用说明
<a name="db2-sp-fgac-command-usage-notes"></a>

此存储过程用于在 RDS for Db2 数据库实例中对表数据进行行级或列级访问控制。RDS for Db2 在数据库上支持两种类型的 FGAC：
+ 基于标签的访问控制（LBAC）
+ 行列访问控制（RCAC）

在调用存储过程之前，请查看以下注意事项：
+ 要对单引号（'）进行转义，请额外使用一个单引号。以下示例说明如何对 `'apple'`、`'banana'` 和 `'fruit'` 进行转义。

  ```
  db2 "call rdsadmin.fgac_command(
      ?,
      'testdb',
      'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"
  ```

  ```
  db2 "call rdsadmin.fgac_command(
      ?, 
      'testdb', 
      'CREATE SECURITY LABEL COMPONENT FRUITTREE TREE(''fruit'' ROOT, ''apple'' UNDER ''fruit'', ''banana'' UNDER ''fruit'')')"
  ```
+ 要对方括号（[]）进行转义，请使用反斜杠（\$1）。以下示例显示了如何对 `[''apple'',''banana'']` 进行转义。

  ```
  db2 "call rdsadmin.fgac_command(
      ?, '
      testdb', 
      'CREATE SECURITY LABEL COMPONENT FRUITARRAY ARRAY\[''apple'',''banana''\]')"
  ```

### 示例
<a name="db2-sp-fgac-command-examples"></a>

以下示例全部在名为 `testdb` 的数据库上运行 FGAC 命令。

**示例 1：创建名为 `FRUITSET` 的新安全标签** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE SECURITY LABEL COMPONENT FRUITSET SET{''apple'',''banana''}')"
```

**示例 2：为 `EMP_ID` 列创建新掩蔽，当 `EMP_ID` 设置为小于三时启用此掩蔽**

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE MASK id_MASK ON EMPLOYEE FOR COLUMN EMP_ID RETURN CASE WHEN (EMP_ID < 3) THEN EMP_ID ELSE NULL END ENABLE')"
```

**示例 3：为 `DEPARTMENT` 列创建一个新掩码，该掩码在 `SESSION_USER` 设为 `security_user` 时启用** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE MASK DEPARTMENT_MASK ON EMPLOYEE FOR COLUMN DEPARTMENT RETURN CASE  WHEN SESSION_USER = ''security_user'' THEN DEPARTMENT ELSE NULL END ENABLE')"
```

**示例 4：创建名为 `treelabel` 的新安全标签** 

```
db2 "call rdsadmin.fgac_command(
    ?,
    'testdb',
    'CREATE SECURITY LABEL COMPONENT treelabel  TREE(''COMPANY'' ROOT, ''HR'' UNDER ''COMPANY'', ''FINANCE'' UNDER ''COMPANY'', ''IT'' UNDER ''COMPANY'')')"
```

## rdsadmin.db2support\$1command
<a name="db2-sp-db2support-command"></a>

收集有关 RDS for Db2 数据库的诊断信息并将这些信息上传到 Amazon S3 存储桶。

### 语法
<a name="db2-sp-db2support-command-syntax"></a>

```
db2 "call rdsadmin.db2support_command(
    ?,
    'database_name',
    's3_bucket_name',
    's3_prefix')"
```

### 参数
<a name="db2-sp-db2support-command-parameters"></a>

以下输出参数是必需参数：

?  
输出错误消息的参数标记。此参数仅接受 `?`。

以下输入参数是必需参数：

*database\$1name*  
要收集其诊断信息的数据库的名称。数据类型为 `varchar`。

*s3\$1bucket\$1name*  
要将诊断信息上传到的 Amazon S3 存储桶的名称。数据类型为 `varchar`。

*s3\$1prefix*  
指向 Amazon S3 的路径的前缀，RDS for Db2 将向其中上传诊断文件。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-db2support-command-usage-notes"></a>

此存储过程收集有助于对 RDS for Db2 数据库进行故障排除的诊断信息，并将这些信息上传至 Amazon S3 存储桶。

该存储过程使用 IBM `db2support` 实用程序来收集诊断数据。有关该实用程序的更多信息，请参阅 IBM Db2 文档中的 [db2support - Problem analysis and environment collection tool command](https://www.ibm.com/docs/en/db2/11.5?topic=commands-db2support-problem-analysis-environment-collection-tool)。

在调用存储过程之前，请查看以下注意事项：
+ 要将诊断文件上传到 Amazon S3，您必须已经配置了集成。有关更多信息，请参阅 [将 Amazon RDS for Db2 数据库实例与 Amazon S3 集成](db2-s3-integration.md)。
+ 要让 RDS for Db2 数据库实例能够与 Amazon S3 交互，您必须有一个 VPC 和一个供私有子网使用的 Amazon S3 网关端点。有关更多信息，请参阅[步骤 1：为 Amazon S3 创建 VPC 网关端点](db2-troubleshooting.md#db2-creating-endpoint)和[步骤 2：确认适用于 Amazon S3 的 VPC 网关端点存在](db2-troubleshooting.md#db2-confirming-endpoint)。

在调用 `rdsadmin.db2support_command` 之前，必须连接到 `rdsadmin` 数据库。在以下示例中，将 *master\$1username* 和 *master\$1password* 替换为 RDS for Db2 数据库实例信息：

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

有关检查收集诊断信息的状态的信息，请参阅 [rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 示例
<a name="db2-sp-db2support-command-examples"></a>

**示例 1：收集数据库的诊断信息**

以下示例收集名为 `TESTDB` 的数据库的诊断信息，并将这些信息上传到名为 `amzn-s3-demo-bucket` 并带有 `diagnostics/testdb` 前缀的 Amazon S3 存储桶：

```
db2 "call rdsadmin.db2support_command(
    ?,
    'TESTDB',
    'amzn-s3-demo-bucket',
    'diagnostics/testdb')"
```

**示例 2：使用基于日期的前缀收集诊断信息**

以下示例收集名为 `MYDB` 的数据库的诊断信息，并将这些信息上传到名为 `amzn-s3-demo-bucket` 并带有基于日期的前缀的 Amazon S3 存储桶：

```
db2 "call rdsadmin.db2support_command(
    ?,
    'MYDB',
    'amzn-s3-demo-bucket',
    'support/2024/01/15')"
```