用于 RDS for Db2 的表空间的存储过程 - Amazon Relational Database Service

用于 RDS for Db2 的表空间的存储过程

本主题中介绍的内置存储过程可管理 Amazon RDS for Db2 数据库的表空间。要运行这些过程,主用户必须先连接到 rdsadmin 数据库。

这些存储过程可用于执行各种任务。此列表并不详尽。

请参阅以下内置存储过程,了解其语法、参数、用法说明和示例。

rdsadmin.create_tablespace

创建表空间。

语法

db2 "call rdsadmin.create_tablespace( 'database_name', 'tablespace_name', 'buffer_pool_name', tablespace_page_size, tablespace_initial_size, tablespace_increase_size, 'tablespace_type', 'tablespace_prefetch_size')"

参数

以下参数为必需参数:

database_name

要在其中创建表空间的数据库的名称。数据类型为 varchar

tablespace_name

要创建的表空间的名称。数据类型为 varchar

表空间名称具有以下限制:

  • 不能与此数据库中现有表空间的名称相同。

  • 只能包含字符 _$#@a-zA-Z0-9

  • 不能以 _$ 开头。

  • 不能以 SYS 开头。

以下参数可选:

buffer_pool_name

要为其分配表空间的缓冲池的名称。数据类型为 varchar。默认值是空字符串。

重要

您必须已经具有相同页面大小的缓冲池才能与表空间相关联。

tablespace_page_size

表空间的页面大小(以字节为单位)。数据类型为 integer。有效值:409681921638432768。默认值是通过调用 rdsadmin.create_database 创建数据库时使用的页面大小。

重要

Amazon RDS 支持 4KiB、8KiB 和 16KiB 页面的写入原子性。相比之下,32KiB 页面可能面临写入数据受到损坏 或部分数据写入桌面的风险。如果使用 32KiB 页面,我们建议启用时间点故障恢复和自动备份。否则,您将面临无法从损坏的页面中恢复的风险。有关更多信息,请参阅备份简介将 Amazon RDS 的数据库实例还原到指定时间

tablespace_initial_size

表空间的初始大小,以千字节(KB)为单位。数据类型为 integer。有效值:48 或更高。默认值为 Null。

如果您没有设置值,则 Db2 为您设置适当的值。

注意

此参数不适用于临时表空间,因为系统管理临时表空间。

tablespace_increase_size

表空间已满时增加表空间的百分比。数据类型为 integer。有效值:1100。默认值为 Null。

如果您没有设置值,则 Db2 为您设置适当的值。

注意

此参数不适用于临时表空间,因为系统管理临时表空间。

tablespace_type

表空间的类型。数据类型为 char。有效值:U(对于用户数据)、T(对于用户临时数据)或 S(对于系统临时数据)。默认为 U

tablespace_prefetch_size

表空间的预提取页面大小。数据类型为 char。有效值:AUTOMATIC(不区分大小写),或小于或等于 32767 的非零正整数。

使用说明

RDS for Db2 始终为数据创建大型数据库。

有关检查创建表空间的状态的信息,请参阅rdsadmin.get_task_status

示例

示例 1:创建表空间并分配缓冲池

以下示例创建一个名为 SP8 的表空间,并为名为 TESTDB 的数据库分配一个名为 BP8 的缓冲池。表空间的初始表空间页面大小为 4096 字节,初始表空间为 1000KB,表大小增加设置为 50%。

db2 "call rdsadmin.create_tablespace( 'TESTDB', 'SP8', 'BP8', 4096, 1000, 50)"

示例 2:创建临时表空间并分配缓冲池

以下示例创建一个名为 SP8 的临时表空间。它为名为 TESTDB 的数据库分配一个大小为 8 KiB 的名为 BP8 的缓冲池。

db2 "call rdsadmin.create_tablespace( 'TESTDB', 'SP8', 'BP8', 8192, NULL, NULL, 'T')"

示例 3:创建表空间并分配预提取页面大小

以下示例为名为 TESTDB 的数据库创建名为 SP8 的表空间。表空间的初始表空间增加大小为 50,预提取页面大小为 800

db2 "call rdsadmin.create_tablespace( 'TESTDB', 'SP8', NULL, NULL, NULL, 50, NULL, '800')"

rdsadmin.alter_tablespace

更改表空间。

语法

db2 "call rdsadmin.alter_tablespace( 'database_name', 'tablespace_name', 'buffer_pool_name', tablespace_increase_size, 'max_size', 'reduce_max', 'reduce_stop', 'reduce_value', 'lower_high_water', 'lower_high_water_stop', 'switch_online', 'tablespace_prefetch_size')"

参数

以下参数为必需参数:

database_name

使用表空间的数据库的名称。数据类型为 varchar

tablespace_name

要更改的表空间的名称。数据类型为 varchar

以下参数可选:

buffer_pool_name

要为其分配表空间的缓冲池的名称。数据类型为 varchar。默认值是空字符串。

重要

