管理数据库
以下存储过程管理 Amazon RDS for Db2 的数据库。要运行这些过程,主用户必须先连接到 rdsadmin 数据库。
主题
rdsadmin.create_database
创建一个数据库。
语法
db2 "call rdsadmin.create_database('database_name')"
参数
注意
此存储过程不验证所需参数的组合。当您调用 rdsadmin.get_task_status 时,由于 database_codeset、database_territory 和 database_collation 的组合无效,用户定义函数可能会返回错误。有关更多信息,请参阅 IBM Db2 文档中的 Choosing the code page, territory, and collation for your database
以下参数是必需参数:
database_name-
要创建的数据库的名称。数据类型为
varchar。
以下参数为可选参数:
database_page_size-
数据库的默认页面大小。有效值:
4096、8192、16384、32768。数据类型为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_codeset和database_territory。
默认为
IDENTITY。此外,RDS for Db2 还支持以下排序规则组:
language-aware-collation和locale-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 控制台或 AWS CLI 创建 RDS for Db2 数据库实例时未指定数据库的名称,则可以通过调用 rdsadmin.create_database 来创建数据库。有关更多信息,请参阅 创建数据库实例。
特殊注意事项:
-
发送到 Db2 实例的
CREATE DATABASE命令使用RESTRICTIVE选项。 -
RDS for Db2 仅使用
AUTOMATIC STORAGE。 -
RDS for Db2 使用
NUMSEGS和DFT_EXTENT_SZ的默认值。 -
RDS for Db2 使用存储加密,但不支持数据库加密。
有关这些注意事项的更多信息,请参阅 IBM Db2 文档中的 CREATE DATABASE command
在调用 rdsadmin.create_database 之前,必须连接到 rdsadmin 数据库。在以下示例中,将 master_username 和 master_password 替换为 RDS for Db2 数据库实例信息:
db2 connect to rdsadmin usermaster_usernameusingmaster_password
有关检查创建数据库的状态的信息,请参阅rdsadmin.get_task_status。
示例
以下示例创建一个名为 TESTJP 的数据库,该数据库具有适用于日本的 database_code_set、database_territory 和 database_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 控制台或 AWS CLI 创建 RDS for Db2 数据库实例时未指定数据库的名称。有关更多信息,请参阅 创建数据库实例。
-
您通过调用 rdsadmin.create_database 存储过程创建了数据库。
-
您通过调用 rdsadmin.restore_database 存储过程从脱机或备份的映像中还原了数据库。
在调用 rdsadmin.drop_database 之前,必须连接到 rdsadmin 数据库。在以下示例中,将 master_username 和 master_password 替换为 RDS for Db2 数据库实例信息:
db2 connect to rdsadmin usermaster_usernameusingmaster_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 控制台或 AWS 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 控制的配置设置。
| 名称 | 描述 |
|---|---|
|
|
还原操作期间要创建的缓冲区数量。此值必须小于数据库实例类的总内存大小。如果未配置此设置,则 Db2 会确定在还原操作期间要使用的值。有关更多信息,请参阅 IBM Db2 文档 |
|
|
在还原操作期间要创建的缓冲区操纵器的数量。此值必须小于数据库实例的 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。有效值:OFFLINE、ONLINE。使用
ONLINE进行停机时间接近零的迁移。有关更多信息,请参阅 针对 Amazon RDS for Db2 从 Linux 迁移到 Linux,停机时间接近零。
使用说明
如果您在使用 Amazon RDS 控制台或 AWS 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', '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_LOGS、END_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 文档中的 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 文档中的 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。有效值:ALL或application_handle。用逗号分隔多个应用程序的名称。示例:“
application_handle_1,application_handle_2”。
使用说明
此存储过程会强制所有应用程序退出数据库,以便您可以执行维护。
此存储过程使用 IBM FORCE APPLICATION 命令。FORCE APPLICATION 命令需要 SYSADM、SYSMAINT 或 SYSCTRL 授权,而 RDS for Db2 主用户却没有此类授权。但是,使用 Amazon RDS 存储过程,主用户可以使用该命令。有关更多信息,请参阅 IBM 文档中的 FORCE APPLICATION command
有关检查强制应用程序退出数据库的状态的信息,请参阅 rdsadmin.get_task_status。
示例
以下示例强制所有应用程序退出 RDS for Db2 数据库:
db2 "call rdsadmin.force_application( ?, 'ALL')"
以下示例强制应用程序句柄 9991、8891 和 1192 退出 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 分钟。如果您使用诸如 AWS 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')"