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

管理数据库

以下存储过程管理数据库。

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

有关检查还原数据库的状态的信息,请参阅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')"