您必须已经具有相同页面大小的缓冲池才能与表空间相关联。

tablespace_increase_size

表空间已满时增加表空间的百分比。数据类型为 integer。有效值:1100。默认为 0

max_size

表空间的最大大小。数据类型为 varchar。有效值:integer K | M | GNONE。默认为 NONE

reduce_max

指定是否将高水位降到其最大限制。数据类型为 char。默认为 N

reduce_stop

指定是中断前一个 reduce_max 命令还是 reduce_value 命令。数据类型为 char。默认为 N

reduce_value

减少表空间高水位所依据的数字或百分比。数据类型为 varchar。有效值:integer K| M | G1100。默认为 N

lower_high_water

指定是否运行 ALTER TABLESPACE LOWER HIGH WATER MARK 命令。数据类型为 char。默认为 N

lower_high_water_stop

指定是否运行 ALTER TABLESPACE LOWER HIGH WATER MARK STOP 命令。数据类型为 char。默认为 N

switch_online

指定是否运行 ALTER TABLESPACE SWITCH ONLINE 命令。数据类型为 char。默认为 N

tablespace_prefetch_size

表空间的预提取页面大小。数据类型为 char。有效值:AUTOMATIC(不区分大小写),或小于或等于 32767 的非零正整数。

注意

此参数仅适用于 buffer_pool_nametable_increase_sizemax_sizeswitch_online。参数不适用于 reduce_maxreduce_stopreduce_valuelower_high_waterlower_high_water_stop

使用说明

在调用存储过程之前,请查看以下注意事项:

  • 对于用户临时数据,如果将 tablespace_type 设置为 T,则 rdsadmin.alter_tablespace 存储过程将无法在表空间上运行。

  • 可选参数 reduce_maxreduce_stopreduce_valuelower_high_waterlower_high_water_stopswitch_online 是互斥的。不能将它们与 rdsadmin.alter_tablespace 命令中的任何其他可选参数(如 buffer_pool_name)组合使用。有关更多信息,请参阅 Statement not valid

有关检查更改表空间的状态的信息,请参阅rdsadmin.get_task_status

有关调用存储过程时返回的错误消息,请参阅排查存储过程中的错误

示例

示例 1:降低高水位线

以下示例更改名为 SP8 的表空间,并为名为 TESTDB 的数据库分配一个名为 BP8 的缓冲池以降低高水位线。

db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'SP8', 'BP8', NULL, NULL, 'Y')"

示例 2:降低高水位线

以下示例在数据库 TESTDB 中名为 TBSP_TEST 的表空间上运行 REDUCE MAX 命令。

db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'TBSP_TEST', NULL, NULL, NULL, 'Y')"

示例 3:中断命令以降低高水位线

以下示例在数据库 TESTDB 中名为 TBSP_TEST 的表空间上运行 REDUCE STOP 命令。

db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'TBSP_TEST', NULL, NULL, NULL, NULL, 'Y')"

示例 4:更改现有的预提取页面大小

以下示例在名为 TSBP_TEST 的表空间上运行 ALTER TABLESPACE SWITCH ONLINE 命令,并将现有的预提取页面大小更改为 64

db2 "call rdsadmin.alter_tablespace( 'TESTDB', 'TBSP_TEST', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, ‘Y’, ‘64’)"

rdsadmin.rename_tablespace

重命名表空间。

语法

db2 "call rdsadmin.rename_tablespace( ?, 'database_name', 'source_tablespace_name', 'target_tablespace_name')"

参数

以下参数为必需参数:

?

输出错误消息的参数标记。此参数仅接受 ?。

database_name

表空间所属的数据库的名称。数据类型为 varchar

source_tablespace_name

要重命名的表空间的名称。数据类型为 varchar

target_tablespace_name

表空间的名称。数据类型为 varchar

新名称具有以下限制:

  • 不能与现有表空间的名称相同。

  • 只能包含字符 _$#@a-zA-Z0-9

  • 不能以 _$ 开头。

  • 不能以 SYS 开头。

使用说明

有关检查重命名表空间的状态的信息,请参阅rdsadmin.get_task_status

您无法重命名属于 rdsadmin 数据库的表空间。

示例

以下示例将名为 TESTDB 的数据库中名为 SP8 的表空间重命名为 SP9

db2 "call rdsadmin.rename_tablespace( ?, 'TESTDB', 'SP8'. 'SP9')"

rdsadmin.drop_tablespace

删除表空间。

语法

db2 "call rdsadmin.drop_tablespace( 'database_name', 'tablespace_name')"

参数

以下参数为必需参数:

database_name

表空间所属的数据库的名称。数据类型为 varchar

tablespace_name

要删除的表空间的名称。数据类型为 varchar

使用说明

有关检查删除表空间的状态的信息,请参阅rdsadmin.get_task_status

示例

以下示例从名为 TESTDB 的数据库中删除名为 SP8 的表空间。

db2 "call rdsadmin.drop_tablespace( 'TESTDB', 'SP8')"