ヘッダーをスキップ

Oracle Rdb SQLリファレンス・マニュアル リリース7.2 E06178-01 |
| 目次 | 索引

戻る | 次へ |

# CREATE SEQUENCE文

> 順序を作成します。順序は、複数のユーザーが一意の整数を生成するためのデータベース・オブジェクトです。順序を使用して、主キーの値を自動的に生成できます。

## 環境

> CREATE SEQUENCE文は次の環境で使用できます。

> - 対話型SQL内

> - ホスト言語プログラムに埋め込まれる場合

> - SQLモジュールまたはその他の複合文のプロシージャの一部として

> - 動的SQLで動的に実行される文として

## 形式

## 引数

> ### CACHE numeric-value

> ### NOCACHE

> CACHE句は、Oracle Rdbで事前に割り当てられ、アクセスを迅速にするためにメモリーに保持される順序の値の数を指定します。数値には2〜2147483647の値を指定してください。

> 順序番号の一定のサイクルに収まる値を超える値はキャッシュできません。したがって、CACHE句に使用できる最大値は、次の式の結果値未満にする必要があります。

>     (MAXVALUE-MINVALUE)/ABS(INCREMENT)

> SET FLAGSオプションのSEQ_CACHEを使用して、実行時のCACHEの設定をオーバーライドします。詳細は、「SET FLAGS文」を参照してください。

> 特定の順序のキャッシュは、順序からの番号の初回リクエスト時に、キャッシュが空であり、値がリクエストされた場合に、その順序から移入されます。システム障害の発生時や、キャッシュが解放された場合、フェッチされていない値は破棄されます。失われる値の最大数は、その時点のキャッシュ・サイズと等しくなります。これはCACHEまたはSET FLAGS SEQ_CACHEオプションで指定される値になります。

> NOCACHE句では、その都度割り当てられる値を指定します。これは、Rbcルート・ファイルに対するI/OがCACHE値の使用時より大きくなります。

> デフォルトでは、Oracle Rdbでは20の順序値をキャッシュします。

> ### COMMENT IS 'string'

> 順序に関するコメントを追加します。SQLでは、SHOW SEQUENCE文の実行時にコメントのテキストが表示されます。コメントは一重引用符（'）で囲み、コメント内の複数の行はスラッシュ（/）で区切ります。

> ### CYCLE

> ### NOCYCLE

> CYCLE句は、MINVALUEまたはMAXVALUEに達した後も、順序によって値の生成を継続することを指定します。昇順でMAXVALUEに達した後、順序はそのMINVALUEから再開されます。降順でMINVALUEに達した後、順序はそのMAXVALUEから再開されます。NOCYCLE句は、値が最小値または最大値に達した後は、順序によって生成を継続しないことを指定します。この制限を超えて順序を増やそうとすると、エラーが発生します。デフォルトはNOCYCLE句です。

> ### INCREMENT BY numeric-value

> 順序の増分サイズおよび方向（昇順または降順）を指定します。この数値は-2147483648〜2147483647の（0を除く）範囲である必要があります。絶対値はMAXVALUEとMINVALUEの差異未満である必要があります。負の値によって降順が、正の値によって昇順が指定されます。デフォルトでは、数値は1です。

> ### MAXVALUE numeric-value

> ### NOMAXVALUE

> MAXVALUE句は、順序によって生成される最大符号付きquadword（BIGINT）値を指定します。この数値は-9223372036854775808〜9223372036854775808の範囲である必要があります。MAXVALUEは、START WITH句で指定した値以上であり、MINVALUE句で指定した値を超えている必要があります。NOMAXVALUE句は、昇順の最大値を9223372036854775808（およびキャッシュ・サイズを加算）、および降順の最大値を-1に指定します。

> デフォルトはNOMAXVALUE句です。

> ### MAXVALUE TINYINT

> ### MAXVALUE SMALLINT

> ### MAXVALUE INTEGER

> ### MAXVALUE BIGINT

