用于 RDS for Db2 的数据库的存储过程 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

用于 RDS for Db2 的数据库的存储过程

以下存储过程管理 Amazon RDS for Db2 的数据库。要运行这些过程,主用户必须先连接到 rdsadmin 数据库。

rdsadmin.create_database

创建一个数据库。

语法

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

参数

注意

此存储过程不验证所需参数的组合。当您调用 rdsadmin.get_task_status 时,由于 database_codesetdatabase_territorydatabase_collation 的组合无效,用户定义函数可能会返回错误。有关更多信息,请参阅 IBM Db2 文档中的 Choosing the code page, territory, and collation for your database

以下参数是必需参数:

database_name

要创建的数据库的名称。数据类型为 varchar

以下参数为可选参数:

database_page_size

数据库的默认页面大小。有效值:409681921638432768。数据类型为 integer。默认为 8192

重要

Amazon RDS 支持 4KiB、8KiB 和 16KiB 页面的写入原子性。相比之下,32KiB 页面可能面临写入数据受到损坏 或部分数据写入桌面的风险。如果使用 32KiB 页面,我们建议启用时间点故障恢复和自动备份。否则,您将面临无法从损坏的页面中恢复的风险。有关更多信息,请参阅备份简介将 Amazon RDS 的数据库实例还原到指定时间

database_code_set

数据库的代码集。数据类型为 varchar。默认为 UTF-8

database_territory

数据库的两个字母的国家/地区代码。数据类型为 varchar。默认为 US

database_collation

