CREATE TABLESPACE
目的
CREATE
TABLESPACE
文を使用すると、表領域を作成できます。表領域とは、スキーマ・オブジェクトを格納する、データベース内に割り当てられた領域です。
-
永続表領域には、永続スキーマ・オブジェクトが含まれます。永続表領域のオブジェクトは、データファイルに格納されます。
-
UNDO表領域は、データベースを自動UNDO管理モードで実行している場合に、Oracle DatabaseがUNDOデータを管理するために使用する、一種の永続表領域です。元に戻す場合は、ロールバック・セグメントではなく、自動UNDO管理モードを使用することをお薦めします。
-
一時表領域には、セッション期間のみのスキーマ・オブジェクトが含まれます。一時表領域のオブジェクトは、一時ファイルに格納されます。
表領域は、最初は読み書き両用として作成されます。その後、ALTER
TABLESPACE
文でその表領域をオフラインまたはオンラインに設定したり、表領域にデータファイルや一時ファイルを追加したり、読取り専用に設定することができます。
DROP
TABLESPACE
文を使用して、データベースから表領域を削除することもできます。
関連項目:
-
表領域については、『Oracle Database概要』を参照してください。
-
表領域の変更および削除の詳細は、「ALTER TABLESPACE」および「DROP TABLESPACE」を参照してください。
前提条件
CREATE
TABLESPACE
システム権限が必要です。SYSAUX
表領域を作成する場合は、SYSDBA
システム権限が必要です。
表領域を作成する場合、表領域を格納するデータベースを作成する必要があります。また、そのデータベースをオープンしておく必要もあります。
関連項目:
SYSTEM
以外の表領域のオブジェクトを使用するには:
-
自動UNDO管理モードでデータベースを実行するには、1つ以上の
UNDO
表領域がオンラインである必要があります。 -
手動UNDO管理モードのデータベースを実行するには、
SYSTEM
ロールバック・セグメント以外の1つ以上のロールバック・セグメントがオンラインである必要があります。
ノート:
データベースを自動UNDO管理モードで実行することをお薦めします。詳細は、『Oracle Database管理者ガイド』を参照してください。
構文
create_tablespace::=
(permanent_tablespace_clause::=、temporary_tablespace_clause::=、undo_tablespace_clause::=)
permanent_tablespace_clause::=
permanent_tablespace_attrs::=
(size_clause::=、logging_clause::=、tablespace_encryption_clause::=、default_tablespace_params::=、extent_management_clause::=、segment_management_clause::=、flashback_mode_clause::=)
logging_clause::=
tablespace_encryption_clause::=
tablespace_encryption_spec::=
default_tablespace_params::=
(default_table_compression::=、default_index_compression::=、inmemory_clause::=、ilm_clause::= (CREATE
TABLE
構文の一部)、storage_clause::=)
ノート:
DEFAULT
句を指定する場合、default_table_compression
、default_index_compression
、inmemory_clause
、ilm_clause
またはstorage_clause
の各句のうち、1つ以上を指定する必要があります。
default_table_compression::=
default_index_compression::=
inmemory_clause::=
inmemory_attributes::=
(inmemory_memcompress::=, inmemory_priority::=, inmemory_distribute_tablespace::=, inmemory_duplicate::=)
inmemory_memcompress::=
inmemory_priority::=
inmemory_distribute_tablespace::=
inmemory_duplicate::=
segment_management_clause::=
flashback_mode_clause::=
undo_tablespace_clause::=
(file_specification::=、extent_management_clause::=、tablespace_retention_clause::=)
tablespace_retention_clause::=
temporary_tablespace_clause::=
(file_specification::=、tablespace_group_clause::=、extent_management_clause::=、tablespace_encryption_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つのみの一時ファイルを指定できます。
関連項目:
-
bigfile表領域の使用の詳細は、『Oracle Database管理者ガイド』を参照してください。
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_specification
のdatafile_tempfile_spec
書式を使用します。
DB_CREATE_FILE_DEST
初期化パラメータに値を設定してOracle Managed Filesを使用可能にしていないかぎり、DATAFILE
またはTEMPFILE
句を指定する必要があります。Oracle ASMディスク・グループ・ファイルの場合、このパラメータをOracle ASMファイル名の複数ファイル作成形式に設定する必要があります。このパラメータが設定されている場合、パラメータで指定したデフォルトのファイルの出力先に、100MBのファイルがシステム名で作成されます。このファイルではAUTOEXTEND
が有効になっているため、最大サイズの制限はありません。
ノート:
メディア・リカバリは一時ファイルを認識しません。
関連項目:
-
Oracle ASMの使用方法の詳細は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。
-
AUTOEXTENDパラメータやOracle ASMファイル名の複数ファイル作成形式などの詳細は、「file_specification
」
を参照してください。
データファイルおよび一時ファイルの指定のノート:
-
datafile_tempfile_spec
でディスク・グループ名のみを指定すると、Oracle ASMディスク・グループ内に表領域を作成できます。この場合、Oracle ASMにより指定したディスク・グループにデータファイルが作成され、システム生成のファイル名が付けられます。データファイルは無制限に自動拡張可能です。デフォルト・サイズは100MBです。autoextend_clause
を使用すると、デフォルト・サイズを上書きできます。 -
既存のファイルを参照する
ASM_filename
の参照形式の1つを使用する場合、REUSE
も指定する必要があります。
ノート:
オペレーティング・システムによっては、一時ファイルのブロックが実際にアクセスされるまで、一時ファイル用の領域が割り当てられない場合があります。領域の割当ての遅延のため、一時ファイルの作成およびサイズ変更が速くなります。ただし、後で一時ファイルが使用されるときに、十分なディスク領域を使用可能にする必要があります。問題を回避するには、一時ファイルの作成またはサイズ変更の前に、ディスクの空き領域が、新しく作成する一時ファイルまたはサイズ変更後の一時ファイルのサイズよりも大きいことを確認してください。ディスク領域に余裕を持たせておくと、関連のない操作による、予期されるディスク使用量の増加にも対応できます。その後で、作成またはサイズ変更操作を実行してください。
関連項目:
-
AUTOEXTENDパラメータなどの詳細は、「file_specification
」
を参照してください。 -
「表領域の自動拡張の有効化: 例」および「Oracle Managed Filesの作成: 例」を参照してください。
permanent_tablespace_attrs
permanent_tablespace_attrs
句を使用して、表領域の属性を設定します。
MINIMUM EXTENT句
この句は、ディクショナリ管理表領域にのみ有効です。表領域で使用されるエクステントの最小サイズを指定します。この句を指定すると、表領域内のすべての使用済エクステントまたは未使用エクステントのサイズが、size_clause
で指定された値以上であること、およびその倍数であることが保証され、表領域における空き領域の断片化を制御できます。
関連項目:
この句の詳細は、「size_clause」を参照してください。MINIMUM
EXTENT
を使用した断片化の制御については、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください
BLOCKSIZE句
表領域の非標準ブロック・サイズを指定するには、BLOCKSIZE
句を使用します。この句を指定するには、DB_CACHE_SIZE
と少なくとも1つのDB_
n
K_CACHE_SIZE
パラメータを設定する必要があります。また、この句で指定する整数は、DB_
n
K_CACHE_SIZE
パラメータの1つの設定と対応している必要があります。
BLOCKSIZEの制限事項
一時表領域の場合、またはこの表領域を一時表領域として任意のユーザーに割り当てる場合は、標準以外のブロック・サイズを指定できません。
ノート:
パフォーマンスが低下する可能性があるため、セクター・サイズが4Kのディスクにはブロック・サイズが2Kの表領域を格納しないことをお薦めします。
関連項目:
DB_
n
K_CACHE_SIZE
パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。マルチ・ブロック・サイズの詳細は、『Oracle Database概要』を参照してください。
logging_clause
表領域内のすべての表、索引、マテリアライズド・ビュー、マテリアライズド・ビュー・ログおよびパーティションのデフォルトのロギング属性を指定します。この句は、一時表領域またはUNDO表領域では無効です。
この句を指定しない場合、LOGGING
がデフォルトになります。例外は、PDBの表領域の作成です。この場合、この句を省略すると、表領域はPDBのロギング属性を使用します。詳細は、CREATE
PLUGGABLE
DATABASE
のlogging_clauseを参照してください。
表レベル、索引レベル、マテリアライズド・ビュー・レベル、マテリアライズド・ビュー・ログ・レベル、パーティション・レベルでのロギングを指定することで、表領域レベルのロギング属性を上書きできます。
関連項目:
この句の詳細は、「logging_clause」を参照してください。
FORCE LOGGING
この句を使用すると、表領域はFORCE
LOGGING
モードになります。一時セグメントへの変更を除き、表領域内のすべてのオブジェクトに対するすべての変更が記録され、個々のオブジェクトのNOLOGGING
設定が上書きされます。データベースをオープンし、READ
WRITE
モードにしておく必要があります。
この設定によって、NOLOGGING
属性が削除されることはありません。FORCE
LOGGING
とNOLOGGING
の両方を指定できます。この場合、後から表領域に作成されるオブジェクトのデフォルト・ロギング・モードは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
'を指定すると、使用する暗号化アルゴリズムの名前を指定できます。有効なアルゴリズムは、AES256
、AES192
、AES128
および3DES168
です。COMPATIBLE
初期化パラメータが12
.2
以上に設定されている場合は、ARIA128
、ARIA192
、ARIA256
、GOST256
およびSEED128
の各アルゴリズムも有効です。この句を省略すると、AES128
が使用されます。
関連項目:
default_tablespace_params
DEFAULT
句を使用すると、表領域のデフォルト・パラメータを指定できます。
default_table_compression
この句を使用して、表領域に作成されるすべての表のデータのデフォルト圧縮を指定します。この句は、一時表領域では無効です。この句の副次句のセマンティクスは、CREATE
TABLE
文のtable_compression
句と同じですが、次の例外があります。ここでのCOMPRESS
FOR
OLTP
句は、CREATE
TABLE
のROW
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
TABLE
のinmemory_attributes句を参照してください。 -
NO
INMEMORY
を指定して、IM列ストアのすべての表およびマテリアライズド・ビューを無効化します。これはデフォルトです。
ilm_clause
ilm_clause
を使用して、表領域で作成されたすべての表のデフォルトの自動データ最適化設定を指定します。この句は、一時表領域では無効です。この句のセマンティクスの詳細は、CREATE
TABLE
のilm_clauseを参照してください。
storage_clause
storage_clause
を使用して、表領域で作成されるすべてのオブジェクトの記憶域パラメータを指定します。この句は、一時表領域またはローカル管理の表領域に対しては無効です。ディクショナリ管理表領域の場合、この句ではENCRYPT
、INITIAL
、NEXT
、MINEXTENTS
、MAXEXTENTS
、MAXSIZE
およびPCTINCREASE
記憶域パラメータを指定できます。詳細は、「storage_clause」を参照してください。
ノート:
下位互換性のためにstorage_clause
のENCRYPT
句がサポートされています。ただし、Oracle Database 12cリリース2 (12.2)以降は、かわりにtablespace_encryption_clause
でENCRYPT
を指定できます。詳細は、tablespace_encryption_clauseを参照してください。
関連項目:
ONLINE | OFFLINE句
この句を使用すると、表領域がオンラインまたはオフラインのいずれであるかを決定できます。この句は、一時表領域では無効です。
ONLINE
を指定すると、表領域に対するアクセス権限を付与されているユーザーに対して、作成直後の表領域を使用可能にできます。これはデフォルトです。
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_clause
、MINIMUM
EXTENT
またはtemporary_tablespace_clause
は指定できません。
関連項目:
表領域の移行によってエクステントの管理を変更する方法の詳細は、『Oracle Database管理者ガイド』および「ローカル管理表領域の作成: 例」を参照してください。
segment_management_clause
segment_management_clause
は、永続的なローカル管理表領域に対してのみ有効です。Oracle Databaseが、空きリストまたはビットマップのどちらを使用して、表領域のセグメントにある使用済領域および空き領域を追跡するかを指定できます。この句は、一時表領域では無効です。
AUTO
を指定すると、データベースでビットマップを使用して表領域のセグメントの空き領域を管理できます。AUTO
を指定すると、この表領域のオブジェクトに対して後で指定する記憶域のPCTUSED
、FREELIST
およびFREELIST
GROUPS
の値は無視されます。この設定を自動セグメント領域管理といい、これがデフォルトです。
MANUAL
MANUAL
を指定すると、データベースで空きリストを使用して表領域のセグメントの空き領域を管理できます。この設定は使用しないようにして、自動セグメント領域の表領域を作成することを強くお薦めします。
既存の表領域のセグメント管理を確認するには、DBA_TABLESPACES
またはUSER_TABLESPACES
データ・ディクショナリ・ビューのSEGMENT_SPACE_MANAGEMENT
列を問い合せます。
ノート:
AUTO
セグメント管理を指定する場合、次のことに注意します。
-
エクステント管理を
LOCAL
UNIFORM
に設定する場合は、各エクステントに5以上のデータベース・ブロックがあることを確認する必要があります。 -
エクステント管理を
LOCAL
AUTOALLOCATE
に設定する場合、およびデータベースのブロック・サイズが16KB以上の場合は、最小で5ブロック(64KBに切り上げられる)のエクステントが作成され、セグメント領域管理が管理されます。
自動セグメント領域管理の制限事項
この句には、次の制限事項があります。
-
この句は、永続的なローカル管理表領域に対してのみ指定できます。
-
この句は、
SYSTEM
表領域に対して指定できません。
関連項目:
-
自動セグメント領域管理およびその使用については、『Oracle Automatic Storage Management管理者ガイド』を参照してください。
-
データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
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
モードに依存しません。
関連項目:
-
Oracle Flashback Databaseの詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
-
データベース全体を
FLASHBACK
モードに設定し、データベースを以前のバージョンに戻す方法の詳細は、「ALTER DATABASE」および「FLASHBACK DATABASE」を参照してください。 -
「FLASHBACK TABLE」および「flashback_query_clause」を参照してください。
lost_write_protection
消失書込みレコードの記憶域を作成するには、lost_write_protection
句を指定します。データファイルとデータベースに対して消失書込み保護を有効にするには、事前にこの記憶域またはシャドウ表領域を作成する必要があります。
他のすべての表領域と同様に、必要な数のシャドウ表領域を作成し、それらに名前を付けることができます。
例: データベースでのシャドウ表領域の作成
この例では、消失書込み保護のためのシャドウ表領域sh_lwp1
を作成します。
CREATE BIGFILE TABLESPACE sh_lwp1 DATAFILE sh_lwp1.df SIZE 10M BLOCKSIZE 8K LOST WRITE PROTECTION;
表領域の消失書込み保護を有効化するには、lost_write_protection
句をALTER TABLESPACE
で指定します。
データファイルの消失書込み保護を有効化するには、lost_write_protection
句をALTER DATABASE
で指定します。
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_clause
、tablespace_encryption_clause
およびextent_management_clause
のみです。extent_management_clause
を使用した、ローカルのUNIFORM
エクステント管理またはディクショナリ・エクステント管理の指定はいずれもできません。すべてのUNDO表領域は、永続的、読取り/書込み可能およびロギング・モードで作成されます。MINIMUM
EXTENT
およびDEFAULT
STORAGE
に対する値は、システムで生成されます。
関連項目:
-
自動UNDO管理およびUNDO表領域の詳細は、『Oracle Database管理者ガイド』を参照してください。
UNDO_MANAGEMENT
パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 -
データベースの作成時にUNDO表領域を作成する方法は、「CREATE DATABASE」を参照してください。また、「ALTER TABLESPACE」および「DROP TABLESPACE」を参照してください。
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」を参照してください。
関連項目:
-
表領域グループへの表領域の追加の詳細は、「ALTER TABLESPACE」および「表領域グループへの一時表領域の追加: 例」を参照してください。
-
ユーザーに対する一時表領域の割当てについては、「CREATE USER」を参照してください。
-
表領域グループの詳細は、『Oracle Database管理者ガイド』を参照してください。
一時表領域の制限事項
一時表領域に格納されているデータは、セッションの存続期間中にのみ保持されます。そのため、CREATE
TABLESPACE
句のサブセットのみが一時表領域に対して有効です。一時表領域に対して指定できる句は、TEMPFILE
句、tablespace_group_clause
、extent_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;