RDS for Oracle でテーブルスペースを使用する
RDS for Oracle では、データベースのデータを保存する論理ストレージユニットであるテーブルスペースを使用できます。
重要
DB インスタンスにレプリカがある場合は、セッションレベルの変更ではなくパラメータグループ設定を使用してデフォルトのファイルの場所を管理することをお勧めします。プライマリインスタンスのデフォルトファイルの場所に対するセッションレベルの変更は、レプリカに自動的に反映されません。パラメータグループ設定を使用すると、プライマリインスタンスとレプリカインスタンス間で一貫したファイルの場所が確保されます。
トピック
RDS for Oracle でのデータベースファイルの場所の指定
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_CREATE_FILE_SET を変更する
インスタンスレベルでパラメータを変更するには、DB インスタンスに割り当てられたパラメータグループのパラメータを更新して適用します。詳細については、「RDS for Oracle 初期化パラメータ」および「Amazon RDS の DB パラメータグループのパラメータの変更」を参照してください。
セッションレベルで DB_CREATE_FILE_DEST を変更する
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 でのテーブルスペースの作成とサイズ設定
テーブルスペースを作成すると、データベースは作成時に DB_CREATE_FILE_DEST 初期化パラメータで指定されたストレージボリュームにデータファイルを作成します。データファイルのサイズを指定しない場合、デフォルトの AUTOEXTEND ON でテーブルスペースが作成され。最大サイズはありません。次の例では、テーブルスペース users1 は自動拡張可能です。
CREATE TABLESPACEusers1;
これらのデフォルト設定のため、テーブルスペースはすべての割り当てられたストレージを消費するまで大きくなります。永続テーブルスペースとテンポラリテーブルスペースに適切な最大サイズを指定し、リージョンの使用状況を注意深くモニタリングすることをお勧めします。
次の例では、スタートサイズが 1 ギガバイトのテーブルスペース users2 を作成します。データファイルのサイズが指定されていても、AUTOEXTEND ON が指定されていないため、テーブルスペースは自動拡張できません。
CREATE TABLESPACEusers2DATAFILE SIZE1G;
次の例では、スタートサイズが 1 ギガバイト、自動拡張がオン、最大サイズが 10 ギガバイトのテーブルスペース users3 を作成します。
CREATE TABLESPACEusers3DATAFILE SIZE1GAUTOEXTEND ON MAXSIZE10G;
次の例では、一時テーブルスペース temp01 を作成します。
CREATE TEMPORARY TABLESPACEtemp01;
ALTER
TABLESPACE を使用すると、bigfile テーブルスペースをサイズ変更できます。サイズは、キロバイト (K)、メガバイト (M)、ギガバイト (G)、またはテラバイト (T) で指定できます。次の例では、bigfile テーブルスペース users_bf のサイズを 200 MB に変更します。
ALTER TABLESPACEusers_bfRESIZE200M;
次の例では、smallfile テーブルスペース users_sf に追加のデータファイルを追加します。
ALTER TABLESPACEusers_sfADD DATAFILE SIZE100000MAUTOEXTEND ON NEXT250mMAXSIZEUNLIMITED;
RDS for Oracle で追加のストレージボリュームにテーブルスペースを作成する
追加のストレージボリュームにテーブルスペースを作成するには、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 でのデフォルトのテーブルスペースの設定
デフォルトのテーブルスペースを設定するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.alter_default_tablespace を使用します。alter_default_tablespace プロシージャには以下のパラメータがあります。
| パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
|---|---|---|---|---|
|
|
varchar |
— |
はい |
デフォルトのテーブルスペースの名前。 |
次の例では、デフォルトのテーブルスペースを users2 に設定します。
EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');
RDS for Oracle でのデフォルトの一時テーブルスペースの設定
デフォルトのテンポラリテーブルスペースを設定するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.alter_default_temp_tablespace を使用します。alter_default_temp_tablespace プロシージャには以下のパラメータがあります。
| パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
|---|---|---|---|---|
|
|
varchar |
— |
はい |
デフォルトのテンポラリテーブルスペースの名前。 |
次の例では、デフォルトのテンポラリテーブルスペースを temp01 に設定します。
EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');
インスタンスストアに一時テーブルスペースを作成する
インスタンスストアに一時テーブルスペースを作成するには、Amazon RDS プロシージャ rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace を使用します。create_inst_store_tmp_tblspace プロシージャには以下のパラメータがあります。
| パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
|---|---|---|---|---|
|
|
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 でのデフォルトの一時テーブルスペースの設定」を参照してください。
詳細については、「RDS for Oracle インスタンスストアへの一時データの保存」を参照してください。