用于管理 RDS for Db2 数据库的存储过程
本主题中介绍的内置存储过程可管理 Amazon RDS for Db2 数据库。要运行这些过程,主用户必须先连接到 rdsadmin 数据库。
这些存储过程可用于执行各种任务。此列表并不详尽。
请参阅以下内置存储过程,了解其语法、参数、用法说明和示例。
存储过程
rdsadmin.create_database
创建一个数据库。
语法
db2 "call rdsadmin.create_database( 'database_name', 'database_page_size', 'database_code_set', 'database_territory', 'database_collation', 'database_autoconfigure_str', 'database_non-restrictive')"
参数
注意
此存储过程不验证所需参数的组合。当您调用 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 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 #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 命令
。 database_non-restrictive-
在数据库中授予默认权限和特权。数据类型为
varchar。默认值为N。有效值:
-
N– 创建的数据库是限制性的,不授予权限或特权。 -
Y– 创建的数据库是非限制性的,并向特殊组PUBLIC授予一组权限。有关更多信息,请参阅 IBM Db2 文档中的 Default privileges granted on creating a database。
-
使用说明
如果您打算修改 db2_compatibility_vector 参数,请在创建数据库之前进行修改。有关更多信息,请参阅 设置 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
在调用 rdsadmin.create_database 之前,必须连接到 rdsadmin 数据库。在以下示例中,将 master_username 和 master_password 替换为 RDS for Db2 数据库实例信息:
db2 connect to rdsadmin usermaster_usernameusingmaster_password
有关检查创建数据库的状态的信息,请参阅rdsadmin.get_task_status。
要查看调用 rdsadmin.create_database 时返回的错误消息,请参阅存储过程错误。
示例
以下示例创建一个名为 TESTJP 的数据库,该数据库具有适用于日本的 database_code_set、database_territory 和 database_collation 参数的正确组合:
db2 "call rdsadmin.create_database('TESTJP', 4096, 'IBM-437', 'JP', 'SYSTEM')"
rdsadmin.deactivate_database
停用数据库。
语法
db2 "call rdsadmin.deactivate_database( ?, 'database_name')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要停用的数据库的名称。数据类型为
varchar。
使用说明
您可以停用数据库以节省内存资源或进行其它数据库配置更改。要使已停用的数据库恢复联机,请调用 rdsadmin.activate_database 存储过程。
在复制过程中,您无法通过调用 rdsadmin.deactivate_database 存储过程来停用源数据库实例上的数据库。
有关如何检查数据库停用状态的信息,请参阅rdsadmin.get_task_status。
要查看调用 rdsadmin.deactivate_database 时返回的错误消息,请参阅存储过程错误。
示例
以下示例停用名为 TESTDB 的数据库。
db2 "call rdsadmin.deactivate_database(?, 'TESTDB')"
rdsadmin.activate_database
激活数据库。
有关 rdsadmin.reactivate_database 与 rdsadmin.activate_database 的差异的更多信息,请参阅 使用说明。
语法
db2 "call rdsadmin.activate_database( ?, 'database_name')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要激活的数据库的名称。数据类型为
varchar。
使用说明
默认情况下,所有数据库在创建后都处于激活状态。如果停用独立数据库实例上的数据库以节省内存资源或进行其它数据库配置更改,请调用 rdsadmin.activate_database 存储过程以再次激活数据库。
此存储过程仅激活独立数据库实例上且已通过调用 rdsadmin.deactivate_database 存储过程停用的数据库。要在副本源数据库实例上激活数据库,必须调用 rdsadmin.reactivate_database 存储过程。
有关如何检查数据库激活状态的信息,请参阅rdsadmin.get_task_status。
要查看调用 rdsadmin.activate_database 时返回的错误消息,请参阅存储过程错误。
示例
以下示例激活名为 TESTDB 的数据库。
db2 "call rdsadmin.activate_database(?, 'TESTDB')"
rdsadmin.reactivate_database
重新激活数据库。
有关 rdsadmin.activate_database 与 rdsadmin.reactivate_database 之间差异的更多信息,请参阅使用说明。
语法
db2 "call rdsadmin.reactivate_database( ?, 'database_name')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要重新激活的数据库的名称。数据类型为
varchar。
使用说明
调用 rdsadmin.reactivate_database 存储过程时,该存储过程首先通过调用 rdsadmin.deactivate_database 存储过程来停用数据库,然后通过调用 rdsadmin.activate_database 存储过程来激活数据库。
更改数据库配置后,您可能需要在 RDS for Db2 数据库实例上重新激活数据库。要确定是否需要重新激活数据库,请连接到该数据库并运行 db2 get db cfg show detail。
对于独立数据库实例上的数据库,您可以使用 rdsadmin.reactivate_database 存储过程来重新激活该数据库。或者,如果您已经调用了 rdsadmin.deactivate_database 存储过程,则可以改为调用 rdsadmin.activate_database 存储过程。
对于副本源数据库实例上的数据库,您必须使用 rdsadmin.reactivate_database 存储过程来重新激活该数据库。
有关检查重新激活数据库的状态的信息,请参阅 rdsadmin.get_task_status。
要查看调用 rdsadmin.reactivate_database 时返回的错误消息,请参阅存储过程错误。
示例
以下示例重新激活名为 TESTDB 的数据库。
db2 "call rdsadmin.reactivate_database(?, 'TESTDB')"
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 usermaster_usernameusingmaster_password
有关如何检查数据库删除状态的信息,请参阅rdsadmin.get_task_status。
要查看调用 rdsadmin.drop_database 时返回的错误消息,请参阅存储过程错误。
示例
以下示例删除名为 TESTDB 的数据库:
db2 "call rdsadmin.drop_database('TESTDB')"
rdsadmin.update_db_param
更新数据库参数。
语法
db2 "call rdsadmin.update_db_param( 'database_name', 'parameter_to_modify', 'changed_value', 'restart_database')"
参数
以下参数为必需参数:
database_name-
要运行其任务的数据库的名称。数据类型为
varchar。 parameter_to_modify-
要修改的参数的名称。数据类型为
varchar。有关更多信息,请参阅 Amazon RDS for Db2 参数。 changed_value-
要将参数值更改为的值。数据类型为
varchar。
以下参数为可选参数:
restart_database-
指定在需要重新启动时 RDS 是否重新启动数据库。数据类型为
varchar。要修改logprimary和logfilsiz,请将此参数设置为'YES'。
使用说明
有关如何检查数据库参数更新状态的信息,请参阅rdsadmin.get_task_status。
要查看调用 rdsadmin.update_db_param 时返回的错误消息,请参阅存储过程错误。
示例
示例 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_configuration
配置数据库的特定设置。
语法
db2 "call rdsadmin.set_configuration( 'name', 'value')"
参数
以下参数为必需参数:
.name-
配置设置的名称。数据类型为
varchar。 值-
配置设置的值。数据类型为
varchar。
使用说明
下表显示了您可以使用 rdsadmin.set_configuration 控制的配置设置。
| 名称 | 描述 |
|---|---|
|
|
还原操作期间要创建的缓冲区数量。此值必须小于数据库实例类的总内存大小。如果未配置此设置,则 Db2 会确定在还原操作期间要使用的值。有关更多信息,请参阅 IBM Db2 文档中的 RESTORE DATABASE 命令 |
|
|
在还原操作期间要创建的缓冲区操纵器的数量。此值必须小于数据库实例的 vCPU 数量的两倍。如果未配置此设置,则 Db2 会确定在还原操作期间要使用的值。有关更多信息,请参阅 IBM Db2 文档中的 RESTORE DATABASE 命令 |
|
|
从 Amazon S3 操作还原期间要使用的路径(或 I/O 流)数量。要使用此配置设置,必须有多个备份文件。此值可以提高还原包含大量数据的数据库时的性能,因为它可以并行还原多个数据库备份文件。我们建议您设置此值以匹配数据库备份文件数。有关更多信息,请参阅 IBM Db2 文档中的 BACKUP DATABASE 命令 |
|
|
指定是否在还原期间直接流式传输备份数据,而不是先将整个备份下载到 RDS for Db2 数据库实例,然后再提取。将 |
示例
示例 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_configuration
返回可使用存储过程 rdsadmin.set_configuration 进行设置的当前设置。
语法
db2 "call rdsadmin.show_configuration( 'name')"
参数
以下参数为可选参数:
.name-
要返回其相关信息的配置设置的名称。数据类型为
varchar。以下配置名称有效:
-
RESTORE_DATABASE_NUM_BUFFERS– 还原操作期间要创建的缓冲区数量。 -
RESTORE_DATABASE_PARALLELISM– 在还原操作期间要创建的缓冲区操纵器的数量。 -
RESTORE_DATABASE_NUM_MULTI_PATHS– 从 Amazon S3 操作还原期间要使用的路径(或 I/O 流)数量。 -
USE_STREAMING_RESTORE– 指定是否在还原期间直接流式传输备份数据,而不是先将整个备份数据下载到 RDS for Db2 数据库实例,然后再提取。
-
使用说明
如果您未指定配置设置的名称,则 rdsadmin.show_configuration 返回您可以使用存储过程 rdsadmin.set_configuration 进行设置的所有配置设置的信息。
示例
以下示例返回有关当前 RESTORE_DATABASE_PARALLELISM 配置的信息。
db2 "call rdsadmin.show_configuration( 'RESTORE_DATABASE_PARALLELISM')"
rdsadmin.backup_database
将数据库从 RDS for Db2 数据库实例备份到 Amazon S3 存储桶。
语法
db2 "call rdsadmin.backup_database( ?, 'database_name', 's3_bucket_name', 's3_prefix', 'backup_type', 'compression_option', 'util_impact_priority', 'num_files', 'parallelism', 'num_buffers')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
RDS for Db2 数据库实例上要备份的目标数据库的名称。数据类型为
varchar。该数据库必须存在于数据库实例中。您无法备份
rdsadmin数据库。 s3_bucket_name-
您希望备份所在的 Amazon S3 存储桶的名称。数据类型为
varchar。S3 存储桶在调用
rdsadmin.backup_database之前必须存在,必须与要备份的 RDS for Db2 数据库实例中的目标数据库位于同一 Amazon Web Services 区域 中,并且可以通过附加到数据库实例的 IAM 角色进行访问。 s3_prefix-
Amazon S3 路径的前缀,RDS for Db2 将在该路径中上传备份文件。数据类型为
varchar。前缀的长度限制为 1024 个字符。它不得包含前导或尾部斜杠(/)。由于 IBM 向 Amazon S3 流式传输存在限制,我们建议前缀包含子目录
为了更好地管理文件,RDS for Db2 会在
s3_prefix之后创建额外的目录。RDS for Db2 会将所有备份文件上传到s3_prefix/dbi_resource_id/db_name。如果将num_files设置为大于1,则db_name目录将包含多个备份文件。以下是备份文件的 Amazon S3 存储位置示例。在示例中,
backups/daily是为s3_prefix参数设置的值。backups/daily/db-5N7FXOY4GDP7RG2NSH2ZTAI2W4/SAMPLEDB backup_type-
决定数据库在备份期间是否保持可用状态的备份类型。数据类型为
varchar。有效值:
-
OFFLINE– 备份期间数据库不可用。这种类型速度更快,但会导致停机。 -
ONLINE– 数据库在备份期间保持可用。默认情况下,将ONLINE设置为INCLUDE LOGS。
-
以下参数可选:
compression_option-
所使用的压缩算法的类型,它会影响备份时间、CPU 使用率和存储成本。数据类型为
varchar。默认值为NONE。有效值:
-
NONE– 文件大小最大,CPU 使用率最低,存储成本最低。 -
STANDARD– 标准 Db2 压缩。使用libdb2compr.so。 -
ZLIB– 增强型 Db2 压缩。使用libdb2zcompr.so,但是 CPU 密集度更高,存储成本最高。
-
util_impact_priority-
控制备份对系统资源影响的设置。数据类型为
integer。有效值:1–100(从低到高)。默认值为50。较低的值可以减少备份对系统资源的影响,但可能会增加备份数据库所需的时间。较高的值可能会更快地完成数据库的备份,但可能会影响其他操作。实际影响取决于系统的整体利用率和
util_impact_lim设置。您可以在参数组中查看和修改util_impact_lim设置。有关更多信息,请参阅 Amazon RDS for Db2 参数。 num_files-
到 Amazon S3 的并行上传流的数目。数据类型为
integer。有效值:1–256。我们建议您仅在观察到 Amazon RDS 自动计算的默认备份性能后才设置此参数。较高的值可以提高大型备份的性能,尤其是在高带宽连接的情况下,但是在某个时候,较高的值会降低性能。此外,请务必考虑您的可用系统资源和网络容量。
parallelism-
备份实用程序可以并行读取的表空间数量。数据类型为
integer。有效值:1–256。我们建议您仅在观察了备份在 Db2 引擎自动计算的默认最优值下的性能后,再设置此参数。如果您设置此参数,Amazon RDS 将根据可用的处理器进行验证,如果处理能力不足,则不会执行备份请求。
num_buffers-
要使用的缓冲区数量。数据类型为
integer。有效值:1–268435456。我们建议您仅在观察了 Amazon RDS 根据内存自动计算的默认备份性能后,再设置此参数。如果您设置此参数,Amazon RDS 会根据可用内存进行验证,如果可用内存不足,则不会执行备份请求。如果您要备份到多个位置(
num_files设为大于1),则较多的缓冲区可以提高性能。如果compression_option未设为NONE,则可以通过增加num_buffers和parallelism来提高性能。
使用说明
此存储过程创建异步备份任务,这些任务使用 Amazon S3 集成将数据库的备份直接流式传输到您的 Amazon S3 存储桶。您可以从本地服务器或 RDS for Db2 数据库实例进行备份,将它们存储到 Amazon S3 中,然后在需要的任何位置还原它们。有关将数据库还原到 RDS for Db2 数据库实例的信息,请参阅rdsadmin.restore_database。
在调用存储过程之前,请查看以下注意事项:
-
一次只能备份一个数据库。
-
您不能在数据库实例上同时执行备份和还原。
-
目前不支持具有 Amazon KMS(SSE-KMS)的 Amazon S3 服务器端加密。即使 S3 存储桶设置为 SSE-KMS,上传到 S3 存储桶的文件也不会使用 SSE-KMS 加密。
-
要将备份文件流式传输到 Amazon S3,您必须已配置集成。有关更多信息,请参阅 将 Amazon RDS for Db2 数据库实例与 Amazon S3 集成。
-
要让 RDS for Db2 数据库实例能够与 Amazon S3 交互,您必须有一个 VPC 和一个供私有子网使用的 Amazon S3 网关端点。有关更多信息,请参阅步骤 1:为 Amazon S3 创建 VPC 网关端点和步骤 2:确认适用于 Amazon S3 的 VPC 网关端点存在。
在调用 rdsadmin.backup_database 之前,必须连接到 rdsadmin 数据库。在以下示例中,将 master_username 和 master_password 替换为 RDS for Db2 数据库实例信息:
db2 connect to rdsadmin usermaster_usernameusingmaster_password
备份数据库后,请务必终止连接。
terminate
有关如何检查数据库备份状态的信息,请参阅rdsadmin.get_task_status。
要查看调用 rdsadmin.backup_database 时返回的错误消息,请参阅存储过程错误。
示例
所有示例都将名为 MYDB 的数据库备份到名为 amzn-s3-demo-bucket 的 Amazon S3 存储桶,并将 s3_prefix 设置为 backups/daily。
示例 1:指定数据库离线且不可用,使用中等利用率和单个上传流
在下面的示例中,数据库处于离线状态,这样速度更快,但意味着备份期间数据库不可用。该示例不对文件进行压缩,对系统资源的影响为中等,并使用单个上传流传输到 Amazon S3。
db2 call "rdsadmin.backup_database( ?, 'MYDB', 'amzn-s3-demo-bucket', 'backups/daily', 'OFFLINE', 'NONE', 50, 1)"
示例 2:指定数据库在线且可用,使用增强压缩、中等利用率及少量并行上传流
在下面的示例中,数据库在备份期间保持在线且可用。该示例使用增强压缩,因此文件体积较小,但对 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')"
示例 4:指定数据库离线且不可用,不压缩,高利用率及自定义计算
在下面的示例中,数据库处于离线状态,这样速度更快,但意味着备份期间数据库不可用。该示例不对文件进行压缩,对系统资源的影响较大,并使用 20 个上传流传输到 Amazon S3。它设置了可并行读取的表空间最大数量,如果处理能力不足,可能导致备份请求失败。同时,它还设置了最大缓冲区数量,如果内存不足,也可能导致备份请求失败。
db2 "call rdsadmin.backup_database( ?, 'MYDB', 'amzn-s3-demo-bucket', 'backups/daily', 'OFFLINE', 'NONE', 90, 20, 256, 268435456)"
rdsadmin.restore_database
从 Amazon S3 存储桶还原到 RDS for Db2 数据库实例。
语法
db2 "call rdsadmin.restore_database( ?, 'database_name', 's3_bucket_name', 's3_prefix',restore_timestamp, 'backup_type')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要在 RDS for Db2 中恢复的目标数据库的名称。数据类型为
varchar。例如,如果源数据库名称为
TESTDB,而您将database_name设置为NEWDB,则 Amazon RDS 将恢复NEWDB作为源数据库。 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,停机时间接近零。
使用说明
您可以使用此存储过程将 Db2 数据库迁移到 RDS for Db2 数据库实例。有关更多信息,请参阅 使用 Amazon 服务将数据从 Db2 迁移到 Amazon RDS for Db2。您也可以使用此存储过程创建同一数据库的多个副本但使用不同的数据库名称,这些副本使用相同的还原映像。
在调用存储过程之前,请查看以下注意事项:
-
在还原数据库之前,您必须为 RDS for Db2 数据库实例预调配存储空间,其大小大于磁盘上的原始 Db2 数据库。如果您启用了
USE_STREAMING_RESTORE,则还原备份时,Amazon RDS 会将备份文件直接从 S3 存储桶流式传输到 RDS for Db2 数据库实例。如果您未启用USE_STREAMING_RESTORE,则必须为 RDS for Db2 数据库实例预调配存储空间,其大小等于或大于备份大小加上磁盘上原始 Db2 数据库大小之和。有关更多信息,请参阅 Insufficient disk space。 -
还原备份时,Amazon RDS 会在您的 RDS for Db2 数据库实例上提取备份文件。每个备份文件不得超过 5TB。如果备份文件超过 5 TB,则必须将备份文件拆分为较小的文件。
-
要使用
rdsadmin.restore_database存储过程还原所有文件,请勿在文件名中的时间戳后加上文件号后缀。例如,s3_prefixbackupfolder/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 使用的多个备份路径的数量。为了优化存储使用率并提高性能,您还可以直接从 Amazon S3 流式传输备份。要检查当前配置,请使用 rdsadmin.show_configuration。要更改配置,请使用 rdsadmin.set_configuration。
要在还原数据库后使数据库联机并应用其他事务日志,请参阅rdsadmin.rollforward_database。
要了解数据库的还原状态,请参阅rdsadmin.get_task_status。
要查看调用 rdsadmin.restore_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, 'rollforward_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(时间戳格式为YYYY-MM-DD-HH.MM.SS)。默认值为END_OF_LOGS。 complete_rollforward-
指定是否完成向前滚动过程。数据类型为
varchar。默认值为TRUE。如果为
TRUE,则在完成后,数据库处于联机状态并且可以访问。如果为FALSE,则数据库将保持ROLL-FORWARD PENDING状态。
使用说明
可以使用 rds.rollforward_database 通过包含的日志进行联机备份,这些日志是在许多不同的场景中本地生成的。
场景 1:还原数据库、向前滚动包含的日志,然后使数据库联机
完成 rdsadmin.restore_database() 后,使用示例 1 中的语法来使包含事务日志的数据库联机。
场景 2:使数据库联机,但不向前滚动包含的日志。
完成 rdsadmin.restore_database() 后,使用示例 2 中的语法来使不包含事务日志的数据库联机。
场景 3:在备份中向前滚动包含的日志,并在本地生成其它事务日志时应用这些日志
完成 rdsadmin.restore_database() 后,使用示例 3 或示例 4 中的语法,在不使数据库联机的情况下向前滚动日志。
如果将 complete_rollforward 设置为 FALSE,则您的数据库处于 ROLL-FORWARD PENDING 状态并处于脱机状态。要使数据库联机,您必须调用 rdsadmin.complete_rollforward。
有关如何检查数据库向前滚动状态的信息,请参阅rdsadmin.rollforward_status。
示例
示例 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_status
返回 ROLLFORWARD DATABASE
的输出。database_name QUERY STATUS
语法
db2 "call rdsadmin.rollforward_status( ?, 'database_name')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要对其执行操作的数据库的名称。数据类型为
varchar。
使用说明
调用 rdsadmin.rollforward_database 后,可以调用 rdsadmin.rollforward_status 来检查数据库中向前滚动的状态。
有关如何检查此存储过程的状态的信息,请参阅 rdsadmin.get_task_status。
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.rollforward_status。
示例
以下示例使 TESTDB 数据库联机:
db2 "call rdsadmin.complete_rollforward( ?, '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。
示例
示例 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_application
强制应用程序退出 RDS for Db2 数据库。
语法
db2 "call rdsadmin.force_application( ?, '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。
示例
示例 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_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 数据库上配置归档日志保留期设置。
示例
示例 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_archive_log_retention
返回指定数据库的当前归档日志保留期设置。
语法
db2 "call rdsadmin.show_archive_log_retention( ?, 'database_name')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要显示其归档日志保留期设置的数据库的名称。数据类型为
varchar。
示例
以下示例显示名为 TESTDB 的数据库的归档日志保留期设置。
db2 "call rdsadmin.show_archive_log_retention( ?, 'TESTDB')"
rdsadmin.list_archive_log_information
返回有关归档日志文件的详细信息,例如指定数据库的各个日志文件的大小、创建日期和时间以及名称。它还返回数据库中日志文件使用的总存储量。
语法
db2 "call rdsadmin.list_archive_log_information( ?, 'database_name')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要列出其归档日志信息的数据库的名称。数据类型为
varchar。
示例
以下示例返回名为 TESTDB 的数据库的归档日志信息。
db2 "call rdsadmin.list_archive_log_information( ?, 'TESTDB')"
rdsadmin.fgac_command
运行精细访问控制(FGAC)命令。
语法
db2 "call rdsadmin.fgac_command( ?, 'database_name', 'fgac_cmd')"
参数
以下输出参数是必需参数:
- ?
-
输出错误消息的参数标记。此参数仅接受
?。
以下输入参数是必需参数:
database_name-
要在其上运行 FGAC 命令的数据库的名称。数据类型为
varchar。 fgac_cmd-
要运行的精细访问控制命令。数据类型为
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 安全标签。
-
使用说明
此存储过程用于在 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'')')" -
要转义方括号([ ]),请使用反斜杠(\)。以下示例显示了如何转义
[''apple'',''banana'']。db2 "call rdsadmin.fgac_command( ?, ' testdb', 'CREATE SECURITY LABEL COMPONENT FRUITARRAY ARRAY\[''apple'',''banana''\]')"
示例
以下示例都在名为 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'')')"