用于 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。有效值:integerK|M|G或NONE。默认值为NONE。 reduce_max-
指定是否将高水位降到其最大限制。数据类型为
char。默认值为N。 reduce_stop-
指定是中断前一个
reduce_max命令还是reduce_value命令。数据类型为char。默认值为N。 reduce_value-
减少表空间高水位所依据的数字或百分比。数据类型为
varchar。有效值:integerK|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')"