用途
storage_clause
を使用すると、Oracle Databaseによる永続的なデータベース・オブジェクトの格納方法を指定できます。一時セグメントの記憶域パラメータでは、常に、関連付けられた表領域のデフォルトの記憶域パラメータが使用されます。記憶域パラメータは、データベースのデータへのアクセス時間およびデータベース内での領域の効率的な利用に影響します。
関連項目: 記憶域パラメータの影響の詳細は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。 |
クラスタ、索引、マテリアライズド・ビュー、マテリアライズド・ビュー・ログ、ロールバック・セグメント、表、LOB、VARRAY、ネストした表またはパーティションを作成する場合、これらのオブジェクトに割り当てられるセグメントに、記憶域パラメータの値を指定できます。記憶域パラメータを指定しない場合、オブジェクトが存在する表領域に指定されている記憶域パラメータの値が使用されます。表領域に対して値を指定しなかった場合、データベースによってデフォルト値が使用されます。
注意: ローカル管理表領域内のオブジェクトへの記憶域パラメータの指定は、下位互換性のためにサポートされています。ローカル管理表領域を使用している場合、ローカル管理表領域にオブジェクトを作成する際にこれらの記憶域パラメータを省略できます。 |
クラスタ、索引、マテリアライズド・ビュー、マテリアライズド・ビュー・ログ、ロールバック・セグメント、表、VARRAY、ネストした表またはパーティションを変更する場合、記憶域パラメータの値を変更できます。この値の変更は、それ以降のエクステントの割当てにのみ影響します。
storage_clause
はphysical_attributes_clause
の一部であるため、この句は、物理属性句を指定できる任意の文に指定できます(「physical_attributes_clause」を参照)。storage_clause
は次の文にも指定できます。
CREATE
CLUSTER
およびALTER
CLUSTER
: クラスタおよびクラスタ内のすべての表の記憶特性を設定または変更する場合(「CREATE CLUSTER」および「ALTER CLUSTER」を参照)。
CREATE
INDEX
およびALTER
INDEX
: 表索引または索引パーティションに対して作成された索引セグメントまたは主キー制約または一意制約を適用するために使用される索引に対して作成された索引セグメントの記憶特性を設定または変更する場合(「CREATE INDEX」および「ALTER INDEX」を参照)。
CREATE
TABLE
またはALTER
TABLE
のENABLE
... USING
INDEX
句: 主キー制約または一意制約を適用するためにシステムによって作成された索引の記憶特性を設定または変更する場合。
CREATE
MATERIALIZED
VIEW
およびALTER
MATERIALIZED
VIEW
: マテリアライズド・ビュー、そのパーティションの1つ、またはマテリアライズド・ビューを保持するために生成される索引の記憶特性を設定または変更する場合(「CREATE MATERIALIZED VIEW」および「ALTER MATERIALIZED VIEW」を参照)。
CREATE
MATERIALIZED
VIEW
LOG
およびALTER
MATERIALIZED
VIEW
LOG
: マテリアライズド・ビュー・ログの記憶特性を設定または変更する場合(「CREATE MATERIALIZED VIEW LOG」および「ALTER MATERIALIZED VIEW LOG」を参照)。
CREATE ROLLBACK SEGMENT
およびALTER ROLLBACK SEGMENT
: ロールバック・セグメントの記憶特性を設定または変更する場合(「CREATE ROLLBACK SEGMENT」および「ALTER ROLLBACK SEGMENT」を参照)。
CREATE
TABLE
およびALTER
TABLE
: クラスタ化されていない表またはそのパーティションまたはサブパーティションの1つのLOBまたはVARRAYデータ・セグメント、またはネストした表の記憶表の記憶特性を設定する場合(「CREATE TABLE」および「ALTER TABLE」を参照)。
CREATE
TABLESPACE
およびALTER
TABLESPACE
: 表領域に作成されたすべてのオブジェクトに対するデフォルトの記憶特性を設定または変更する場合(「CREATE TABLESPACE」および「ALTER TABLESPACE」を参照)。表領域の記憶域パラメータに対する変更は、表領域に作成される新しいオブジェクトまたはセグメントに割り当てられる新しいエクステントにのみ影響します。
constraint
: 制約の適用に使用される索引(パーティション索引の場合は索引のパーティション)の記憶域を指定する場合(「constraint」を参照)。
(size_clause::=を参照)
maxsize_clause::=
(size_clause::=を参照)
セマンティクス
この項では、storage_clause
のパラメータについて説明します。詳細は、特定のデータベース・オブジェクトに対してこれらの記憶域パラメータを設定または再設定するSQL文の説明を参照してください。
注意: ローカル管理表領域の場合、storage_clause の解析方法は異なります。ローカル管理表領域の場合、Oracle Databaseでは、オブジェクトの最初の作成時に割り当てられるエクステント数を計算するために、INITIAL 、NEXT 、PCTINCREASE およびMINEXTENTS が使用されます。オブジェクトの作成後、これらのパラメータは無視されます。詳細は、「CREATE TABLESPACE」を参照してください。 |
オブジェクトの第1エクステントのサイズを指定します。スキーマ・オブジェクトの作成時に、このエクステントに領域が割り当てられます。この句の詳細は、「size_clause」を参照してください。
ローカル管理表領域では、初期セグメント・サイズを決定するために、INITIAL
の値が、ローカル管理の種類(AUTOALLOCATE
またはUNIFORM
)と、MINEXTENTS
、NEXT
およびPCTINCREASE
の値とともに使用されます。
AUTOALLOCATE
エクステント管理の場合、INITIAL
設定を使用して、割り当てられるエクステント数を最適化します。エクステントには、64K、1M、8Mおよび64Mのサイズを割り当てることができます。セグメントの作成時に、これらの4つのサイズのうちINITIAL
以下で最大のものがシステムによって選択され、そのサイズのエクステントがINITIAL
設定に達するのに必要な数だけ割り当てられます。たとえば、INITIAL
を4Mに設定すると、1Mのエクステントが4つ作成されます。
UNIFORM
エクステント管理の場合、エクステント数は、初期セグメント・サイズと表領域作成時に指定した均一エクステント・サイズで決定されます。たとえば、エクステントが1Mの均一なローカル管理表領域の場合、INITIAL
の値を5Mに指定すると、1Mのエクステントが5つ作成されます。
次の例を比較してみます。AUTOALLOCATE
の場合、INITAL
を72Kに設定すると、初期セグメント・サイズは128K(INITIAL
を超えるサイズ)になります。64Kより小さいエクステントを割り当てることはできないため、必然的に64Kのエクステントが2つ割り当てられます。INITIAL
を72Kに設定し、24KのUNIFORM
エクステント・サイズを使用する場合は、24Kのエクステント3つが割り当てられるため、72Kに等しくなります。
ディクショナリ管理表領域では、デフォルトの初期エクステント・サイズは5ブロックであり、後続のすべてのエクステントは5ブロックに丸められます。表領域作成時にMINIMUM
EXTENT
が指定された場合、エクステント・サイズはMINIMUM
EXTENT
の値に丸められます。
INITIALの制限事項: ALTER
文では、INITIAL
を指定できません。
オブジェクトに割り当てる次のエクステント・サイズをバイト単位で指定します。この句の詳細は、「size_clause」を参照してください。
ローカル管理表領域では、ユーザー指定のNEXT
の値はすべて無視され、表領域が自動割当てエクステント管理用に設定されている場合、NEXT
のサイズはOracleによって決定されます。UNIFORM
表領域では、NEXT
のサイズは表領域作成時に指定された均一エクステント・サイズです。
ディクショナリ管理表領域では、デフォルトのサイズは5データ・ブロックです。最小のサイズは1データ・ブロックです。最大値は、ご使用のオペレーティング・システムによって異なります。5データ・ブロックより小さい値が指定された場合、データ・ブロック・サイズの一番近い倍数に丸められます。5データ・ブロックを超える値の場合は、断片化を最小限に抑える値に切り上げられます。
関連項目: 断片化の最小化の詳細は、『Oracle Database概要』を参照してください。 |
ローカル管理表領域では、初期セグメント・サイズを決定するためにセグメント作成時にPCTINCREASE
の値が使用され、その後の領域割当て時にはこのパラメータは無視されます。
ディクショナリ管理表領域では、3番目以降の各エクステントが直前のエクステントに対して増加する割合(パーセント)を指定します。デフォルト値は50です。この場合、3番目以降のエクステントは、それぞれその直前のエクステントより50%ずつ大きくなります。最小値は0で、この場合、第2エクステント以降のエクステントのサイズはすべて同じになります。最大値は、ご使用のオペレーティング・システムによって異なります。計算された各新規エクステントのサイズは、データ・ブロック・サイズの一番近い倍数に丸められます。ALTER
文にPCTINCREASE
パラメータの値を指定してこの値を変更すると、この変更した値と直前に割り当てられたエクステントのサイズを使用して、次に割り当てるエクステントのサイズが計算されます。
PCTINCREASEの制限事項: ロールバック・セグメントにPCTINCREASE
は指定できません。ロールバック・セグメントでは、PCTINCREASE
の値は常に0(ゼロ)です。
ローカル管理表領域では、初期セグメント・サイズを決定するために、MINEXTENTS
の値がPCTINCREASE
、INITIAL
およびNEXT
の値とともに使用されます。
ディクショナリ管理表領域では、オブジェクトの作成時に割り当てられる合計エクステント数を指定します。最小値(デフォルト)は1です。この場合、第1エクステントのみが割り当てられます。ただし、ロールバック・セグメントの場合、最小値(デフォルト)は2です。最大値は、ご使用のオペレーティング・システムによって異なります。
ローカル管理表領域では、領域の初期割当て量を計算するためにMINEXTENTS
が使用されます。INITIAL
* MINEXTENTS
で算出されます。その後、この値は1に設定され、DBA_SEGMENTS
ビューに反映されます。
ディクショナリ管理表領域では、MINEXTENTS
は単純に、セグメントに割り当てる必要があるエクステントの最小数です。
MINEXTENTS
の値が1より大きい場合、INITIAL
、NEXT
およびPCTINCREASE
記憶域パラメータの値に基づいて、次のエクステントのサイズが計算されます。
ALTER
文にMINEXTENTS
の値を指定して変更する際は、現行の値より小さくすることはできますが、大きくすることはできません。MINEXTENTS
をより小さい値に再設定すると便利な場合があります。たとえば、TRUNCATE
... DROP
STORAGE
文の前で、TRUNCATE
操作の後もセグメントがエクステントの最小数を変更しない場合です。
MINEXTENTSの制限事項: MINEXTENTS
記憶域パラメータには、次の制限事項があります。
MINEXTENTS
は、表領域レベルでは適用できません。
ALTER
文のMINEXTENTS
の値、またはローカル管理表領域に存在するオブジェクトに対するMINEXTENTSの値は変更できません。
この記憶域パラメータは、ディクショナリ管理表領域のオブジェクトに対してのみ有効です。第1エクステントを含めて、Oracleがオブジェクトに割り当てることができるエクステントの総数を指定します。最小値は1です(最小値が常に2のロールバック・セグメントは除きます)。デフォルト値は、データ・ブロックのサイズによって異なります。
MAXEXTENTSの制限事項 MAXEXTENTS
は、ローカル管理表領域に存在するオブジェクトに対しては無視されます。ただし、DBA_TABLESPACES
データ・ディクショナリ・ビューの表領域に対し、ALLOCATION_TYPE
の値がUSER
である場合を除きます。
関連項目: DBA_TABLESPACES データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。 |
UNLIMITED 必要に応じてエクステントが自動的に割り当てられるようにする場合に、UNLIMITED
を指定します。断片化を最小限に抑えるため、この設定をお薦めします。
ロールバック・セグメントにこの句は使用しないでください。この句をロールバック・セグメントに使用すると、長時間実行される特殊なDMLトランザクションによって、ディスクが一杯になるまで新しいエクステントが作成され続ける可能性があります。
注意: storage_clause を指定せずに作成したロールバック・セグメントは、ロールバック・セグメントを作成した表領域の記憶域パラメータと同じ設定になります。MAXEXTENTS UNLIMITED を指定して表領域を作成する場合、ロールバック・セグメントのデフォルトは同じ設定になります。 |
MAXSIZE
MAXSIZE
句を使用すると、記憶域要素の最大サイズを指定できます。LOB記憶域では、MAXSIZE
を使用すると、次のようになります。
LOB_parameters
にRETENTION
MAX
を指定すると、指定されたサイズにLOBセグメントが拡張され、その後、UNDO領域から任意の領域を再利用できます。
LOB_parameters
にRETENTION
AUTO
、MIN
またはNONE
を指定すると、指定されたサイズはLOBセグメントのサイズの上限値となり、UNDOの保持においてその指定の影響はありません。
UNLIMITED 記憶域要素のディスク領域を制限しない場合は、UNLIMITED
句を使用します。この句は、LOB_parameters
でのRETENTION
MAX
の指定と同時には指定できません。両方を指定すると、RETENTION
AUTO
およびMAXSIZE
UNLIMITED
が使用されます。
セグメントを手動で領域管理する表領域の場合、セグメント内の挿入ポイント数を増やしてOLTPシステムの領域管理のパフォーマンスを向上させるために、FREELISTS
記憶域パラメータが使用されます。セグメントを自動的に領域管理する表領域の場合、変化するワークロードにデータベースが適応するため、このパラメータは無視されます。
セグメントを手動で領域管理する表領域の場合、表領域およびロールバック・セグメント以外のオブジェクトに対して、表、パーティション、クラスタまたは索引の各空きリスト・グループの空きリスト数を指定します。このパラメータの最小値(デフォルト)は1です。この場合、空きリスト・グループごとに1つの空きリストが含まれます。最大値は、データ・ブロックのサイズによって異なります。FREELISTS
に指定した値が大きすぎた場合、最大値を示すエラーが戻ります。
「
LOB_parameters」のSECUREFILEパラメータを指定している場合、この句は無効です。SECUREFILE
パラメータおよびFREELISTS
の両方を指定した場合、FREELISTS
の指定は無視されます。
FREELISTSの制限事項: 表領域またはロールバック・セグメントを作成または変更するとき以外は、すべての文のstorage_clause
にFREELISTS
を指定できます。
セグメントを手動で領域管理する表領域の場合、Oracle Real Application Clusters環境でセグメント空き領域を静的にパーティション化するために、この記憶域パラメータの値が使用されます。このパーティション化によって、セグメント・メタデータがインスタンス間で転送されなくなり、領域の割当ておよび割当て解除のパフォーマンスが向上します。セグメントを自動的に領域管理する表領域の場合、インスタンス間ワークロードにOracleが動的に適応するため、このパラメータは無視されます。
セグメントを手動で領域管理する表領域の場合、作成するデータベース・オブジェクトに対する空きリスト・グループ数を指定します。このパラメータの最小値(デフォルト)は1です。Oracleは、Oracle Real Application Clusters(Oracle RAC)インスタンスのインスタンス番号を使用して、各インスタンスを空きリスト・グループにマップします。
1つの空きリスト・グループに、それぞれデータベース・ブロックを1つずつ使用します。したがって、次のことがいえます。
各空きリスト・グループの最小値に、1データ・ブロックを加えた値を格納できるだけの十分な大きさの値をINITIAL
の値に指定していない場合、INITIAL
の値は必要な分だけ引き上げられます。
均一なローカル管理表領域にオブジェクトを作成する場合、空きリスト・グループ数に適応するだけの十分なエクステント・サイズがないと、作成操作は正常に実行されません。
「
LOB_parameters」のSECUREFILEパラメータを指定している場合、この句は無効です。SECUREFILE
パラメータおよびFREELIST
GROUPS
の両方を指定した場合、FREELIST
GROUPS
の指定は無視されます。
FREELIST GROUPSの制限事項: FREELIST
GROUPS
パラメータは、CREATE
TABLE
、CREATE
CLUSTER
、CREATE
MATERIALIZED
VIEW
、CREATE
MATERIALIZED
VIEW
LOG
およびCREATE
INDEX
文でのみ指定できます。
OPTIMAL
キーワードは、ロールバック・セグメントのみに指定します。ロールバック・セグメントの最適なサイズをバイト単位で指定します。この句の詳細は、「size_clause」を参照してください。
エクステントのデータがアクティブ・トランザクションで不要になった場合、Oracleは、そのエクステントの割当てを動的に解除することによって、指定されたロールバック・セグメントのサイズを維持します。ロールバック・セグメントのサイズの合計をOPTIMAL
値より小さくせずに、できるだけ多くのエクステントの割当てを解除します。
OPTIMAL
には、MINEXTENTS
、INITIAL
、NEXT
およびPCTINCREASE
パラメータで最初に割り当てた領域より小さい値を指定できません。最大値は、ご使用のオペレーティング・システムによって異なります。値は、データ・ブロック・サイズの一番近い倍数に丸められます。
NULL ロールバック・セグメントに対する最適なサイズがないことを示す場合にNULL
を指定します。これは、ロールバック・セグメントのエクステントの割当てが解除されないことを示します。これはデフォルトの動作です。
BUFFER_POOL
句では、スキーマ・オブジェクト用のデフォルトのバッファ・プール(キャッシュ)を定義します。オブジェクトのすべてのブロックは、指定されたキャッシュに格納されます。
バッファ・プールがパーティション表またはパーティション索引用に定義されている場合は、パーティションは、パーティション・レベル定義で変更されないかぎり、表定義または索引定義のバッファ・プールを継承します。
索引構成表の場合、索引セグメントおよびオーバーフロー・セグメントに対して個々にバッファ・プールを指定できます。
BUFFER_POOLパラメータの制限事項: BUFFER_POOL
には、次の制限事項があります。
この句は、クラスタ化表には指定できません。ただし、クラスタには指定できます。
この句は、表領域またはロールバック・セグメントには指定できません。
KEEP KEEP
を指定すると、ブロックがセグメントからKEEP
バッファ・プールへ移されます。KEEP
バッファ・プールに適切なサイズを維持すると、メモリーのスキーマ・オブジェクトが保持され、I/O操作を避けることができます。KEEP
は、表、クラスタ、マテリアライズド・ビューまたはマテリアライズド・ビュー・ログに指定するNOCACHE
句より優先されます。
RECYCLE RECYCLE
を指定すると、ブロックがセグメントからRECYCLE
プールへ移されます。RECYCLE
プールに適切なサイズを指定すると、不要なキャッシュ領域が利用されず、デフォルト・プールがRECYCLE
プールであるオブジェクト数が削減されます。
DEFAULT デフォルトのバッファ・プールを識別する場合に、DEFAULT
を指定します。これは、KEEP
もRECYCLE
も指定しないオブジェクトのデフォルトです。
関連項目: 複数のバッファ・プールの使用方法については、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。 |
FLASH_CACHE
句を使用すると、自動バッファ・キャッシュ・ポリシーを上書きし、特定のスキーマ・オブジェクトをフラッシュ・メモリーにキャッシュする方法を指定できます。この句を使用するには、システムでデータベース・スマート・フラッシュ・キャッシュ(フラッシュ・キャッシュ)が構成されている必要があります。フラッシュ・キャッシュは、フラッシュ・ディスク(フラッシュ・メモリーを使用するストレージ・デバイス)に格納されるデータベース・バッファ・キャッシュの拡張機能です。フラッシュ・メモリーは磁気ディスクよりも高速であるため、データベースは、磁気ディスクから読み込むかわりに、フラッシュ・キャッシュにバッファをキャッシュすることによってパフォーマンスを向上させることができます。
KEEP フラッシュ・キャッシュの大きさが十分にあり、スキーマ・オブジェクト・バッファを引き続きフラッシュ・キャッシュにキャッシュする場合は、KEEP
を指定します。
NONE スキーマ・オブジェクト・バッファをフラッシュ・キャッシュにキャッシュしないようにする場合は、NONE
を指定します。これにより、より頻繁にアクセスするオブジェクト用にフラッシュ・キャッシュ領域を確保できます。
DEFAULT メイン・メモリーからエージ・アウトされるときにスキーマ・オブジェクト・バッファをフラッシュ・キャッシュに書き込み、その後、標準のバッファ・キャッシュ置換アルゴリズムによりフラッシュ・キャッシュからエージ・アウトする場合は、DEFAULT
を指定します。フラッシュ・キャッシュが構成されている場合に、KEEP
またはNONE
を指定しないと、これがデフォルトになります。
注意: データベース・スマート・フラッシュ・キャッシュは、SolarisおよびOracle Linux環境でのみ使用できます。 |
関連項目:
|
この句は、表領域を作成する場合にのみ有効です。表領域全体を暗号化するには、ENCRYPT
を指定します。CREATE
TABLESPACE
文にENCRYPTION
句を指定する必要もあります。