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