> SQLでは、数値ではなく、キーワードTINYINT、SMALLINT、INTEGERおよびBIGINTをMAXVALUEに使用できます。これにより、これらのデータ型で使用される順序の範囲設定が簡単になります。指定される値は、このデータ型に割当て可能な正の値の最大値になります。

> ### MINVALUE numeric-value

> ### NOMINVALUE

> MINVALUE句は、順序によって生成される最小符号付きquadword（BIGINT）値を指定します。この数値は-9223372036854775808以上である必要があります。MINVALUEは、START WITH句で指定した値以下であり、MAXVALUE句で指定した値未満である必要があります。NOMINVALUE句は、昇順の最小値を1、降順の最小値を-9223372036854775808（およびキャッシュ・サイズを加算）に指定します。

> デフォルトはNOMINVALUE句です。

> ### MINVALUE TINYINT

> ### MINVALUE SMALLINT

> ### MINVALUE INTEGER

> ### MINVALUE BIGINT

> SQLでは、数値ではなく、キーワードTINYINT、SMALLINT、INTEGERおよびBIGINTをMINVALUEに使用できます。これにより、これらのデータ型で使用される順序の範囲設定が簡単になります。指定される値は、このデータ型に割当て可能な負の値の最小値になります。

> ### ORDER

> ### NOORDER

> ORDER句は、それぞれのリクエスト・プロセスに順序番号が必ず順に割り当てられることを指定します。つまり、正確なリクエスト履歴が保持されます。NOORDER句は、順序番号が必ずしもリクエストの順序で生成されないことを指定します。

> デフォルトはNOORDER句です。

> ### RANDOMIZE

> ### NORANDOMIZE

> RANDOMIZE句は、BIGINT値の最上位バイトにおいて、ランダムな値で順序番号が返されることを指定します。これによって、ランダムに配布される一意の値が生成されます。NORANDOMIZE句を指定すると、順序番号は同時に作成された他の値に近いものになります。

> RANDOMIZE句の利点は、ソート索引の列を更新すると、その値が索引構造の様々な場所に記述されることです。これにより、索引の別の場所にある下位ノードを個別に更新できるため、大規模な索引への同時アクセスが向上します。一方、NORANDOMIZE句を指定した場合に順序番号（その他の順序に近い数値）が生成されると、同一または類似する索引ノードの索引が更新され、ソート索引の一部で競合が発生する場合があります。

> 順序に対して返されるBIGINT値のすべての値範囲が使用されます。このため、NOMAXVALUE句とNOMINVALUE句は順序定義に指定（またはデフォルト設定）する必要があります。BIGINT値の最上位ビットは、ランダムに生成された正の値に設定されます。生成された個別値は、最下位32ビットで返され、その独自性が保たれます。CYCLE句も指定する場合は、最下位32ビットのみが循環します。RDB$SEQUENCES表のRDB$NEXT_SEQUENCE_VALUE列で問合せを実行すると、NEXTVAL疑似列が参照されるまで最上位ビットは割り当てられないため、最下位ビットに生成された値のみが返されます。

> RANDOMIZEを指定すると、ORDER、MAXVALUEまたはMINVALUEは指定できなくなります。デフォルトはNORANDOMIZE句です。

> ### sequence-name

> 作成する順序の名前です。データベース内のすべての順序名で、またはマルチスキーマ・データベースを使用している場合のスキーマ内で一意の名前を使用します。有効なSQL名を使用します。

> ### START WITH numeric-value

> 順序に使用する初期数値を指定します。この値は、他の順序属性句で指定される（またはデフォルト設定される）範囲内である必要があります。有効な値の範囲は-9223373036854775808〜9223372036854775807です。

> これを削除すると、START WITH値が昇順の場合はMINVALUEの値、降順の場合はMAXVALUEの値にデフォルト設定されます。

> ### STORED NAME IS stored-name

> マルチスキーマ・データベースに作成した順序へのアクセスに使用される名前を指定します。ストアド名を使用すると、1つのデータベース内では複数のスキーマを認識しない、Oracle RMUなどのインタフェースを使用して、マルチスキーマ定義にアクセスできます。複数のスキーマに対応しないデータベース内では、順序のストアド名は指定できません。

