日本語PDF

15.5 CREATE TABLESPACE

目的

CREATE TABLESPACE文を使用すると、表領域を作成できます。表領域とは、スキーマ・オブジェクトを格納する、データベース内に割り当てられた領域です。

  • 永続表領域には、永続スキーマ・オブジェクトが含まれます。永続表領域のオブジェクトは、データファイルに格納されます。

  • UNDO表領域は、データベースを自動UNDO管理モードで実行している場合に、Oracle DatabaseがUNDOデータを管理するために使用する、一種の永続表領域です。元に戻す場合は、ロールバック・セグメントではなく、自動UNDO管理モードを使用することをお薦めします。

  • 一時表領域には、セッション期間のみのスキーマ・オブジェクトが含まれます。一時表領域のオブジェクトは、一時ファイルに格納されます。

表領域は、最初は読み書き両用として作成されます。その後、ALTER TABLESPACE文でその表領域をオフラインまたはオンラインに設定したり、表領域にデータファイルや一時ファイルを追加したり、読取り専用に設定することができます。

DROP TABLESPACE文を使用して、データベースから表領域を削除することもできます。

関連項目:

前提条件

CREATE TABLESPACEシステム権限が必要です。SYSAUX表領域を作成する場合は、SYSDBAシステム権限が必要です。

表領域を作成する場合、表領域を格納するデータベースを作成する必要があります。また、そのデータベースをオープンしておく必要もあります。

関連項目:

CREATE DATABASE

SYSTEM以外の表領域のオブジェクトを使用する場合は、次の注意事項があります。

  • 自動UNDO管理モードでデータベースを実行するには、1つ以上のUNDO表領域がオンラインである必要があります。

  • 手動UNDO管理モードのデータベースを実行するには、SYSTEMロールバック・セグメント以外の1つ以上のロールバック・セグメントがオンラインである必要があります。

注意:

データベースを自動UNDO管理モードで実行することをお薦めします。詳細は、『Oracle Database管理者ガイド』を参照してください。

構文

logging_clause::=

tablespace_encryption_spec::=

default_tablespace_params::=

(default_table_compression::=default_index_compression::=inmemory_clause::=ilm_clause::= (CREATE TABLE構文の一部)、storage_clause::=)

注意:

DEFAULT句を指定する場合、default_table_compressiondefault_index_compressioninmemory_clauseilm_clauseまたはstorage_clauseの各句のうち、1つ以上を指定する必要があります。

default_table_compression::=

default_index_compression::=

inmemory_clause::=

inmemory_memcompress::=

inmemory_priority::=

inmemory_distribute_tablespace::=

inmemory_duplicate::=

segment_management_clause::=

flashback_mode_clause::=

tablespace_retention_clause::=

tablespace_group_clause::=

lost_write_protection ::=

セマンティクス

BIGFILE | SMALLFILE

この句を使用すると、表領域がbigfileかsmallfileかを指定できます。この句は、データベースのデフォルトの表領域タイプの設定を上書きします。

  • bigfile表領域に格納されるのは、1つのデータファイルまたは一時ファイルのみであり、このファイルには最大約40億(232)ブロックを格納できます。データファイルまたは一時ファイル1つ当たりの最小サイズは、32Kブロックの表領域の場合は12MB、8Kブロックの表領域の場合は7MBです。データファイルまたは一時ファイル1つ当たりの最大サイズは、32Kブロックの表領域の場合は128TB、8Kブロックの表領域の場合は32TBです。

  • smallfile表領域は、Oracleの従来の表領域であり、1022のデータファイルまたは一時ファイルを含めることができます。それぞれのファイルは、最大で約400万(222)のブロックを格納できます。

この句を省略した場合、データベースに設定された永続表領域または一時表領域の、現在のデフォルト表領域タイプが使用されます。永続表領域にBIGFILEを指定すると、デフォルトで、自動セグメント領域管理のローカル管理表領域が作成されます。

bigfile表領域の制限事項

DATAFILE句に1つのみのデータファイルを指定するか、TEMPFILE句に1つのみの一時ファイルを指定できます。

関連項目:

permanent_tablespace_clause

次の句を使用すると、永続表領域を作成できます。(これらの句の一部は、一時表領域またはUNDO表領域の作成にも使用されます。)

tablespace

