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

管理数据库

以下存储过程管理 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 页面,我们建议启用时间点故障恢复和自动备份。否则,您将面临无法从损坏的页面中恢复的风险。有关更多信息,请参阅备份简介将数据库实例还原到指定时间

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。有关更多信息,请参阅 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')"

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 进行停机时间接近零的迁移。有关更多信息,请参阅 基于 Linux 的 Db2 数据库的停机时间接近零的迁移

使用说明

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

在还原数据库之前,您必须为 RDS for Db2 数据库实例预调配存储空间,其大小等于或大于磁盘上备份和原始 Db2 数据库的大小之和。还原备份时,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 使用的缓冲区和缓冲区操纵器的数量。要检查当前配置,请使用 rdsadmin.show_configuration。要更改配置,请使用 rdsadmin.set_configuration

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

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

示例

以下示例使用带有 s3_prefix backupfolder/SAMPLE.0.rdsdb.DBPART000.20230615010101 的单个文件或多个文件还原脱机备份:

db2 "call rdsadmin.restore_database( ?, 'SAMPLE', 'myS3bucket', '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', 'S3Bucket', 'logsfolder/, 'END_OF_BACKUP', 'TRUE')"

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

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

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

db2 "call rdsadmin.rollforward_database( ?, 'TESTDB', 'S3Bucket', '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 文档中的 db2pd - Monitor and troubleshoot Db2 database command

无法使用以下参数:

  • -rep | -repeat

  • -fil | -file

  • -db | -data | -database <dbname>,不带任何子选项,例如 -apinfo-logs

  • -inst | -instance

使用说明

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

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

输出限制为最大 2MB。

有关检查收集关于数据库的信息的状态的信息,请参阅 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 文档中的 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 不会保留归档日志文件。

使用说明

您可以通过调用 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')";