> ### WAIT

> ### NOWAIT

> ### DEFAULT WAIT

> MEXTVALへの参照を使用する場合の待機状態を指定します。順序についてNEXTVALを参照するには、順序のその他のユーザーとの同期化が必要です。DEFAULT WAITを指定すると、現在のトランザクションの待機状態（WAITまたはNOWAIT）が使用されます。つまり、NOWAITトランザクション中は待機しません。

> WAIT（デフォルト）を順序に指定すると、現在のトランザクションの待機状態の設定に関係なく、すべての同期化が次の値まで待機します。これは、アプリケーションでNOWAITトランザクションを使用している場合の推奨設定です。トランザクションまたはデータベースに定義された現在のWAITタイムアウト時間が使用されます。

> NOWAITを順序に指定すると、現在のトランザクションの設定に関係なく、すべての同期化は次の値まで待機しません。

## 使用方法

> - 順序を作成するには、データベースに対するCREATEデータベース権限が必要です。
>   NEXTVALおよびCURRVAL疑似列を使用するには、ユーザーに順序に対するSELECT権限が必要です。

> - CURRVAL疑似列を使用するには、ユーザーはNEXTVAL疑似列を参照する必要があります。

> - 同時アクセスは、順序を作成したトランザクションがコミットされると可能になります。

> - NEXTVAL疑似列を1文の中で複数回指定した場合は、最初の指定のみが順序値を増分し、その他の指定はCURRVAL参照として動作します。

> - NEXTVALとCURRVALは区切られる場合があります。これらのキーワードは大文字でも小文字でも受け入れられ、すべて大文字のキーワードと等しいものとみなされます。
>   次の例では、大/小文字がすべて受け入れられることを示します。

>       SQL> set dialect 'sql99';
>       SQL> create sequence dept_id;
>       SQL> select dept_id.nextval from rdb$database;

>                           1
>       1 row selected
>       SQL> select "DEPT_ID".currval from rdb$database;

>                           1
>       1 row selected
>       SQL> select "DEPT_ID"."CURRVAL" from rdb$database;

>                           1
>       1 row selected
>       SQL> select "DEPT_ID"."nextval" from rdb$database;

>                           2
>       1 row selected
>       SQL> select "DEPT_ID"."CuRrVaL" from rdb$database;

>                           2
>       1 row selected

> - ランタイム・ロックは次の未使用の順序値への同期アクセスに使用されます。

> - START WITH句の値は、順序の作成後に生成される初期値を設定します。この値は、昇順のサイクル順序が最大値または最小値に達した後でも循環する値には不要です。

> - 順序属性を指定していない場合は、1ずつ増分する昇順の順序が1から作成され、上限はありません。指定する順序属性がINCREMENT BY -1のみの場合は、-1から始まり、下限のない降順の順序が生成されます。

> - 制限値のない順序を作成するには、次のいずれかを実行します。

>   - 昇順の場合はMAXVALUE句を削除するか、NOMAXVALUE句を指定します。

>   - 降順の場合はMINVALUE句を削除するか、NOMINVALUE句を指定します。

> - 事前定義された制限値で停止する順序を作成するには、次のいずれかを実行します。

>   - 昇順の場合はMAXVALUE句に対する値を指定し、CYCLE句を削除します。

>   - 降順の場合はMINVALUE句に対する値を指定し、CYCLE句を削除します。
>     この制限に達した後も順序番号を生成しようとすると、エラーが発生します。

> - 事前定義された制限値に達した後に再開される順序を作成するには、CYCLE句を削除し、MAXVALUE句とMINVALUE句の両方の値を指定します。

> - キャッシュが作成されると、SQL文で次の疑似列を使用してその値にアクセスできます。

>   - CURRVAL: 順序の現行値を返します。

>   - NEXTVAL: 順序を増分し、新規の値を返します。

