

# 用于 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\_tablespace](#db2-sp-create-tablespace)
+ [rdsadmin.alter\_tablespace](#db2-sp-alter-tablespace)
+ [rdsadmin.rename\_tablespace](#db2-sp-rename-tablespace)
+ [rdsadmin.drop\_tablespace](#db2-sp-drop-tablespace)

## rdsadmin.create\_tablespace
<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\_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](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\_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 的非零正整数。

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

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

有关检查创建表空间的状态的信息，请参阅[rdsadmin.get\_task\_status](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\_tablespace
<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\_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`。

### 使用说明
<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\_task\_status](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\_tablespace
<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\_name}}  
表空间所属的数据库的名称。数据类型为 `varchar`。

{{source\_tablespace\_name}}  
要重命名的表空间的名称。数据类型为 `varchar`。

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

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

有关检查重命名表空间的状态的信息，请参阅[rdsadmin.get\_task\_status](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\_tablespace
<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\_name}}  
表空间所属的数据库的名称。数据类型为 `varchar`。

{{tablespace\_name}}  
要删除的表空间的名称。数据类型为 `varchar`。

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

有关检查删除表空间的状态的信息，请参阅[rdsadmin.get\_task\_status](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')"
```