作成する表領域の名前を指定します。名前は、「データベース・オブジェクトのネーミング規則」に指定されている要件を満たしている必要があります。

SYSAUX表領域の注意事項

SYSAUXは、必須の補助システム表領域です。Oracle Database 11gより以前のリリースからアップグレードする場合は、CREATE TABLESPACE文を使用してSYSAUX表領域を作成する必要があります。この句を指定するには、SYSDBAシステム権限が必要となり、また、データベースをUPGRADEモードでオープンしておく必要があります。

SYSAUX表領域には、EXTENT MANAGEMENT LOCALおよびSEGMENT SPACE MANAGEMENT AUTOを指定する必要があります。DATAFILE句は、Oracle Managed Filesが使用可能になっている場合のみのオプションです。DATAFILE句の動作は、「DATAFILE | TEMPFILE句」を参照してください。

SYSAUX表領域には十分な領域を割り当ててください。この表領域の作成のガイドラインは、『Oracle Databaseアップグレード・ガイド』を参照してください。

SYSAUX表領域の制限事項

SYSAUX表領域には、OFFLINEまたはTEMPORARYを指定できません。

DATAFILE | TEMPFILE句

永続表領域を構成するデータファイルを指定するか、または一時表領域を構成する一時ファイルを指定します。オペレーティング・システムのファイル・システム内の標準データファイルと一時ファイル、またはOracle Automatic Storage Management (Oracle ASM)ディスク・グループのファイルを作成するには、file_specificationdatafile_tempfile_spec書式を使用します。

DB_CREATE_FILE_DEST初期化パラメータに値を設定してOracle Managed Filesを使用可能にしていないかぎり、DATAFILEまたはTEMPFILE句を指定する必要があります。Oracle ASMディスク・グループ・ファイルの場合、このパラメータをOracle ASMファイル名の複数ファイル作成形式に設定する必要があります。このパラメータが設定されている場合、パラメータで指定したデフォルトのファイルの出力先に、100MBのファイルがシステム名で作成されます。このファイルではAUTOEXTENDが有効になっているため、最大サイズの制限はありません。

注意:

メディア・リカバリは一時ファイルを認識しません。

関連項目:

データファイルおよび一時ファイルの指定の注意事項:

  • datafile_tempfile_specでディスク・グループ名のみを指定すると、Oracle ASMディスク・グループ内に表領域を作成できます。この場合、Oracle ASMにより指定したディスク・グループにデータファイルが作成され、システム生成のファイル名が付けられます。データファイルは無制限に自動拡張可能です。デフォルト・サイズは100MBです。autoextend_clauseを使用すると、デフォルト・サイズを上書きできます。

  • 既存のファイルを参照するASM_filenameの参照形式の1つを使用する場合、REUSEも指定する必要があります。

注意:

オペレーティング・システムによっては、一時ファイルのブロックが実際にアクセスされるまで、一時ファイル用の領域が割り当てられない場合があります。領域の割当ての遅延のため、一時ファイルの作成およびサイズ変更が速くなります。ただし、後で一時ファイルが使用されるときに、十分なディスク領域を使用可能にする必要があります。問題を回避するには、一時ファイルの作成またはサイズ変更の前に、ディスクの空き領域が、新しく作成する一時ファイルまたはサイズ変更後の一時ファイルのサイズよりも大きいことを確認してください。ディスク領域に余裕を持たせておくと、関連のない操作による、予期されるディスク使用量の増加にも対応できます。その後で、作成またはサイズ変更操作を実行してください。

関連項目:

permanent_tablespace_attrs

permanent_tablespace_attrs句を使用して、表領域の属性を設定します。

MINIMUM EXTENT句

この句は、ディクショナリ管理表領域にのみ有効です。表領域で使用されるエクステントの最小サイズを指定します。この句を指定すると、表領域内のすべての使用済エクステントまたは未使用エクステントのサイズが、size_clauseで指定された値以上であること、およびその倍数であることが保証され、表領域における空き領域の断片化を制御できます。

関連項目:

この句の詳細は、「size_clause」を参照してください。MINIMUM EXTENTを使用した断片化の制御については、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください

BLOCKSIZE句

表領域の非標準ブロック・サイズを指定するには、BLOCKSIZE句を使用します。この句を指定するには、DB_CACHE_SIZEと少なくとも1つのDB_nK_CACHE_SIZEパラメータを設定する必要があります。また、この句で指定する整数は、DB_nK_CACHE_SIZEパラメータの1つの設定と対応している必要があります。

