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

管理表空间

以下存储过程管理 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')"

参数

以下参数为必需参数:

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 页面,我们建议启用时间点故障恢复和自动备份。否则,您将面临无法从损坏的页面中恢复的风险。有关更多信息,请参阅 备份简介将数据库实例还原到指定时间

tablespace_initial_size

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

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

注意

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

tablespace_increase_size

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

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

注意

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

tablespace_type

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

使用说明

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

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

示例

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

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

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

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

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')"

参数

以下参数为必需参数:

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

使用说明

可选参数 reduce_maxreduce_stopreduce_valuelower_high_waterlower_high_water_stopswitch_online 是互斥的。不能将它们与 rdsadmin.alter_tablespace 命令中的任何其他可选参数(如 buffer_pool_name)组合使用。如果将这些参数与 rdsadmin.alter_tablespace 命令中的任何其他可选参数组合在一起,则在运行 rdsadmin.get_task_status 时,Db2 将返回如下错误:

DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL1763N Invalid ALTER TABLESPACE statement for table space "TBSP_TEST" due to reason "12"

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

示例

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

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

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

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

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

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

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')"