用于 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
')"
参数
以下参数为必需参数:
database_name
-
要在其中创建表空间的数据库的名称。数据类型为
varchar
。 tablespace_name
要创建的表空间的名称。数据类型为
varchar
。表空间名称具有以下限制:
不能与此数据库中现有表空间的名称相同。
只能包含字符
_$#@a-zA-Z0-9
。不能以
_
或$
开头。不能以
SYS
开头。
以下参数为可选参数:
buffer_pool_name
-
要为其分配表空间的缓冲池的名称。数据类型为
varchar
。默认值是空字符串。重要
您必须已经具有相同页面大小的缓冲池才能与表空间相关联。
tablespace_page_size
-
表空间的页面大小(以字节为单位)。数据类型为
integer
。有效值:4096
、8192
、16384
、32768
。默认值是通过调用 rdsadmin.create_database 创建数据库时使用的页面大小。重要
Amazon RDS 支持 4KiB、8KiB 和 16KiB 页面的写入原子性。相比之下,32KiB 页面可能面临写入数据受到损坏 或部分数据写入桌面的风险。如果使用 32KiB 页面,我们建议启用时间点故障恢复和自动备份。否则,您将面临无法从损坏的页面中恢复的风险。有关更多信息,请参阅备份简介 和将 Amazon RDS 的数据库实例还原到指定时间。
tablespace_initial_size
-
表空间的初始大小,以千字节(KB)为单位。数据类型为
integer
。有效值:48
或更高。默认值为 Null。如果您没有设置值,则 Db2 为您设置适当的值。
注意
此参数不适用于临时表空间,因为系统管理临时表空间。
tablespace_increase_size
-
表空间已满时增加表空间的百分比。数据类型为
integer
。有效值:1
–100
。默认值为 Null。如果您没有设置值,则 Db2 为您设置适当的值。
注意
此参数不适用于临时表空间,因为系统管理临时表空间。
tablespace_type
-
表空间的类型。数据类型为
char
。有效值:U
(对于用户数据)、T
(对于用户临时数据)或S
(对于系统临时数据)。默认为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
。有效值:1
–100
。默认为0
。 max_size
-
表空间的最大大小。数据类型为
varchar
。有效值:integer
K
|M
|G
或NONE
。默认为NONE
。 reduce_max
-
指定是否将高水位降到其最大限制。数据类型为
char
。默认为N
。 reduce_stop
-
指定是中断前一个
reduce_max
命令还是reduce_value
命令。数据类型为char
。默认为N
。 reduce_value
-
减少表空间高水位所依据的数字或百分比。数据类型为
varchar
。有效值:integer
K
|M
|G
或1
–100
。默认为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_max
、reduce_stop
、reduce_value
、lower_high_water
、lower_high_water_stop
和 switch_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')"