BLOCKSIZEの制限事項

一時表領域の場合、またはこの表領域を一時表領域として任意のユーザーに割り当てる場合は、標準以外のブロック・サイズを指定できません。

注意:

パフォーマンスが低下する可能性があるため、セクター・サイズが4Kのディスクにはブロック・サイズが2Kの表領域を格納しないことをお薦めします。

関連項目:

DB_nK_CACHE_SIZEパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。マルチ・ブロック・サイズの詳細は、『Oracle Database概要』を参照してください。

logging_clause

表領域内のすべての表、索引、マテリアライズド・ビュー、マテリアライズド・ビュー・ログおよびパーティションのデフォルトのロギング属性を指定します。この句は、一時表領域またはUNDO表領域では無効です。

この句を指定しない場合、LOGGINGがデフォルトになります。例外は、PDBの表領域の作成です。この場合、この句を省略すると、表領域はPDBのロギング属性を使用します。詳細は、CREATE PLUGGABLE DATABASElogging_clauseを参照してください。

表レベル、索引レベル、マテリアライズド・ビュー・レベル、マテリアライズド・ビュー・ログ・レベル、パーティション・レベルでのロギングを指定することで、表領域レベルのロギング属性を上書きできます。

関連項目:

この句の詳細は、logging_clause」を参照してください。

FORCE LOGGING

この句を使用すると、表領域はFORCE LOGGINGモードになります。一時セグメントへの変更を除き、表領域内のすべてのオブジェクトに対するすべての変更が記録され、個々のオブジェクトのNOLOGGING設定が上書きされます。データベースをオープンし、READ WRITEモードにしておく必要があります。

この設定によって、NOLOGGING属性が削除されることはありません。FORCE LOGGINGNOLOGGINGの両方を指定できます。この場合、後から表領域に作成されるオブジェクトのデフォルト・ロギング・モードはNOLOGGINGになりますが、表領域またはデータベースがFORCE LOGGINGモードの場合、このデフォルト値は無視されます。この表領域でFORCE LOGGINGモードを無効にすると、デフォルト値であるNOLOGGINGが再度適用されます。

注意:

FORCE LOGGINGモードは、パフォーマンスに影響する場合があります。この設定を使用する状況の詳細は、『Oracle Database管理者ガイド』を参照してください。

強制ロギングの制限事項

FORCE LOGGINGは、UNDO表領域および一時表領域に指定できません。

tablespace_encryption_clause

この句を使用して、暗号化された表領域を作成するか暗号化されていない表領域を作成するかを指定します。暗号化された表領域を作成すると、表領域のすべてのデータファイルに透過的データ暗号化(TDE)が適用されます。

ENCRYPT | DECRYPT

ENCRYPTを指定して、暗号化された表領域を作成します。DECRYPTを指定して、暗号化されていない表領域を作成します。

この句を省略した場合、ENCRYPT_NEW_TABLESPACES初期化パラメータの値によって、作成時に表領域を暗号化するかどうかが決定されます。ENCRYPT_NEW_TABLESPACES初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

この句を発行する前に、TDEマスター・キーをデータベース・メモリーにロードするか、HSMへの接続を確立しておく必要があります。詳細は、「ADMINISTER KEY MANAGEMENT」の「open_keystore」句または「ALTER SYSTEM」の「SET ENCRYPTION WALLET句」を参照してください。

tablespace_encryption_spec

USING 'encrypt_algorithm'を指定すると、使用する暗号化アルゴリズムの名前を指定できます。有効なアルゴリズムは、AES256AES192AES128および3DES168です。COMPATIBLE初期化パラメータが12.2以上に設定されている場合は、ARIA128ARIA192ARIA256GOST256およびSEED128の各アルゴリズムも有効です。この句を省略すると、AES128が使用されます。

default_tablespace_params

DEFAULT句を使用すると、表領域のデフォルト・パラメータを指定できます。

default_table_compression

この句を使用して、表領域に作成されるすべての表のデータのデフォルト圧縮を指定します。この句は、一時表領域では無効です。この句の副次句のセマンティクスは、CREATE TABLE文のtable_compression句と同じですが、次の例外があります。ここでのCOMPRESS FOR OLTP句は、CREATE TABLEROW STORE COMPRESS ADVANCED句と同等です。これらの副次句のセマンティクスの詳細は、「CREATE TABLE」の「table_compression」句を参照してください。

