

# Oracle DB インスタンスの一般的なデータベースタスクの実行
<a name="Appendix.Oracle.CommonDBATasks.Database"></a>

次に、Oracle を実行している Amazon RDS DB インスタンスのデータベースに関連する特定の一般的な DBA タスクを実行する方法を示します。マネージドサービスエクスペリエンスを提供するために、Amazon RDS は DB インスタンスへのシェルアクセスを提供していません。また、Amazon RDS では、高度な特権を必要とする、一部のシステムプロシージャやテーブルへのアクセスが制限されます。

**Topics**
+ [

# データベースのグローバル名の変更
](Appendix.Oracle.CommonDBATasks.RenamingGlobalName.md)
+ [

# RDS for Oracle でテーブルスペースを使用する
](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md)
+ [

# RDS for Oracle で一時ファイルを使用する
](Appendix.Oracle.CommonDBATasks.using-tempfiles.md)
+ [

# RDS for Oracle のテーブルスペース、データファイル、一時ファイルのサイズ変更
](Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica.md)
+ [

# RDS for Oracle のストレージボリューム間のデータの移動
](Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes.md)
+ [

# RDS for Oracle での外部テーブルの使用
](Appendix.Oracle.CommonDBATasks.External_Tables.md)

# データベースのグローバル名の変更
<a name="Appendix.Oracle.CommonDBATasks.RenamingGlobalName"></a>