## 例

> 例1: 順序の作成

>     SQL> -- This example creates a new sequence using the default
>     SQL> -- values for NOMINVALUE, NOMAXVALUE, INCREMENT BY 1, NOCYCLE,
>     SQL> -- and CACHE 20. The START WITH value is set to 147.
>     SQL> -- Allyn Stuart will be assigned an EMPLOYEE_ID value of 147.
>     SQL> -- Nick Jones will be assigned an EMPLOYEE_ID of 148.
>     SQL> --
>     SQL> CREATE SEQUENCE EMPID START WITH 00147;
>     SQL> -- Use NEXTVAL to fetch a sequence number for the primary key column.
>     SQL> INSERT INTO EMPLOYEES
>     cont> (EMPLOYEE_ID, LAST_NAME, FIRST_NAME)
>     cont> VALUES (EMPID.NEXTVAL, 'STUART', 'ALLYN')
>     cont> RETURNING EMPLOYEE_ID;
>      EMPLOYEE_ID
>      147
>     1 row inserted
>     SQL> -- Use CURRVAL to reuse the EMPLOYEE_ID value for the foreign key columns
>     SQL> -- in the associated tables.
>     SQL> INSERT INTO SALARY_HISTORY
>     cont> (EMPLOYEE_ID, SALARY_AMOUNT,SALARY_START, SALARY_END)
>     cont> VALUES (EMPID.CURRVAL, 35000, '6-FEB-1998', NULL)
>     cont> RETURNING EMPLOYEE_ID;
>      EMPLOYEE_ID
>      147
>     1 row inserted
>     SQL> INSERT INTO JOB_HISTORY
>     cont> (EMPLOYEE_ID, DEPARTMENT_CODE, JOB_START, JOB_END)
>     cont> VALUES (EMPID.CURRVAL, 'ENGR', '6-FEB-1998', NULL)
>     cont> RETURNING EMPLOYEE_ID;
>      EMPLOYEE_ID
>      147
>     1 row inserted
>     SQL> INSERT INTO EMPLOYEES
>     cont> (EMPLOYEE_ID, LAST_NAME, FIRST_NAME)
>     cont> VALUES (EMPID.NEXTVAL, 'JONES ', 'NICK ')
>     cont> RETURNING EMPLOYEE_ID;
>      EMPLOYEE_ID
>      148
>     1 row inserted

# CREATE STORAGE AREA句

> 注意 CREATE STORAGE AREAは独立した文として発行できません。これは、CREATE DATABASE文またはIMPORT文の一部としてのみ使用できる句です。 また、記憶域はALTER DATABASE文のADD STORAGE AREA句を使用して作成できます。

> 複数ファイルのデータベースに追加記憶域を作成します。記憶域は、複数ファイルのデータベースの特定の表に関連付けられるデータ・ファイルおよびスナップショット・ファイルです。

> CREATE STORAGE AREA句は、記憶域ファイルの名前を指定し、その物理特性を判断します。後続のCREATE STORAGE MAP文は、記憶域をデータベース内の特定の表に関連付けます。

## 環境

> CREATE STORAGE AREA句は、CREATE DATABASE文またはIMPORT文でのみ使用できます。

## 形式

## 引数

> ### ALLOCATION IS number-pages PAGES

> 最初に記憶域に割り当てられたデータベースのページ数です。Rdbでは、この割当てはSPAM（空き領域管理）ページなどの内部構造ページに対して自動的に拡張されます。たとえば、この例では25の割当てが27に増やされています。

>     SQL> alter database filename MF_PERSONNEL
>     cont> add storage area DOC_EXAMPLE
>     cont>   page format is uniform
>     cont>   allocation 25;
>     SQL> attach 'filename MF_PERSONNEL';
>     SQL> show storage area DOC_EXAMPLE