default_index_compression

この句を使用して、表領域に作成されるすべての索引のデータのデフォルト圧縮を指定します。この句は、一時表領域では無効です。この句の副次句のセマンティクスは、CREATE INDEX文のadvanced_index_compression句と同じです。これらの副次句のセマンティクスの詳細は、「CREATE INDEX」の「advanced_index_compression」句を参照してください。

inmemory_clause

inmemory_clauseを使用して、表領域で作成されたすべての表およびマテリアライズド・ビューのデフォルトのインメモリー列ストア(IM列ストア)設定を指定します。この句は、一時表領域では無効です。

  • INMEMORYを指定して、IM列ストアのすべての表およびマテリアライズド・ビューを有効化します。

    オプションでinmemory_attributes句を使用して、表またはマテリアライズド・ビューのデータをIM列ストアに格納する方法を指定できます。inmemory_attributes句は、CREATE TABLEおよびCREATE TABLESPACEと同じセマンティクスを持ちます。この句のセマンティクスの詳細は、CREATE TABLEinmemory_attributes句を参照してください。

  • NO INMEMORYを指定して、IM列ストアのすべての表およびマテリアライズド・ビューを無効化します。これはデフォルトです。

ilm_clause

ilm_clauseを使用して、表領域で作成されたすべての表のデフォルトの自動データ最適化設定を指定します。この句は、一時表領域では無効です。この句のセマンティクスの詳細は、CREATE TABLEilm_clauseを参照してください。

storage_clause

storage_clauseを使用して、表領域で作成されるすべてのオブジェクトの記憶域パラメータを指定します。この句は、一時表領域またはローカル管理の表領域に対しては無効です。ディクショナリ管理表領域の場合、この句ではENCRYPTINITIALNEXTMINEXTENTSMAXEXTENTSMAXSIZEおよびPCTINCREASE記憶域パラメータを指定できます。詳細は、storage_clause」を参照してください。

注意:

下位互換性のためにstorage_clauseENCRYPT句がサポートされています。ただし、Oracle Database 12cリリース2 (12.2)以降は、かわりにtablespace_encryption_clauseENCRYPTを指定できます。詳細は、tablespace_encryption_clauseを参照してください。

ONLINE | OFFLINE句

この句を使用すると、表領域がオンラインまたはオフラインのいずれであるかを決定できます。この句は、一時表領域では無効です。

ONLINE

ONLINEを指定すると、表領域に対するアクセス権限を付与されているユーザーに対して、作成直後の表領域を使用可能にできます。これはデフォルトです。

OFFLINE

OFFLINEを指定すると、作成直後の表領域を使用禁止にできます。

データ・ディクショナリ・ビューDBA_TABLESPACESは、各表領域がオンラインまたはオフラインのいずれであるかを示します。

extent_management_clause

extent_management_clauseを使用すると、表領域のエクステントの管理方法を指定できます。

注意:

この句でエクステントの管理を指定した後は、表領域を移行しないかぎり、エクステントの管理を変更できません。

  • AUTOALLOCATEを指定すると、表領域がシステム管理されます。ユーザーはエクステント・サイズを指定できません。AUTOALLOCATEは、一時表領域に対して指定できません。

  • UNIFORMを指定すると、表領域をSIZEバイトの均一のエクステントで管理できます。SIZEのデフォルト値は1MBです。一時表領域のすべてのエクステントはサイズが均一であるため、このキーワードは一時表領域ではオプションです。ただし、SIZEを指定する場合は、UNIFORMを指定する必要があります。UNDO表領域にUNIFORMを指定することはできません。

AUTOALLOCATEまたはUNIFORMを指定しない場合のデフォルトは、一時表領域ではUNIFORM、他のすべてのタイプの表領域ではAUTOALLOCATEです。

extent_management_clauseを指定しない場合、MINIMUM EXTENT句およびDEFAULT storage_clauseが解析され、エクステント管理が判断されます。

注意:

DICTIONARYキーワードは、非推奨になる予定です。これは、下位互換性を保つためにのみサポートされています。ただし、ローカル管理表領域を作成することをお薦めします。ローカル管理表領域は、ディクショナリ管理表領域より非常に効率的に管理されます。新しいディクショナリ管理表領域の作成は、サポートされなくなる予定です。