データベースのグローバル名を変更するには、Amazon RDS プロシージャ `rdsadmin.rdsadmin_util.rename_global_name` を使用します。`rename_global_name` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_new_global_name`  |  varchar2  |  —  |  はい  |  データベースの新しいグローバル名。  | 

名前の変更を実行するには、データベースが開いている必要があります。データベースのグローバル名の変更の詳細については、Oracle ドキュメントの「[ALTER DATABASE](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_1004.htm#SQLRF52547)」を参照してください。

次の例では、データベースのグローバル名を `new_global_name` に変更します。

```
EXEC rdsadmin.rdsadmin_util.rename_global_name(p_new_global_name => 'new_global_name');
```

# 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)」を参照してください。

# RDS for Oracle で一時ファイルを使用する
<a name="Appendix.Oracle.CommonDBATasks.using-tempfiles"></a>

## リードレプリカのインスタンスストアへの一時ファイルの追加
<a name="Appendix.Oracle.CommonDBATasks.adding-tempfile-replica"></a>

プライマリ DB インスタンスで一時テーブルスペースを作成すると、リードレプリカの一時ファイルは作成されません。次のいずれかの理由により、リードレプリカに空の一時テーブルスペースが存在するとします。
+ リードレプリカのテーブルスペースから一時ファイルを削除しました。詳細については、「[リードレプリカの一時ファイルの削除](Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica.md)」を参照してください。
+ プライマリ DB インスタンスに新しい一時テーブルスペースを作成しました。この場合、RDS for Oracle はメタデータをリードレプリカに同期します。

一時ファイルを空の一時テーブルスペースに追加し、その一時ファイルをインスタンスストアに保存できます。インスタンスストアに一時ファイルを作成するには、Amazon RDS プロシージャ `rdsadmin.rdsadmin_util.add_inst_store_tempfile` を使用します。この手順はリードレプリカでのみ使用できます。 プロシージャには以下のパラメータがあります。


****  

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

次の例では、空の一時テーブルスペース *temp01* がリードレプリカに存在します。次のコマンドを実行して、このテーブルスペースの一時ファイルを作成し、インスタンスストアに保存します。

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

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

# リードレプリカの一時ファイルの削除
<a name="Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica"></a>

既存の一時テーブルスペースをリードレプリカから削除することはできません。リードレプリカの一時ファイルストレージを Amazon EBS からインスタンスストアに、またはインスタンスストアから Amazon EBS に変更できます。これらの目標を達成するには、次の操作を行います。

1. リードレプリカの一時テーブルスペースにある現在の一時ファイルを削除します。

1. 別のストレージに新しい一時ファイルを作成します。

一時ファイルを削除するには、Amazon RDS プロシージャ `rdsadmin.rdsadmin_util. drop_replica_tempfiles` を使用します。この手順はリードレプリカでのみ使用できます。`drop_replica_tempfiles` プロシージャには以下のパラメータがあります。


****  

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

*temp01* という名前の一時テーブルスペースがリードレプリカのインスタンスストアにあると仮定します。次のコマンドを実行して、このテーブルスペースのすべての一時ファイルを削除します。

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

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

# RDS for Oracle のテーブルスペース、データファイル、一時ファイルのサイズ変更
<a name="Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica"></a>

デフォルトでは、Oracle テーブルスペースは自動エクステンションをオンにして作成され、最大サイズでは作成されません。これらのデフォルト設定のため、場合によってはテーブルスペースが大きくなりすぎる可能性があります。永続テーブルスペースとテンポラリテーブルスペースに適切な最大サイズを指定し、リージョンの使用状況を注意深くモニタリングすることをお勧めします。

## 永続テーブルスペースの変更
<a name="resizing-perm-tbs"></a>

RDS for Oracle DB インスタンスの永続テーブルスペースのサイズを変更するには、以下の Amazon RDS 手順のいずれかを使用してください。
+ `rdsadmin.rdsadmin_util.resize_datafile`
+ `rdsadmin.rdsadmin_util.autoextend_datafile`

`resize_datafile` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  number  |  —  |  はい  |  サイズ変更するデータファイルの識別子。  | 
|  `p_size`  |  varchar2  |  —  |  はい  |  データファイルのサイズ。サイズをバイト (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定します。  | 

`autoextend_datafile` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  number  |  —  |  はい  |  サイズ変更するデータファイルの識別子。  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  はい  |  自動拡張機能の状態。`ON` を指定するとデータファイルは自動的に拡張し、`OFF` を指定すると自動拡張はオフになります。  | 
|  `p_next`  |  varchar2  |  —  |  いいえ  |  次のデータファイル増分のサイズ。サイズをバイト (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定します。  | 
|  `p_maxsize`  |  varchar2  |  —  |  いいえ  |  自動拡張に許可される最大ディスク容量。サイズをバイト (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定します。`UNLIMITED` を指定するとファイルサイズ制限を削除できます。  | 

次の例では、データファイル 4 のサイズを 500 MB に変更します。

```
EXEC rdsadmin.rdsadmin_util.resize_datafile(4,'500M');
```

次の例では、データファイル 4 の自動拡張をオフにします。また、データファイル 5 の自動拡張はオンになり、増分は 128 MB で、最大サイズはありません。

```
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(4,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(5,'ON','128M','UNLIMITED');
```

## 一時テーブルスペースのサイズ変更
<a name="resizing-temp-tbs"></a>

RDS for Oracle DB インスタンスの一時テーブルスペース (リードレプリカを含む) のサイズを変更するには、以下の Amazon RDS 手順のいずれかを使用します。
+ `rdsadmin.rdsadmin_util.resize_temp_tablespace`
+ `rdsadmin.rdsadmin_util.resize_tempfile`
+ `rdsadmin.rdsadmin_util.autoextend_tempfile`

`resize_temp_tablespace` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_tablespace_name`  |  varchar2  |  —  |  はい  |  サイズを変更するテンポラリテーブルスペースの名前。  | 
|  `p_size`  |  varchar2  |  —  |  はい  |  テーブルスペースのサイズ。サイズをバイト (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定します。  | 

`resize_tempfile` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  number  |  —  |  はい  |  サイズを変更する一時ファイルの識別子。  | 
|  `p_size`  |  varchar2  |  —  |  はい  |  一時ファイルのサイズ。サイズをバイト (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定します。  | 

`autoextend_tempfile` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  number  |  —  |  はい  |  サイズを変更する一時ファイルの識別子。  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  はい  |  自動拡張機能の状態。`ON` を指定すると一時ファイルは自動的に拡張し、`OFF` を指定すると自動拡張はオフになります。  | 
|  `p_next`  |  varchar2  |  —  |  いいえ  |  次の一時ファイル増分のサイズ。サイズをバイト (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定します。  | 
|  `p_maxsize`  |  varchar2  |  —  |  いいえ  |  自動拡張に許可される最大ディスク容量。サイズをバイト (デフォルト)、キロバイト (K)、メガバイト (M)、またはギガバイト (G) で指定します。`UNLIMITED` を指定するとファイルサイズ制限を削除できます。  | 

次の例は、`TEMP` という一時テーブルスペースのサイズを 4 ギガバイトに変更します。

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
```

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');
```

次の例は、ファイル識別子が `1` の一時ファイルに基づいて、一時テーブルスペースのサイズを 2 メガバイトに変更します。

```
EXEC rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');
```

次の例では、一時ファイル 1 の自動拡張をオフにします。また、一時ファイル 2 の最大自動拡張サイズも 10 ギガバイト、増分を 100 メガバイトに設定します。

```
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(1,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(2,'ON','100M','10G');
```

Oracle DB インスタンスのリードレプリカの詳細については、「[Amazon RDS for Oracle でのリードレプリカの使用](oracle-read-replicas.md)」を参照してください。

# RDS for Oracle のストレージボリューム間のデータの移動
<a name="Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes"></a>

データファイルとデータベースオブジェクトは、プライマリストレージボリュームと追加のストレージボリューム間で移動できます。データを移動する前に、次の点を考慮してください。
+ ソースボリュームとターゲットボリュームには十分な空き領域が必要です。
+ データ移動オペレーションは、両方のボリュームで I/O を消費します。
+ 大きなデータ移動は、データベースのパフォーマンスに影響を与える可能性があります。
+ スナップショットを復元する場合、EBS 遅延ロードの影響を受けると、ストレージボリューム間のデータの移動が遅くなる可能性があります。

**Topics**
+ [

## RDS for Oracle のボリューム間でのデータファイルの移動
](#Appendix.Oracle.CommonDBATasks.MovingDatafiles)
+ [

## RDS for Oracle のボリューム間でテーブルデータとインデックスを移動する
](#Appendix.Oracle.CommonDBATasks.MovingTableData)
+ [

## 追加ボリュームを使用した LOB ストレージの管理
](#Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage)

## RDS for Oracle のボリューム間でのデータファイルの移動
<a name="Appendix.Oracle.CommonDBATasks.MovingDatafiles"></a>

ストレージボリューム間でデータファイルを移動するには、Amazon RDS プロシージャ `rdsadmin.rdsadmin_util.move_datafile` を使用します。次の要件に注意してください。
+ `move_datafile` プロシージャを実行するには、Oracle Enterprise Edition を使用する必要があります。
+ テーブルスペース `SYSTEM` と `RDSADMIN` を移動することはできません。

`move_datafile` プロシージャには以下のパラメータがあります。


****  

| パラメータ名 | データ型 | 必要 | 説明 | 
| --- | --- | --- | --- | 
|  `p_data_file_id`  |  number  |  はい  |  移動するデータファイルの ID。  | 
|  `p_location`  |  varchar2  |  はい  |  データファイルを移動するストレージボリューム。  | 

次の例では、テーブルスペースをデフォルトボリューム `rdsdbdata` から追加ボリューム `rdsdbdata2` に移動します。

```
SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
 WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata/db/ORCL_A/datafile/o1_mf_mynewtab_n123abcd_.dbf

EXECUTE rdsadmin.rdsadmin_util.move_datafile( 6, 'rdsdbdata2');

PL/SQL procedure successfully completed.

SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
  WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_mynewtab_n356efgh_.dbf
```

## RDS for Oracle のボリューム間でテーブルデータとインデックスを移動する
<a name="Appendix.Oracle.CommonDBATasks.MovingTableData"></a>

追加のストレージボリュームにテーブルスペースを作成することで、データベースストレージを最適化できます。その後、標準の Oracle SQL を使用して、テーブル、インデックス、パーティションなどのオブジェクトをこれらのテーブルスペースに移動できます。このアプローチは、データベースにさまざまなアクセスパターンのデータが含まれている場合のパフォーマンス調整に役立ちます。例えば、アクセス頻度の高い運用データを高性能ストレージボリュームに保存しながら、アクセス頻度の低い履歴データを低コストのストレージボリュームに移動できます。

次の例では、高性能ボリューム `rdsdbdata2` に新しいテーブルスペースを作成します。次に、テーブルがオンラインのときに、テーブルを追加のストレージボリュームに移動します。また、インデックスを同じボリュームに移動します。オンライン中にテーブルを移動してインデックスを再構築するには、Oracle Enterprise Edition が必要です。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';
CREATE TABLESPACE perf_tbs DATAFILE SIZE 10G;

ALTER TABLE employees
  MOVE TABLESPACE perf_tbs ONLINE;

ALTER INDEX employees_idx
  REBUILD ONLINE TABLESPACE perf_tbs;
```

次の例では、低コストのボリュームにテーブルスペースを作成します。次に、オンラインオペレーションを使用して、テーブルパーティションを低コストのストレージボリュームに移動します。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE hist_tbs DATAFILE SIZE 10G;

ALTER TABLE orders
  MOVE PARTITION orders_2022
  TABLESPACE hist_tbs ONLINE;
```

次の例では、アクティブなセッションのロングオペレーションをクエリします。

```
SELECT sid,opname,sofar,totalwork,time_remaining,elapsed_seconds 
  FROM v$session_longops 
  WHERE time_remaining > 0;
```

次のクエリを使用して、テーブルスペースの使用状況を確認できます。

```
SELECT tablespace_name, used_percent
  FROM dba_tablespace_usage_metrics
  ORDER BY used_percent DESC;
```

## 追加ボリュームを使用した LOB ストレージの管理
<a name="Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage"></a>

データベースには、大量のストレージを消費するが、アクセス頻度が低い BLOB オブジェクトまたは CLOB オブジェクトを含むテーブルが含まれている場合があります。ストレージを最適化するために、これらの LOB セグメントを追加のストレージボリュームのテーブルスペースに再配置できます。

次の例では、低アクセスデータを対象とした低コストのボリュームで LOB データのテーブルスペースを作成します。次に、このボリュームにデータを保存するテーブルを作成します。

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE lob_data DATAFILE SIZE 5G AUTOEXTEND ON NEXT 1G;

CREATE TABLE documents (
    doc_id NUMBER PRIMARY KEY,
    doc_date DATE,
    doc_content CLOB
) TABLESPACE user_data
LOB(doc_content) STORE AS (TABLESPACE lob_data);
```

# RDS for Oracle での外部テーブルの使用
<a name="Appendix.Oracle.CommonDBATasks.External_Tables"></a>

*Oracle 外部テーブル*は、データベースにないデータのテーブルです。代わりに、データはデータベースがアクセスできる外部ファイルにあります。外部テーブルを使用して、データベースにロードしないでデータにアクセスできます。外部テーブルの詳細については、Oracle ドキュメントの「[外部表の管理](http://docs.oracle.com/database/121/ADMIN/tables.htm#ADMIN01507)」を参照してください。

Amazon RDS では、外部テーブルファイルをディレクトリオブジェクトに保存できます。ディレクトリオブジェクトは、新規作成するか、Oracle データベースに定義済みのもの (DATA\$1PUMP\$1DIR ディレクトリなど) を使用できます。ディレクトリオブジェクトの作成方法については、「[主要データストレージ領域でのディレクトリの作成と削除](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories)」を参照してください。Amazon RDS Oracle DB インスタンスのディレクトリオブジェクトを一覧表示するには、ALL\$1DIRECTORIES ビューをクエリできます。

**注記**  
ディレクトリオブジェクトは、インスタンスで使用されているメインのデータストレージ領域 (Amazon EBS ボリューム) を参照します。データファイル、REDO ログ、監査、追跡、およびその他のファイルで使用される領域は、割り当てられたストレージの消費としてカウントされます。

外部データファイルを Oracle データベース間で移行するには、[DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/database/121/ARPLS/d_ftran.htm#ARPLS095) パッケージまたは [UTL\$1FILE](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS069) パッケージを使用できます。外部データファイルは、移行元のデータベースのディレクトリから、移行先のデータベースの指定されたディレクトリに移行されます。`DBMS_FILE_TRANSFER` の使用の詳細については、「[Oracle Data Pump を使用したインポート](Oracle.Procedural.Importing.DataPump.md)」を参照してください。

移行した外部データファイルを使用して、外部テーブルを作成できます。次の例では、USER\$1DIR1 ディレクトリの `emp_xt_file1.txt` ファイルを使用する外部テーブルを作成します。

```
CREATE TABLE emp_xt (
  emp_id      NUMBER,
  first_name  VARCHAR2(50),
  last_name   VARCHAR2(50),
  user_name   VARCHAR2(20)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY USER_DIR1
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (emp_id,first_name,last_name,user_name)
  )
  LOCATION ('emp_xt_file1.txt')
)
PARALLEL
REJECT LIMIT UNLIMITED;
```

Amazon RDS Oracle DB インスタンスにあるデータを外部データファイル内に移行するとします。この場合、外部テーブルを作成し、データベースのテーブルから選択したデータを外部データファイルに入力できます。例えば、次の SQL ステートメントでは、データベースの `orders_xt` テーブルをクエリすることで `orders` 外部テーブルを作成します。

```
CREATE TABLE orders_xt
  ORGANIZATION EXTERNAL
   (
     TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY DATA_PUMP_DIR
     LOCATION ('orders_xt.dmp')
   )
   AS SELECT * FROM orders;
```

この例では、データは DATA\$1PUMP\$1DIR ディレクトリの `orders_xt.dmp` ファイルに入力されます。