>          DOC_EXAMPLE
>              Access is:      Read write
>              Page Format:    Uniform
>              Page Size:      2 blocks
>              Area File:      USER_DISK:[DOC.DATABASES]DOC_EXAMPLE.RDA;1
>              Area Allocation:          27 pages
>              Extent:         Enabled
>              Area Extent Minimum:      99 pages
>              Area Extent Maximum:      9999 pages
>              Area Extent Percent:      20 percent
>              Snapshot File:  USER_DISK:[DOC.DATABASES]DOC_EXAMPLE.SNP;1
>              Snapshot Allocation:      100 pages
>              Snapshot Extent Minimum:  99 pages
>              Snapshot Extent Maximum:  9999 pages
>              Snapshot Extent Percent:  20 percent
>              Locking is Row Level
>              No Cache Associated with Storage Area
>     No database objects use Storage Area DOC_EXAMPLE

> ### CACHE USING row-cache-name

> 指定した行キャッシュを指定の記憶域に割り当てます。この領域に格納される行はすべて、表データ、セグメント化された文字列データ、または索引ノードのなどの特殊な行で構成されているかどうかに関係なく、キャッシュ・サイズが適していればキャッシュされます。

> 行キャッシュがない場合は、CREATE DATABASE文を終了する前に行キャッシュを作成する必要があります。次に例を示します。

>     SQL> CREATE DATABASE FILENAME test_db
>     cont> ROW CACHE IS ENABLED
>     cont> CREATE STORAGE AREA area1
>     cont>    CACHE USING test1
>     cont> CREATE CACHE test1
>     cont>    CACHE SIZE IS 100 ROWS
>     cont>    ROW LENGTH IS 200 BYTES;

> 各記憶域に対して割り当てることができる行キャッシュは1つのみです。

> 記憶域のデフォルトはNO ROW CACHEです。

> ### CHECKSUM CALCULATION

> ### SNAPSHOT CHECKSUM CALCULATION

> このオプションでは、ページを記憶域ファイルまたはスナップショット領域ファイルから読み取り、またはファイルへ書き込む場合のページ・チェックサムの計算を有効にまたは無効にできます。

> デフォルトはENABLEDです。

> 注意 チェックサム計算をデフォルトのまま有効にしておくことをお薦めします。

> 現在の技術では、チェックサム計算では検出できますが、他のハードウェア、ファームウェアまたはソフトウェアでは検出できないエラーが発生する場合があります。メモリー内またはディスク上でページが破損していて、検出されていない場合は、予期しないアプリケーション結果が生じ、データベースが破損する可能性があります。

> 次のような特定の状況を除き、チェックサム計算を実行することをお薦めします。

> - アプリケーションが安定しており、現行のハードウェアおよびソフトウェア構成で、長期にわたってエラーなしで実行されている場合。

> - 現行の構成で、最大CPU使用率に達している場合。チェックサム計算による実際のCPU使用率は、主にデータベース内のデータベース・ページのサイズによって異なります。データベース・ページのサイズが大きくなるほど、チェックサム計算でのCPU使用率は顕著になります。

> 注意 チェックサム計算によるCPU使用率の低下と、チェックサム計算を無効にした場合のデータベース整合性の損失の可能性の妥協点を慎重に検証することをお薦めします。

> Oracle Rdbでは、チェックサム計算を無効化し、後でエラーなしで再有効化できます。ただし、チェックサム計算が無効化されると、後でチェックサム計算が再有効化されても、破損ページが検出されない場合があります。

> ### EXTENT ENABLED

> ### EXTENT DISABLED

> エクステントを有効にまたは無効にします。エクステントのデフォルトはENABLEDです。

> サイズが不適切な記憶域が作成され、エクステントが有効な場合は、混合ページ形式の記憶域にハッシュ索引を作成する際に、パフォーマンス上の問題が生じる場合があります。エクステントを無効にすると、この問題を早期に診断して修正し、パフォーマンスを向上させることができます。

> ### EXTENT IS extent-pages PAGES

> ### EXTENT IS (extension-options)

> 各記憶域ファイル・エクステントのページ数を指定します。SNAPSHOT EXTENT引数の説明も参照してください。