関連項目:

ローカル管理表領域については、『Oracle Database概要』を参照してください。

エクステント管理の制限事項

エクステント管理には、次の制限事項があります。

  • 永続的なローカル管理表領域には、永続オブジェクトのみを格納できます。ローカル管理表領域に一時オブジェクトを格納する必要がある場合(たとえば、ユーザーの一時表領域に割り当てる場合)は、temporary_tablespace_clauseを使用します。

  • この句を指定する場合、DEFAULT storage_clauseMINIMUM EXTENTまたはtemporary_tablespace_clauseは指定できません。

関連項目:

表領域の移行によってエクステントの管理を変更する方法の詳細は、『Oracle Database管理者ガイド』および「ローカル管理表領域の作成: 例」を参照してください。

segment_management_clause

segment_management_clauseは、永続的なローカル管理表領域に対してのみ有効です。Oracle Databaseが、空きリストまたはビットマップのどちらを使用して、表領域のセグメントにある使用済領域および空き領域を追跡するかを指定できます。この句は、一時表領域では無効です。

AUTO

AUTOを指定すると、データベースでビットマップを使用して表領域のセグメントの空き領域を管理できます。AUTOを指定すると、この表領域のオブジェクトに対して後で指定する記憶域のPCTUSEDFREELISTおよびFREELIST GROUPSの値は無視されます。この設定を自動セグメント領域管理といい、これがデフォルトです。

MANUAL

MANUALを指定すると、データベースで空きリストを使用して表領域のセグメントの空き領域を管理できます。この設定は使用しないようにして、自動セグメント領域の表領域を作成することを強くお薦めします。

既存の表領域のセグメント管理を確認するには、DBA_TABLESPACESまたはUSER_TABLESPACESデータ・ディクショナリ・ビューのSEGMENT_SPACE_MANAGEMENT列を問い合せます。

注意:

AUTOセグメント管理を指定する場合、次のことに注意します。

  • エクステント管理をLOCAL UNIFORMに設定する場合は、各エクステントに5以上のデータベース・ブロックがあることを確認する必要があります。

  • エクステント管理をLOCAL AUTOALLOCATEに設定する場合、およびデータベースのブロック・サイズが16KB以上の場合は、最小で5ブロック(64KBに切り上げられる)のエクステントが作成され、セグメント領域管理が管理されます。

自動セグメント領域管理の制限事項

この句には、次の制限事項があります。

  • この句は、永続的なローカル管理表領域に対してのみ指定できます。

  • この句は、SYSTEM表領域に対して指定できません。

関連項目:

flashback_mode_clause

この句をALTER DATABASE FLASHBACK句と組み合せて使用すると、FLASHBACK DATABASE操作に表領域を使用できるかどうかを指定できます。この句は、データベースがFLASHBACKモードでオープンされているときに、この表領域のフラッシュバック・ログ・データを保持しない場合に便利です。

この句は、一時表領域またはUNDO表領域では無効です。

FLASHBACK ON

FLASHBACK ONを指定すると、表領域でFLASHBACKモードを有効にできます。この表領域のフラッシュバック・ログ・データが保存され、FLASHBACK DATABASE操作でこの表領域を使用できるようになります。flashback_mode_clauseを指定しない場合、デフォルトでFLASHBACK ONが指定されます。

FLASHBACK OFF

FLASHBACK OFFを指定すると、表領域でFLASHBACKモードを無効にできます。この表領域のフラッシュバック・ログ・データは保存されません。FLASHBACK DATABASE操作の実行前に、この表領域のデータファイルをオフラインにするか、または削除する必要があります。または、表領域全体をオフラインにすることもできます。どちらの場合も、既存のフラッシュバック・ログは削除されません。

注意:

表領域のFLASHBACKモードは、個々の表のFLASHBACKモードに依存しません。

関連項目:

lost_write_protection

消失書込みレコードの記憶域を作成するには、lost_write_protection句を指定します。データファイルとデータベースに対して消失書込み保護を有効にするには、事前にこの記憶域またはシャドウ表領域を作成する必要があります。

他のすべての表領域と同様に、必要な数のシャドウ表領域を作成し、それらに名前を付けることができます。

シャドウ表領域の作成: 例

