用于 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
。有效值: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
。 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
。有效值: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
。 tablespace_prefetch_size
-
表空间的预提取页面大小。数据类型为
char
。有效值:AUTOMATIC
(不区分大小写),或小于或等于 32767 的非零正整数。注意
此参数仅适用于
buffer_pool_name
、table_increase_size
、max_size
和switch_online
。参数不适用于reduce_max
、reduce_stop
、reduce_value
、lower_high_water
和lower_high_water_stop
。
使用说明
在调用存储过程之前,请查看以下注意事项:
-
对于用户临时数据,如果将
tablespace_type
设置为T
,则rdsadmin.alter_tablespace
存储过程将无法在表空间上运行。 -
可选参数
reduce_max
、reduce_stop
、reduce_value
、lower_high_water
、lower_high_water_stop
和switch_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')"