> ### FILENAME file-spec

> 記憶域ファイルのファイル仕様を明示的に指定します。CREATE STORAGE AREA句では、ファイル拡張子.rdaの記憶域ファイル、ファイル拡張子.snpのスナップショット・ファイルの2つのファイルを作成します。FILENAME引数を省略すると、ファイル仕様のデフォルトは次のようになります。

> - デバイス: プロセスの現行デバイス

> - ディレクトリ: プロセスの現行ディレクトリ

> - ファイル名: 記憶域に指定した名前

> ファイル仕様は、記憶域ファイルおよび（SNAPSHOT FILENAME引数を使用してスナップショット・ファイルの別のファイルを指定していなければ）記憶域ファイルを構成するスナップショット・ファイルの両方を使用します。CREATE STORAGE AREA句では、異なる拡張子のファイルを2つ作成できるため、ファイル仕様ではファイル拡張子を指定しないでください。

> 論理名は、ファイル仕様のすべてまたは一部に使用できます。

> 複数ファイルのデータベースには、ファイルを複数のディスクに配置できるという利点があります。記憶域ファイルを別のディスクに置く場合は、完全ファイル仕様でFILENAME引数を指定する必要があります。

> ただし、記憶域を作成する主な目的が、記憶域ファイルを複数のディスクに分散させない場合でも、複数ファイルのデータベースの作成を選択できます。たとえば、複数ファイルのデータベースでは次のことが可能です。

> - ハッシュ索引を利用できます。ハッシュ索引は、混合ページ形式の記憶域が必要であり、RDB$SYSTEM記憶域には格納できません。

> - ページ・サイズなどの属性を設定し、記憶域に格納される表と対応させるようにします。

> ### INTERVAL IS number-data-pages

> 記憶域ファイルのSPAMページ間でのデータ・ページ数、および各SPAMページで管理されるデータ・ページの最大数を指定します。デフォルトのデータ・ページの最少の間隔は216です。各記憶域の最初のページはSPAMページです。SPAMページを必要とする記憶域ファイルのデータ・ページが十分な場合は、指定した間隔によって後続のSPAMページを挿入する場所が決まります。

> PAGE FORMAT IS MIXEDを明示的に指定していない場合、INTERVAL記憶域パラメータは指定できません。

> Oracle Rdbでは、ページごとのブロック数に基づいて最大INTERVALサイズが計算され、この値を超える場合はエラー・メッセージが返されます。たとえば、ページ・サイズが2ブロックの場合、最大INTERVALは4008ページになります。INTERVALを4009に設定して記憶域を作成しようとすると、次のエラー・メッセージが返されます。

>     %RDB-E-BAD_DPB_CONTENT, invalid database parameters in the database parameter
>     block (DPB)
>     -RDMS-F-SPIMAX, spam interval of 4009 is more than the Rdb maximum of 4008
>     -RDMS-F-AREA_NAME, area NEW

> 領域管理パラメータの設定の詳細は、『Oracle Rdb7 Guide to Database Maintenance』を参照してください。

> ### LOCKING IS ROW LEVEL

> ### LOCKING IS PAGE LEVEL

> ロックを記憶域のページレベルで行うか行レベルで行うかを指定します。この句では、レコードに対するロック・リクエストのレベルを指定します。記憶域の作成時にロック・レベルを指定すると、そのレベルがデータベース・デフォルト・ロック・レベルより優先されます。デフォルトはROW LEVELです。

> 同一の領域、および同一のページの多数のレコードにアクセスする場合、LOCKING IS PAGE LEVEL句により、トランザクション処理のために実行するロック操作数が減少します。ただし、ページのロックがCOMMIT/ROLLBACKまで保持されるため、これによって同時実行性が低下します。ページレベル・ロックは、実行時間が短く、かつ同一ページにある複数のデータベース・レコードにアクセスするトランザクションには非常に有効です。ただし、このような行ロックがない場合のデータの整合性を保証するには、トランザクションをCOMMITまたはROLLBACKで終了するまで、このようなページレベルのロックを保持する必要があります。