CREATE BIGFILE TABLESPACE <shadow_tablespace_name> 
  DATAFILE <datafile_name> 
  SIZE 100000000 BLOCKSIZE 8K 
  LOST WRITE PROTECTION

このコマンドにより、シャドウ表領域が作成されます。データファイルおよびデータベースに対して消失書込み保護を有効にするには、ALTER TABLESPACE文、ALTER DATABASE文およびALTER PLUGGABLE DATABASE文に、lost_write_protection句を指定する必要があります。

undo_tablespace_clause

UNDOを指定すると、UNDO表領域を作成できます。自動UNDO管理モードでデータベースを実行する場合、Oracle Databaseは、ロールバック・セグメントのかわりにUNDO表領域を使用してUNDO領域を管理します。この句は、自動UNDO管理モードで作成しなかったデータベースを自動UNDO管理モードで実行している場合に便利です。

自動UNDO管理モードでデータベースを起動すると、UNDO表領域が割り当てられます。UNDO表領域がインスタンスに割り当てられない場合、SYSTEMロールバック・セグメントが使用されます。UNDO表領域の作成によってこれを回避することができ、他のUNDO表領域がその時点で割り当てられていない場合、インスタンスに暗黙的に割り当てられます。

DATAFILE句の詳細は、「DATAFILE | TEMPFILE句」を参照してください。

extent_management_clause

UNDO表領域を作成するときにはextent_management_clauseを指定する必要はありません。これは、UNDO表領域が、AUTOALLOCATEエクステント管理を使用するローカル管理表領域である必要があるためです。この句を指定する場合は、EXTENT MANAGEMENT LOCALまたはEXTENT MANAGEMENT LOCAL AUTOALLOCATEを指定する必要があります。どちらも、この句を省略した場合と同じ結果になります。この句のセマンティクスの詳細は、「extent_management_clause」を参照してください。

tablespace_retention_clause

この句は、UNDO表領域に対してのみ有効です。

  • RETENTION GUARANTEEを指定すると、tablespaceのすべてのUNDOセグメントの期限切れ前のUNDOデータが、これらのセグメントのUNDO領域を必要とする実行中の操作が失敗する場合でも保持されます。この設定は、Oracleフラッシュバック問合せまたはOracleフラッシュバック・トランザクション問合せを発行し、データの問題を診断および修正する必要がある場合に便利です。

  • RETENTION NOGUARANTEEを指定すると、UNDO動作を通常の動作に戻すことができます。実行中のトランザクションで必要な場合には、期限切れ前のUNDOデータによって使用されているUNDOセグメントの領域を使用できます。これはデフォルトです。

tablespace_encryption_clause

この句のUNDO表領域のセマンティクスは、永続表領域と同じです。詳細は、永続表領域のドキュメントで「tablespace_encryption_clause」を参照してください。

UNDO表領域の制限事項

UNDO表領域には、次の制限事項があります。

  • この表領域にはデータベース・オブジェクトを作成できません。システム管理のUNDOデータ用に確保されています。

  • ローカルのAUTOALLOCATEエクステント管理を指定するためにUNDO表領域に対して指定できる句は、DATAFILE句、tablespace_retention_clausetablespace_encryption_clauseおよびextent_management_clauseのみです。extent_management_clauseを使用した、ローカルのUNIFORMエクステント管理またはディクショナリ・エクステント管理の指定はいずれもできません。すべてのUNDO表領域は、永続的、読取り/書込み可能およびロギング・モードで作成されます。MINIMUM EXTENTおよびDEFAULT STORAGEに対する値は、システムで生成されます。

関連項目:

temporary_tablespace_clause

この句を使用すると、一時表領域を作成できます。一時表領域は、セッションの存続期間中にのみ保持される一時データを格納できるデータベース内の領域割当てです。プロセスまたはインスタンスに障害が発生した場合、この一時データをリカバリすることはできません。

一時データとは、一時表などのユーザー生成スキーマ・オブジェクト、またはハッシュ結合およびソート操作で使用される一時領域などのシステム生成データです。一時表領域、またはこの表領域が含まれる表領域グループを特定のユーザーに割り当てると、このユーザーによって開始されるトランザクションでのソート操作にこの表領域が使用されます。

