

# 用于 RDS for Db2 的表空间的存储过程
<a name="db2-sp-managing-tablespaces"></a>

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

这些存储过程可用于执行各种任务。此列表并不详尽。
+ [表空间的常见任务](db2-managing-tablespaces.md)
+ [生成性能报告](db2-managing-databases.md#db2-generating-performance-reports)
+ [使用 db2look 复制数据库元数据](db2-native-db2-tools-db2look.md)
+ [为 IBM Db2 Data Management Console 创建存储库数据库](db2-connecting-with-ibm-data-management-console.md#db2-creating-repo-db-monitoring-dmc)

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

**Topics**
+ [rdsadmin.create\$1tablespace](#db2-sp-create-tablespace)
+ [rdsadmin.alter\$1tablespace](#db2-sp-alter-tablespace)
+ [rdsadmin.rename\$1tablespace](#db2-sp-rename-tablespace)
+ [rdsadmin.drop\$1tablespace](#db2-sp-drop-tablespace)

## rdsadmin.create\$1tablespace
<a name="db2-sp-create-tablespace"></a>

创建表空间。

### 语法
<a name="db2-sp-create-tablespace-syntax"></a>

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

### 参数
<a name="db2-sp-create-tablespace.parameters"></a>

以下参数为必需参数：

*database\$1name*  
要在其中创建表空间的数据库的名称。数据类型为 `varchar`。

*tablespace\$1name*  
要创建的表空间的名称。数据类型为 `varchar`。  
表空间名称具有以下限制：  
+ 不能与此数据库中现有表空间的名称相同。
+ 只能包含字符 `_$#@a-zA-Z0-9`。
+ 不能以 `_` 或 `$` 开头。
+ 不能以 `SYS` 开头。

以下参数可选：

*buffer\$1pool\$1name*  
要为其分配表空间的缓冲池的名称。数据类型为 `varchar`。默认值是空字符串。  
您必须已经具有相同页面大小的缓冲池才能与表空间相关联。

*tablespace\$1page\$1size*  
表空间的页面大小（以字节为单位）。数据类型为 `integer`。有效值：`4096`、`8192`、`16384`、`32768`。默认值是通过调用 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database) 创建数据库时使用的页面大小。  
Amazon RDS 支持 4KiB、8KiB 和 16KiB 页面的写入原子性。相比之下，32KiB 页面可能面临写入数据受到损坏或部分数据写入桌面的风险。如果使用 32KiB 页面，我们建议启用时间点故障恢复和自动备份。否则，您将面临无法从损坏的页面中恢复的风险。有关更多信息，请参阅[备份简介](USER_WorkingWithAutomatedBackups.md)和[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。

*tablespace\$1initial\$1size*  
表空间的初始大小，以千字节（KB）为单位。数据类型为 `integer`。有效值：`48` 或更高。默认值为 Null。  
如果您没有设置值，则 Db2 为您设置适当的值。  
此参数不适用于临时表空间，因为系统管理临时表空间。

*tablespace\$1increase\$1size*  
表空间已满时增加表空间的百分比。数据类型为 `integer`。有效值：`1` – `100`。默认值为 Null。  
如果您没有设置值，则 Db2 为您设置适当的值。  
此参数不适用于临时表空间，因为系统管理临时表空间。

*tablespace\$1type*  
表空间的类型。数据类型为 `char`。有效值：`U`（对于用户数据）、`T`（对于用户临时数据）或 `S`（对于系统临时数据）。默认值为 `U`。

*tablespace\$1prefetch\$1size*  
表空间的预提取页面大小。数据类型为 `char`。有效值：`AUTOMATIC`（不区分大小写），或小于或等于 32767 的非零正整数。

### 使用说明
<a name="db2-sp-create-tablespace-usage-notes"></a>

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

有关检查创建表空间的状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 示例
<a name="db2-sp-create-tablespace-examples"></a>

**示例 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\$1tablespace
<a name="db2-sp-alter-tablespace"></a>

更改表空间。

### 语法
<a name="db2-sp-alter-tablespace-syntax"></a>

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

### 参数
<a name="db2-sp-alter-tablespace-parameters"></a>

以下参数为必需参数：

*database\$1name*  
使用表空间的数据库的名称。数据类型为 `varchar`。

*tablespace\$1name*  
要更改的表空间的名称。数据类型为 `varchar`。

以下参数可选：

*buffer\$1pool\$1name*   
要为其分配表空间的缓冲池的名称。数据类型为 `varchar`。默认值是空字符串。  
您必须已经具有相同页面大小的缓冲池才能与表空间相关联。

*tablespace\$1increase\$1size*  
表空间已满时增加表空间的百分比。数据类型为 `integer`。有效值：`1` – `100`。默认值为 `0`。

*max\$1size*  
表空间的最大大小。数据类型为 `varchar`。有效值：*integer* `K` \$1 `M` \$1 `G` 或 `NONE`。默认值为 `NONE`。

*reduce\$1max*  
指定是否将高水位降到其最大限制。数据类型为 `char`。默认值为 `N`。

*reduce\$1stop*  
指定是中断前一个 `reduce_max` 命令还是 `reduce_value` 命令。数据类型为 `char`。默认值为 `N`。

*reduce\$1value*  
减少表空间高水位所依据的数字或百分比。数据类型为 `varchar`。有效值：*integer* `K`\$1 `M` \$1 `G` 或 `1`–`100`。默认值为 `N`。

*lower\$1high\$1water*  
指定是否运行 `ALTER TABLESPACE LOWER HIGH WATER MARK` 命令。数据类型为 `char`。默认值为 `N`。

*lower\$1high\$1water\$1stop*  
指定是否运行 `ALTER TABLESPACE LOWER HIGH WATER MARK STOP` 命令。数据类型为 `char`。默认值为 `N`。

*switch\$1online*  
指定是否运行 `ALTER TABLESPACE SWITCH ONLINE` 命令。数据类型为 `char`。默认值为 `N`。

*tablespace\$1prefetch\$1size*  
表空间的预提取页面大小。数据类型为 `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`。

### 使用说明
<a name="db2-sp-alter-tablespace-usage-notes"></a>

在调用存储过程之前，请查看以下注意事项：
+ 对于用户临时数据，如果将 `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](db2-troubleshooting.md#alter-tablespace-sp-statement-not-valid)。

有关检查更改表空间的状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

有关调用存储过程时返回的错误消息，请参阅[存储过程错误](db2-troubleshooting.md#db2-troubleshooting-stored-procedures)。

### 示例
<a name="db2-sp-alter-tablespace-examples"></a>

**示例 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\$1tablespace
<a name="db2-sp-rename-tablespace"></a>

重命名表空间。

### 语法
<a name="db2-sp-rename-tablespace-syntax"></a>

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

### 参数
<a name="db2-sp-rename-tablespace-parameters"></a>

以下参数为必需参数：

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

*database\$1name*  
表空间所属的数据库的名称。数据类型为 `varchar`。

*source\$1tablespace\$1name*  
要重命名的表空间的名称。数据类型为 `varchar`。

*target\$1tablespace\$1name*  
表空间的名称。数据类型为 `varchar`。  
新名称具有以下限制：  
+ 不能与现有表空间的名称相同。
+ 只能包含字符 `_$#@a-zA-Z0-9`。
+ 不能以 `_` 或 `$` 开头。
+ 不能以 `SYS` 开头。

### 使用说明
<a name="db2-sp-rename-tablespace-usage-notes"></a>

有关检查重命名表空间的状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

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

### 示例
<a name="db2-sp-rename-tablespace-examples"></a>

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

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

## rdsadmin.drop\$1tablespace
<a name="db2-sp-drop-tablespace"></a>

删除表空间。

### 语法
<a name="db2-sp-drop-tablespace-syntax"></a>

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

### 参数
<a name="db2-sp-drop-tablespace-parameters"></a>

以下参数为必需参数：

*database\$1name*  
表空间所属的数据库的名称。数据类型为 `varchar`。

*tablespace\$1name*  
要删除的表空间的名称。数据类型为 `varchar`。

### 使用说明
<a name="db2-sp-drop-tablespace-usage-notes"></a>

有关检查删除表空间的状态的信息，请参阅[rdsadmin.get\$1task\$1status](db2-user-defined-functions.md#db2-udf-get-task-status)。

### 示例
<a name="db2-sp-drop-tablespace-examples"></a>

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

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