> 実行時間が長く、多数の行がロックされるようなトランザクションに対しては、LOCKING IS ROW LEVEL句を使用します。

> LOCKING IS PAGE LEVEL句を使用すると、非同期システム・トラップのブロック数が減少するため、システム・リソースのレスポンス時間が短縮され、利用効率も向上します。ただし、ページ間競合が増加したり、デッドロックの可能性とトランザクション時間が増大するため、ロックが過剰に使用される場合があります。

> RDB$SYSTEMまたはDEFAULT記憶域には、暗黙的、明示的を問わずページレベル・ロックは適用されません。これは、ページレベル・ロックのプロトコルでは、メタデータ・ユーザーが停止する場合があるためです。

> 単一ファイルのデータベースでは、ページレベル・ロックは指定できません。

> ### MAXIMUM OF max-pages PAGES

> 各エクステントのページの最大数を指定します。デフォルトは9,999ページです。

> ### MINIMUM OF min-pages PAGES

> 各エクステントのページの最小数を指定します。デフォルトは99ページです。

> ### NO ROW CACHE

> 行キャッシュがデータベース内の指定した記憶域に割り当てられないことを指定します。CACHE USING句を指定した場合、NO ROW CACHE句は指定できません。

> 行キャッシュを記憶域に割り当てるか、データベースのデフォルトをオーバーライドする場合は、CACHE USING句を使用して記憶域を変更し、行キャッシュの名前を指定します。各記憶域に対して割り当てることができる行キャッシュは1つのみです。

> ### PAGE FORMAT IS UNIFORM

> ### PAGE FORMAT IS MIXED

> 記憶域のオンディスク構造を指定します。

> - デフォルトはPAGE FORMAT IS UNIFORMです。統一ページ形式の記憶域はnページのグループに分類されるファイルであり、クランプと呼ばれ、nはページ・サイズをバッファ・サイズで分割した数に相当します。バッファ・サイズとページ・サイズはどちらもユーザーが指定する値です。デフォルトでは、バッファ・サイズは6ブロック、ページ・サイズは1024バイト、または2ブロック長になり、クランプは3ページになります。PAGE FORMAT IS UNIFORM引数では、クランプに分割される記憶域ファイルを作成します。一連のクランプが論理領域となり、これには単一表の行または索引のみが含まれます。
>   記憶域内にある表が様々な問合せの対象となるものであれば、統一ページ形式の記憶域は、一般的に最もパフォーマンスが高くなります。

> - PAGE FORMAT IS MIXED引数では、記憶域ファイルの特定ページに、またはその周辺に複数の表の行を配置できる形式で、記憶域が作成されます。これは、データ・ファイルの同一ページに様々な表から関連する行を格納する場合に便利です。このような関連行を取得するために繰り返し問合せの対象となる記憶域については、ページ上の行の混在を慎重に制御すると、混合ページ形式によるI/Oのオーバーヘッドが大幅に削減されます。ただし、混合ページ形式の記憶域では、ページ上の行の混在が記憶域に対する問合せに適していない場合、パフォーマンスが低下します。

> 統一および混合の記憶域の相対的なメリットとデメリットの詳細は、『Oracle Rdb7 Guide to Database Maintenance』を参照してください。

> ### PAGE SIZE IS page-blocks BLOCKS

> 記憶域での各データ・ページのブロック・サイズです。ページ・サイズは512バイト・ブロックで割り当てられます。デフォルトは2ブロック（1024バイト）です。最大行が約950バイトを超える場合は、ページごとにブロックを追加で割り当て、行の断片化を防止します。ページ・サイズをバッファ・サイズより大きく指定すると、エラー・メッセージが返されます。

> ### PERCENT GROWTH IS growth

> 各エクステントの拡張率（%）を指定します。デフォルトの拡張率は20%です。

> ### SNAPSHOT ALLOCATION IS snp-pages PAGES

> スナップショット・ファイルに割り当てられるページ数を指定します。