次の2つのタイプの一時表領域を作成できます。

  • 共有一時表領域は、TEMPORARY TABLESPACE句を指定すると作成できます。共有一時表領域は共有ディスク上に一時ファイルを格納するため、一時領域はすべてのデータベース・インスタンスにとってアクセス可能です。共有一時表領域はOracle Databaseの以前のリリースでも使用可能で、「一時表領域」と呼ばれていました。このガイドの他の部分では、特に記載がないかぎり、一時表領域という用語は共有一時表領域を指します。

  • ローカル一時表領域は、Oracle Database 12cリリース2 (12.2)以降、LOCAL TEMPORARY TABLESPACE句を指定すると作成できます。ローカル一時表領域は、Oracle Clusterware環境で役立ちます。これらには、各データベース・インスタンスの共有されない個別の一時ファイルが格納され、I/Oパフォーマンスが向上します。ローカル一時表領域は、BIGFILE表領域である必要があります。

    • HUBとLEAFのすべてのノードに、個別の非共有一時ファイルを作成するようデータベースに指示するには、FOR ALLを指定します。

    • LEAFノードにのみ個別の非共有一時ファイルを作成するようデータベースに指示するには、FOR LEAFを指定します。

TEMPFILE

TEMPFILE句の詳細は、「DATAFILE | TEMPFILE句」を参照してください。

tablespace_group_clause

この句は、一時表領域に対してのみ有効です。この句を使用すると、tablespaceが表領域グループに含まれるかどうかを決定できます。表領域グループを使用すると、複数の一時表領域を1人のユーザーに割り当て、一時表領域のアクセス性を向上できます。

  • グループ名を指定すると、tablespaceがその表領域グループのメンバーであることを示すことができます。グループ名にtablespaceまたは他の既存の表領域と同じ名前を指定することはできません。表領域グループがすでに存在する場合、そのグループに新しい表領域が追加されます。表領域グループが存在しない場合、グループが作成され、そのグループに新しい表領域が追加されます。

  • 空の文字列(' ')を指定すると、tablespaceがいずれの表領域グループにも属さないことを示すことができます。

表領域グループの制限事項

表領域グループでは、共有一時表領域のみサポートされます。ローカル一時表領域は、表領域グループに追加できません。

extent_management_clause

extent_management_clauseの詳細は、「extent_management_clause」を参照してください。

tablespace_encryption_clause

この句の一時表領域のセマンティクスは、永続表領域と同じです。 詳細は、永続表領域のドキュメントで「tablespace_encryption_clause」を参照してください。

関連項目:

一時表領域の制限事項

一時表領域に格納されているデータは、セッションの存続期間中にのみ保持されます。そのため、CREATE TABLESPACE句のサブセットのみが一時表領域に対して有効です。一時表領域に対して指定できる句は、TEMPFILE句、tablespace_group_clauseextent_management_clauseおよびtablespace_encryption_clauseのみです。

これらの例では、8Kブロックを使用していると想定します。

bigfile表領域の作成: 例

次の例は、20MBのデータファイルbigtbs_f1.dbfを持つbigfile表領域bigtbs_01を作成します。

CREATE BIGFILE TABLESPACE bigtbs_01
  DATAFILE 'bigtbs_f1.dbf'
  SIZE 20M AUTOEXTEND ON;

UNDO表領域の作成: 例

次の例は、10MBのUNDO表領域undots1を作成します。

CREATE UNDO TABLESPACE undots1
   DATAFILE 'undotbs_1a.dbf'
   SIZE 10M AUTOEXTEND ON
   RETENTION GUARANTEE;

一時表領域の作成: 例

次の文は、サンプル・データベースのデータベース・ユーザーに対するデフォルトの一時表領域として機能する一時表領域がどのように作成されたかを示しています。

CREATE TEMPORARY TABLESPACE temp_demo
   TEMPFILE 'temp01.dbf' SIZE 5M AUTOEXTEND ON;

デフォルトのデータベース・ブロック・サイズを2KBとした場合、マップの各ビットは1つのエクステントを表し、各ビットは2,500ブロックをマップします。

次の例は、データファイルを作成するデフォルトの位置を設定し、デフォルトの位置にOracle Managed Filesの一時ファイルを持つ表領域を作成します。一時ファイルは100MBで、最大サイズが制限なしで自動拡張されます。これらは、Oracle Managed Filesのデフォルト値です。

ALTER SYSTEM SET DB_CREATE_FILE_DEST = '$ORACLE_HOME/rdbms/dbs';