排序规则序列,用于确定如何对存储在数据库中的字符串进行排序和比较。数据类型为 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 037(EBCDIC 美国英语)。

  • EBCDIC_932_5035 – ASCII 日语代码页,排序规则;CCSID 500(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 #26

  • NLSCHAR – 仅适用于泰语代码页(CP874)。

  • SYSTEM – 如果您使用 SYSTEM,则数据库会自动将排序规则序列用于 database_codesetdatabase_territory

默认为 IDENTITY

此外,RDS for Db2 还支持以下排序规则组:language-aware-collationlocale-sensitive-collation。有关更多信息,请参阅 IBM Db2 文档中的 Choosing a collation for a Unicode database

database_autoconfigure_str

AUTOCONFIGURE 命令语法,例如 'AUTOCONFIGURE APPLY DB'。数据类型为 varchar。默认值是空字符串或 Null。

有关更多信息,请参阅 IBM Db2 文档中的 AUTOCONFIGURE 命令

使用说明

如果您在使用 Amazon RDS 控制台或 Amazon CLI 创建 RDS for Db2 数据库实例时未指定数据库的名称,则可以通过调用 rdsadmin.create_database 来创建数据库。有关更多信息,请参阅 创建数据库实例

特殊注意事项:

  • 发送到 Db2 实例的 CREATE DATABASE 命令使用 RESTRICTIVE 选项。

  • RDS for Db2 仅使用 AUTOMATIC STORAGE

  • RDS for Db2 使用 NUMSEGSDFT_EXTENT_SZ 的默认值。

  • RDS for Db2 使用存储加密,但不支持数据库加密。

有关这些注意事项的更多信息,请参阅 IBM Db2 文档中的 CREATE DATABASE command

在调用 rdsadmin.create_database 之前,必须连接到 rdsadmin 数据库。在以下示例中,将 master_usernamemaster_password 替换为 RDS for Db2 数据库实例信息:

db2 connect to rdsadmin user master_username using master_password

有关检查创建数据库的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例创建一个名为 TESTJP 的数据库,该数据库具有适用于日本的 database_code_setdatabase_territorydatabase_collation 参数的正确组合:

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

rdsadmin.drop_database

删除数据库。

语法

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

参数

以下参数是必需参数:

database_name

要删除的数据库的名称。数据类型为 varchar

使用说明

仅当满足以下条件时,才可以通过调用 rdsadmin.drop_database 来删除数据库:

  • 您在使用 Amazon RDS 控制台或 Amazon CLI 创建 RDS for Db2 数据库实例时未指定数据库的名称。有关更多信息,请参阅 创建数据库实例

  • 您通过调用 rdsadmin.create_database 存储过程创建了数据库。

  • 您通过调用 rdsadmin.restore_database 存储过程从脱机或备份的映像中还原了数据库。

在调用 rdsadmin.drop_database 之前,必须连接到 rdsadmin 数据库。在以下示例中,将 master_usernamemaster_password 替换为 RDS for Db2 数据库实例信息:

db2 connect to rdsadmin user master_username using master_password

有关检查删除数据库的状态的信息,请参阅rdsadmin.get_task_status

示例

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

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

响应示例

如果您传递的数据库名称不正确,则存储过程将返回以下响应示例:

SQL0438N Application raised error or warning with diagnostic text: "Cannot drop database. Database with provided name does not exist". SQLSTATE=99993

如果您使用 Amazon RDS 控制台或 Amazon CLI 创建了数据库,则存储过程将返回以下响应示例:

Return Status = 0

收到 Return Status = 0 后,调用 rdsadmin.get_task_status 存储过程。类似于以下示例的响应解释了状态:

1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started. 2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. Reason Dropping database created via rds CreateDBInstance api is not allowed. Only database created using rdsadmin.create_database can be dropped

rdsadmin.update_db_param

更新数据库参数。

语法

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

参数

以下参数为必需参数:

database_name

要运行其任务的数据库的名称。数据类型为 varchar

parameter_to_modify

要修改的参数的名称。数据类型为 varchar。有关更多信息,请参阅 Amazon RDS for Db2 参数

changed_value

要将参数值更改为的值。数据类型为 varchar

使用说明

有关检查更新数据库参数的状态的信息,请参阅rdsadmin.get_task_status

示例

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

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

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

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

响应示例

如果您尝试修改的数据库配置参数不受支持或不可修改,则存储过程将返回以下响应示例:

SQL0438N Application raised error or warning with diagnostic text: "Parameter is either not supported or not modifiable to customers". SQLSTATE=99993

rdsadmin.set_configuration

配置数据库的特定设置。

语法

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

参数

以下参数为必需参数:

name

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

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

使用说明

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

名称 描述

RESTORE_DATABASE_NUM_BUFFERS

还原操作期间要创建的缓冲区数量。此值必须小于数据库实例类的总内存大小。如果未配置此设置,则 Db2 会确定在还原操作期间要使用的值。有关更多信息,请参阅 IBM Db2 文档

RESTORE_DATABASE_PARALLELISM

在还原操作期间要创建的缓冲区操纵器的数量。此值必须小于数据库实例的 vCPU 数量的两倍。如果未配置此设置,则 Db2 会确定在还原操作期间要使用的值。有关更多信息,请参阅 IBM Db2 文档

示例

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

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

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

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

rdsadmin.show_configuration

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

语法

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

参数

以下参数为可选参数:

name

要返回其相关信息的配置设置的名称。数据类型为 varchar

以下配置名称有效:

  • RESTORE_DATABASE_NUM_BUFFERS – 在还原操作期间要创建的缓冲区数量。

  • RESTORE_DATABASE_PARALLELISM – 在还原操作期间要创建的缓冲区操纵器的数量。

使用说明

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

示例

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

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

rdsadmin.restore_database

还原数据库。

语法

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

参数

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

?

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

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

database_name

要还原的数据库的名称。此名称必须与备份映像中数据库的名称相匹配。数据类型为 varchar

s3_bucket_name

备份所在的 Amazon S3 存储桶的名称。数据类型为 varchar

s3_prefix

下载期间用于文件匹配的前缀。数据类型为 varchar

如果此参数为空,则将下载 Amazon S3 存储桶中的所有文件。以下是示例前缀:

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

数据库备份映像的时间戳。数据类型为 varchar

时间戳包含在备份文件名中。例如,20230615010101 是文件名 SAMPLE.0.rdsdb.DBPART000.20230615010101.001 的时间戳。

backup_type

备份的类型。数据类型为 varchar。有效值:OFFLINEONLINE

使用 ONLINE 进行停机时间接近零的迁移。有关更多信息,请参阅 针对 Amazon RDS for Db2 从 Linux 迁移到 Linux,停机时间接近零

使用说明

在调用存储过程之前,请查看以下注意事项:

  • 仅当您在使用 Amazon RDS 控制台或 Amazon CLI 创建 RDS for Db2 数据库实例时未指定数据库名称的情况下,才可通过调用 rdsadmin.restore_database 来还原数据库。有关更多信息,请参阅 创建数据库实例

  • 在还原数据库之前,您必须为 RDS for Db2 数据库实例预调配存储空间,其大小等于或大于磁盘上备份和原始 Db2 数据库的大小之和。有关更多信息,请参阅 Insufficient disk space

  • 还原备份时,Amazon RDS 会在您的 RDS for Db2 数据库实例上提取备份文件。每个备份文件不得超过 5TB。如果备份文件超过 5 TB,则必须将备份文件拆分为较小的文件。

  • 要使用 rdsadmin.restore_database 存储过程还原所有文件,请勿在文件名中的时间戳后加上文件号后缀。例如,s3_prefix 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

  • RDS for Db2 不支持非防护例程。有关更多信息,请参阅 Non-fenced routines not allowed

  • 要提高数据库还原操作的性能,您可以配置供 RDS 使用的缓冲区和缓冲区操纵器的数量。要检查当前配置,请使用 rdsadmin.show_configuration。要更改配置,请使用 rdsadmin.set_configuration

要在还原数据库后使数据库联机并应用其他事务日志,请参阅rdsadmin.rollforward_database

有关检查还原数据库的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例使用带有 s3_prefix 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_database

通过调用 rdsadmin.restore_database 还原数据库后,使数据库联机并应用其他事务日志。

语法

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

参数

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

?

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

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

database_name

要对其执行操作的数据库的名称。数据类型为 varchar

s3_bucket_name

备份所在的 Amazon S3 存储桶的名称。数据类型为 varchar

s3_prefix

下载期间用于文件匹配的前缀。数据类型为 varchar

如果此参数为空,则将下载 S3 存储桶中的所有文件。以下示例是示例前缀:

backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101

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

rollforward_to_option

您想要向前滚动到的点。数据类型为 varchar。有效值:END_OF_LOGSEND_OF_BACKUP。默认为 END OF LOGS

complete_rollforward

指定是否完成向前滚动过程。数据类型为 varchar。默认为 TRUE

如果为 TRUE,则在完成后,数据库处于联机状态并且可以访问。如果为 FALSE,则数据库将保持 ROLL-FORWARD PENDING 状态。

使用说明

调用 rdsadmin.restore_database 后,必须调用 rollforward_database 以应用来自 S3 存储桶的归档日志。您还可以在调用 rdsadmin.restore_database 后使用此存储过程来还原其他事务日志。

如果将 complete_rollforward 设置为 FALSE,则您的数据库处于 ROLL-FORWARD PENDING 状态并处于脱机状态。要使数据库联机,您必须调用 rdsadmin.complete_rollforward

有关检查向前滚动数据库的状态的信息,请参阅rdsadmin.get_task_status

示例

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

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

以下示例向前滚动到不带事务日志的数据库的联机备份,然后使数据库联机:

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

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

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

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

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

rdsadmin.complete_rollforward

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

语法

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

参数

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

?

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

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

database_name

要实现联机的数据库的名称。数据类型为 varchar

使用说明

如果您在 complete_rollforward 设置为 FALSE 的情况下调用了 rdsadmin.rollforward_database,则您的数据库处于 ROLL-FORWARD PENDING 状态并处于脱机状态。要完成向前滚动过程并使数据库联机,请调用 rdsadmin.complete_rollforward

有关检查完成向前滚动过程的状态的信息,请参阅rdsadmin.get_task_status

示例

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

db2 "call rdsadmin.complete_rollfoward( ?, 'TESTDB')"

rdsadmin.db2pd_command

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

语法

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

参数

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

db2pd_cmd

要运行的 db2pd 命令的名称。数据类型为 varchar

参数必须以连字符开头。有关参数列表,请参阅 IBM Db2 文档中的 db2pd - Monitor and troubleshoot Db2 database command

不支持以下选项:

  • -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

使用说明

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

该存储过程使用 IBM db2pd 实用程序运行各种命令。db2pd 实用程序需要 SYSADM 授权,而 RDS for Db2 主用户却没有此授权。但是,使用 Amazon RDS 存储过程,主用户可以使用该实用程序运行各种命令。有关该实用程序的更多信息,请参阅 IBM Db2 文档中的 db2pd - Monitor and troubleshoot Db2 database command

输出限制为最大 2 GB。

有关检查收集关于数据库的信息的状态的信息,请参阅 rdsadmin.get_task_status

示例

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

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

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

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

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

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

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

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

rdsadmin.force_application

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

语法

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

参数

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

?

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

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

applications

您要强制退出 RDS for Db2 数据库的应用程序。数据类型为 varchar。有效值:ALLapplication_handle

用逗号分隔多个应用程序的名称。示例:“application_handle_1, application_handle_2”。

使用说明

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

此存储过程使用 IBM FORCE APPLICATION 命令。FORCE APPLICATION 命令需要 SYSADMSYSMAINTSYSCTRL 授权,而 RDS for Db2 主用户却没有此类授权。但是,使用 Amazon RDS 存储过程,主用户可以使用该命令。有关更多信息,请参阅 IBM Db2 文档中的 FORCE APPLICATION command

有关检查强制应用程序退出数据库的状态的信息,请参阅 rdsadmin.get_task_status

示例

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

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

以下示例强制应用程序句柄 999188911192 退出 RDS for Db2 数据库:

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

rdsadmin.set_archive_log_retention

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

语法

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

参数

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

?

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

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

database_name

要配置其归档日志保留期的数据库的名称。数据类型为 varchar

archive_log_retention_hours

要保留归档日志文件的小时数。数据类型为 smallint。默认值为 0,最大值为 168(7 天)。

如果值为 0,则 Amazon RDS 不会保留归档日志文件。

使用说明

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

您可以通过调用 rdsadmin.show_archive_log_retention 来查看当前的归档日志保留期设置。

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

示例

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

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

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

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

rdsadmin.show_archive_log_retention

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

语法

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

参数

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

?

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

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

database_name

要显示其归档日志保留期设置的数据库的名称。数据类型为 varchar

示例

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

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