用于 RDS for Db2 的数据库的存储过程
以下存储过程管理 Amazon RDS for Db2 的数据库。要运行这些过程,主用户必须先连接到 rdsadmin
数据库。
主题
- rdsadmin.create_database
- rdsadmin.drop_database
- rdsadmin.update_db_param
- rdsadmin.set_configuration
- rdsadmin.show_configuration
- rdsadmin.restore_database
- rdsadmin.rollforward_database
- rdsadmin.complete_rollforward
- rdsadmin.db2pd_command
- rdsadmin.force_application
- rdsadmin.set_archive_log_retention
- rdsadmin.show_archive_log_retention
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 控制台或 Amazon 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 user
master_username
usingmaster_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 控制台或 Amazon 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 user
master_username
usingmaster_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
控制的配置设置。
名称 | 描述 |
---|---|
|
还原操作期间要创建的缓冲区数量。此值必须小于数据库实例类的总内存大小。如果未配置此设置,则 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 控制台或 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_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 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
。有效值:ALL
或application_handle
。用逗号分隔多个应用程序的名称。示例:“
application_handle_1
,application_handle_2
”。
使用说明
此存储过程会强制所有应用程序退出数据库,以便您可以执行维护。
此存储过程使用 IBM FORCE APPLICATION
命令。FORCE APPLICATION
命令需要 SYSADM
、SYSMAINT
或 SYSCTRL
授权,而 RDS for Db2 主用户却没有此类授权。但是,使用 Amazon RDS 存储过程,主用户可以使用该命令。有关更多信息,请参阅 IBM Db2 文档中的 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 分钟。如果您使用诸如 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')"