CREATE TEMPORARY TABLESPACE tbs_05;

表領域グループへの一時表領域の追加: 例

次の文は、tbs_temp_02一時表領域をtbs_grp_01表領域グループのメンバーとして作成します。この表領域グループが存在しない場合、文の実行中に作成されます。

CREATE TEMPORARY TABLESPACE tbs_temp_02
  TEMPFILE 'temp02.dbf' SIZE 5M AUTOEXTEND ON
  TABLESPACE GROUP tbs_grp_01;

基本的な表領域の作成: 例

次の文は、1つのデータファイルを持つtbs_01という表領域を作成します。

CREATE TABLESPACE tbs_01 
   DATAFILE 'tbs_f2.dbf' SIZE 40M 
   ONLINE; 

次の文は、1つのデータファイルを持つ表領域tbs_03を作成し、すべてのエクステントを500KBの倍数として割り当てます。

CREATE TABLESPACE tbs_03 
   DATAFILE 'tbs_f03.dbf' SIZE 20M
   LOGGING;

表領域の自動拡張の有効化: 例

次の文は、1つのデータファイルを持つtbs_02という表領域を作成します。さらに領域が必要な場合、500KBのエクステントが最大サイズ100MBまで追加されます。

CREATE TABLESPACE tbs_02 
   DATAFILE 'diskb:tbs_f5.dbf' SIZE 500K REUSE
   AUTOEXTEND ON NEXT 500K MAXSIZE 100M;

ローカル管理表領域の作成: 例

次の文では、データベース・ブロック・サイズが2Kであると仮定します。

CREATE TABLESPACE tbs_04 DATAFILE 'file_1.dbf' SIZE 10M
   EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

この文で、すべてのエクステントが128KBで、ビットマップの各ビットが64ブロックを示す、ローカル管理表領域を作成します。

次の文は、均一のエクステントを持つローカル管理表領域を作成して、その表領域に格納された表の例を示します。

CREATE TABLESPACE lmt1 DATAFILE 'lmt_file2.dbf' SIZE 100m REUSE
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

CREATE TABLE lmt_table1 (col1 NUMBER, col2 VARCHAR2(20))
  TABLESPACE lmt1 STORAGE (INITIAL 2m);

表の初期セグメント・サイズは2MBです。

次の例は、均一のエクステントを持たないローカル管理表領域を作成します。

CREATE TABLESPACE lmt2 DATAFILE 'lmt_file3.dbf' SIZE 100m REUSE 
  EXTENT MANAGEMENT LOCAL;

CREATE TABLE lmt_table2 (col1 NUMBER, col2 VARCHAR2(20)) 
  TABLESPACE lmt2 STORAGE (INITIAL 2m MAXSIZE 100m);

表の初期セグメント・サイズは2MBです。Oracle Databaseによって、初期セグメント・サイズを満たすように各エクステントのサイズおよび割り当てられるエクステントの合計数が決定されます。セグメントの最大サイズは、100MBに制限されています。

暗号化された表領域の作成: 例

次の例の最初の文は、ウォレットを開くことによって、データベースに対して暗号化を可能にします。2番目の文は、暗号化された表領域を作成します。

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "wallet_password";

CREATE TABLESPACE encrypt_ts
  DATAFILE '$ORACLE_HOME/dbs/encrypt_df.dbf' SIZE 1M
  ENCRYPTION USING 'AES256' ENCRYPT;

表領域に対するセグメント領域管理の指定: 例

次の例は、自動セグメント領域管理が指定された表領域を作成します。

CREATE TABLESPACE auto_seg_ts DATAFILE 'file_2.dbf' SIZE 1M
   EXTENT MANAGEMENT LOCAL
   SEGMENT SPACE MANAGEMENT AUTO;

Oracle Managed Filesの作成: 例

次の例は、データファイルを作成するデフォルトの位置を設定し、デフォルトの位置にデータファイルを持つ表領域を作成します。データファイルは100MBで自動拡張可能であり、最大サイズの制限がありません。

ALTER SYSTEM SET DB_CREATE_FILE_DEST = '$ORACLE_HOME/rdbms/dbs';

CREATE TABLESPACE omf_ts1;

次の例は、自動拡張されない100MBのOracle Managed Filesのデータファイルを持つ表領域を作成します。

CREATE TABLESPACE omf_ts2 DATAFILE AUTOEXTEND OFF;