

# RDS for Oracle でテーブルスペースを使用する
<a name="Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles"></a>

RDS for Oracle では、データベースのデータを保存する論理ストレージユニットであるテーブルスペースを使用できます。

**重要**  
DB インスタンスにレプリカがある場合は、セッションレベルの変更ではなくパラメータグループ設定を使用してデフォルトのファイルの場所を管理することをお勧めします。プライマリインスタンスのデフォルトファイルの場所に対するセッションレベルの変更は、レプリカに自動的に反映されません。パラメータグループ設定を使用すると、プライマリインスタンスとレプリカインスタンス間で一貫したファイルの場所が確保されます。

**Topics**
+ [RDS for Oracle でのデータベースファイルの場所の指定](#Appendix.Oracle.CommonDBATasks.DatabaseFileLocations)
+ [RDS for Oracle でのテーブルスペースの作成とサイズ設定](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)
+ [RDS for Oracle で追加のストレージボリュームにテーブルスペースを作成する](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations)
+ [RDS for Oracle でのデフォルトのテーブルスペースの設定](#Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace)
+ [RDS for Oracle でのデフォルトの一時テーブルスペースの設定](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)
+ [インスタンスストアに一時テーブルスペースを作成する](#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store)

## RDS for Oracle でのデータベースファイルの場所の指定
<a name="Appendix.Oracle.CommonDBATasks.DatabaseFileLocations"></a>

RDS for Oracle は、Oracle Managed Files (OMF) を使用してデータベースファイルに名前を付けます。データベースファイルを作成すると、データベースは `DB_CREATE_FILE_DEST` 初期化パラメータの現在の設定に基づいて設定を取得します。

`DB_CREATE_FILE_DEST` 初期化パラメータのデフォルト値は、`/rdsdbdata/db` スタンドアロンデータベースとコンテナ化された (CDB/MT) アーキテクチャ用 `/rdsdbdata/db/pdb` です。DB インスタンスに追加のストレージボリュームがある場合は、ボリュームロケーションに `DB_CREATE_FILE_DEST` を設定できます。例えば、インスタンスに `/rdsdbdata/db` にマウントされたボリュームがある場合、`DB_CREATE_FILE_DEST` をこの値に設定できます。

`DB_CREATE_FILE_DEST` パラメータは、セッションレベルまたは Oracle データベースインスタンスレベルで変更できます。

### インスタンスレベルで DB\$1CREATE\$1FILE\$1SET を変更する
<a name="Appendix.Oracle.CommonDBATasks.InstanceLevelModification"></a>

インスタンスレベルでパラメータを変更するには、DB インスタンスに割り当てられたパラメータグループのパラメータを更新して適用します。詳細については、「[RDS for Oracle 初期化パラメータ](Oracle.Concepts.FeatureSupport.Parameters.md)」および「[Amazon RDS の DB パラメータグループのパラメータの変更](USER_WorkingWithParamGroups.Modifying.md)」を参照してください。

### セッションレベルで DB\$1CREATE\$1FILE\$1DEST を変更する
<a name="Appendix.Oracle.CommonDBATasks.SessionLevelModification"></a>

`ALTER SESSION` ステートメントを実行して、セッションレベルでパラメータを変更できます。このアプローチは、インスタンス全体に影響を与えることなく、特定のセッションの特定の場所にデータベースファイルを作成する場合に便利です。

次の例は、現在のパラメータ値を確認し、セッションで変更する方法を示しています。

```
SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata/db

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata2/db
```

## RDS for Oracle でのテーブルスペースの作成とサイズ設定
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles"></a>

テーブルスペースを作成すると、データベースは作成時に `DB_CREATE_FILE_DEST` 初期化パラメータで指定されたストレージボリュームにデータファイルを作成します。データファイルのサイズを指定しない場合、デフォルトの `AUTOEXTEND ON` でテーブルスペースが作成され。最大サイズはありません。次の例では、テーブルスペース *users1* は自動拡張可能です。

```
CREATE TABLESPACE users1;
```

これらのデフォルト設定のため、テーブルスペースはすべての割り当てられたストレージを消費するまで大きくなります。永続テーブルスペースとテンポラリテーブルスペースに適切な最大サイズを指定し、リージョンの使用状況を注意深くモニタリングすることをお勧めします。

次の例では、スタートサイズが 1 ギガバイトのテーブルスペース *users2* を作成します。データファイルのサイズが指定されていても、`AUTOEXTEND ON` が指定されていないため、テーブルスペースは自動拡張できません。

```
CREATE TABLESPACE users2 DATAFILE SIZE 1G;
```

次の例では、スタートサイズが 1 ギガバイト、自動拡張がオン、最大サイズが 10 ギガバイトのテーブルスペース *users3* を作成します。

```
CREATE TABLESPACE users3 DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 10G;
```

次の例では、一時テーブルスペース *temp01* を作成します。

```
CREATE TEMPORARY TABLESPACE temp01;
```

`ALTER TABLESPACE` を使用すると、bigfile テーブルスペースをサイズ変更できます。サイズは、キロバイト (K)、メガバイト (M)、ギガバイト (G)、またはテラバイト (T) で指定できます。次の例では、bigfile テーブルスペース *users\$1bf* のサイズを 200 MB に変更します。

```
ALTER TABLESPACE users_bf RESIZE 200M;
```

次の例では、smallfile テーブルスペース *users\$1sf* に追加のデータファイルを追加します。

```
ALTER TABLESPACE users_sf ADD DATAFILE SIZE 100000M AUTOEXTEND ON NEXT 250m MAXSIZE UNLIMITED;
```

## RDS for Oracle で追加のストレージボリュームにテーブルスペースを作成する
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations"></a>

追加のストレージボリュームにテーブルスペースを作成するには、`DB_CREATE_FILE_DEST` パラメータをボリュームの場所に変更します。次の例では、ファイルの場所を `/rdsdbdata2/db` に設定します。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.
```

次の例では、追加のボリューム `/rdsdbdata2/db` にテーブルスペースを作成します。

```
CREATE TABLESPACE new_tablespace DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'NEW_TABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
NEW_TABLESPACE                     7 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_newtable_a123b4c5_.dbf
```

smallfile テーブルスペースを作成し、そのデータファイルを異なるストレージボリュームに分散するには、作成後にテーブルスペースにデータファイルを追加します。次の例では、`/rdsdbdata/db` のデフォルトの場所にデータファイルを含むテーブルスペースを作成します。次に、デフォルトの送信先を `/rdsdbdata/db2` に設定します。新しく作成したテーブルスペースにデータファイルを追加すると、データベースはそのファイルを `/rdsdbdata/db2` に保存します。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata/db';

Session altered.

CREATE SMALLFILE TABLESPACE smalltbs DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

ALTER TABLESPACE smalltbs ADD DATAFILE SIZE 10G;

Tablespace altered.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf
SMALLTBS                           9 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_smalltbs_n564004g_.dbf
```

## RDS for Oracle でのデフォルトのテーブルスペースの設定
<a name="Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace"></a>

デフォルトのテーブルスペースを設定するには、Amazon RDS プロシージャ `rdsadmin.rdsadmin_util.alter_default_tablespace` を使用します。`alter_default_tablespace` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  はい  |  デフォルトのテーブルスペースの名前。  | 

次の例では、デフォルトのテーブルスペースを *users2* に設定します。

```
EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');
```

## RDS for Oracle でのデフォルトの一時テーブルスペースの設定
<a name="Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace"></a>

デフォルトのテンポラリテーブルスペースを設定するには、Amazon RDS プロシージャ `rdsadmin.rdsadmin_util.alter_default_temp_tablespace` を使用します。`alter_default_temp_tablespace` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  はい  |  デフォルトのテンポラリテーブルスペースの名前。  | 

次の例では、デフォルトのテンポラリテーブルスペースを *temp01* に設定します。

```
EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');
```

## インスタンスストアに一時テーブルスペースを作成する
<a name="Appendix.Oracle.CommonDBATasks.creating-tts-instance-store"></a>

インスタンスストアに一時テーブルスペースを作成するには、Amazon RDS プロシージャ `rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace` を使用します。`create_inst_store_tmp_tblspace` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  はい  |  テンポラリテーブルスペースの名前。  | 

次の例では、インスタンスストアに一時テーブルスペース *temp01* を作成します。

```
EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace(p_tablespace_name => 'temp01');
```

**重要**  
`rdsadmin_util.create_inst_store_tmp_tblspace` を実行しても、新しく作成された一時テーブルスペースは、デフォルトの一時テーブルスペースとして自動的に設定されません。これをデフォルトとして設定するには、「[RDS for Oracle でのデフォルトの一時テーブルスペースの設定](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)」を参照してください。

詳細については、「[RDS for Oracle インスタンスストアへの一時データの保存](CHAP_Oracle.advanced-features.instance-store.md)」を参照してください。