SQL 解説書

CREATE TABLESPACE

CREATE TABLESPACE ステートメントは、データベースに新しい表スペースを作成し、 その表スペースにコンテナーを割り当て、 その表スペース定義と属性をカタログに記録します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、 あるいは対話式に使用することができます。 このステートメントは、動的に準備可能な実行可能ステートメントです。 しかし、バインド・オプション DYNAMICRULES BIND を適用する場合、 ステートメントを動的に準備することはできません (SQLSTATE 42509)。

許可

このステートメントの許可 ID には、SYSCTRL 権限または SYSADM 権限がなければなりません。

構文

             .-REGULAR------------------.
>>-CREATE----+--------------------------+----------------------->
             +-LONG---------------------+
             | .-SYSTEM--.              |
             '-+---------+---TEMPORARY--'
               '-USER----'
 
>----TABLESPACE--tablespace-name-------------------------------->
 
>-----+-----------------------------------+--------------------->
      |    .-NODEGROUP-.                  |
      '-IN-+-----------+--nodegroup-name--'
 
      .-PAGESIZE--4096------------.
>-----+---------------------------+----------------------------->
      '-PAGESIZE--integer--+----+-'
                           '-K--'
 
>----MANAGED BY--+-SYSTEM--|  system-containers |------+-------->
                 '-DATABASE--|  database-containers |--'
 
>-----+----------------------------------+---------------------->
      '-EXTENTSIZE--+-number-of-pages-+--'
                    '-integer--+-K-+--'
                               +-M-+
                               '-G-'
 
>-----+------------------------------------+-------------------->
      '-PREFETCHSIZE--+-number-of-pages-+--'
                      '-integer--+-K-+--'
                                 +-M-+
                                 '-G-'
 
>-----+------------------------------+-------------------------->
      '-BUFFERPOOL--bufferpool-name--'
 
>-----+---------------------------------------+----------------->
      |           .-24.1-------------------.  |
      '-OVERHEAD--+-number-of-milliseconds-+--'
 
>-----+-------------------------------------------+------------->
      |               .-0.9--------------------.  |
      '-TRANSFERRATE--+-number-of-milliseconds-+--'
 
>-----+----------------------------------+---------------------><
      '-DROPPED TABLE RECOVERY--+-ON--+--'
                                '-OFF-'
 
 
 system-containers
 
   .----------------------------------------------------------------------------.
   |            .-,-------------------------.                                   |
   V            V                           |                                   |
|-----USING--(-----'--container-string--'---+---)----+-----------------------+--+->
                                                     '-|  on-nodes-clause |--'
 
>---------------------------------------------------------------|
 
 database-containers
 
    .-----------------------------------------------------------.
    V                                                           |
|------USING--|  container-clause |--+-----------------------+--+->
                                     '-|  on-nodes-clause |--'
 
>---------------------------------------------------------------|
 
 container-clause
 
       .-,------------------------------------------------------------.
       V                                                              |
|---(------+-FILE---+--'--container-string--'----+-number-of-pages-+--+---)-->
           '-DEVICE-'                            '-integer--+-K-+--'
                                                            +-M-+
                                                            '-G-'
 
>---------------------------------------------------------------|
 
 on-nodes-clause
 
|---ON----+-NODE--+--(------------------------------------------>
          '-NODES-'
 
      .-,--------------------------------------.
      V                                        |
>--------node-number1--+--------------------+--+--)-------------|
                       '-TO--node-number2---'
 

説明

REGULAR
一時表を除くすべてのデータを保管します。

LONG
長形式または LOB の表の列を保管します。 また、構造タイプ列を保管することもできます。 表スペースは DMS 表スペースでなければなりません。

SYSTEM TEMPORARY
一時表 (データベース・マネージャーがソートや結合などの操作を実行するのに使用する作業域) を保管します。 キーワード SYSTEM は任意指定です。 一時表はこのような表スペースにのみ保管することができるので、データベースには、 常に少なくとも 1 つの SYSTEM TEMPORARY 表スペースがなければならない点に注意してください。 一時表スペースは、データベースの作成時に自動的に作成されます。

詳細については、コマンド解説書 の CREATE DATABASE を参照してください。

USER TEMPORARY
宣言されたグローバル一時表を保管します。 データベースの作成時にユーザー一時表スペースは存在しないことに注意してください。 宣言された一時表を定義できるよう、 該当する USE 特権を使って少なくとも 1 つのユーザー一時表スペースを作成しなければなりません。

tablespace-name
表スペースの名前を指定します。 これは、1 つの部分からなる名前です。 これは、SQL 識別子です (通常識別子または区切り識別子)。 tablespace-name (表スペース名) は、 すでにカタログに存在している表スペースを指定するものであってはなりません (SQLSTATE 42710)。 tablespace-name を文字 SYS で始めることはできません (SQLSTATE 42939)。

IN NODEGROUP nodegroup-name
表スペースのノードグループを指定します。 該当のノードグループは存在していなければなりません。 SYSTEM TEMPORARY 表スペースの作成の際に指定できるノードグループは、IBMTEMPGROUP だけです。 NODEGROUP キーワードは任意選択です。

ノードグループを指定しないと、デフォルトのノードグループ (IBMDEFAULTGROUP) が、 REGULAR、LONG、および USER TEMPORARY 表スペースに使用されます。 SYSTEM TEMPORARY 表スペースには、デフォルト・ノードグループ IBMTEMPGROUP が使われます。

PAGESIZE integer [K]
表スペースに使用するページのサイズを定義します。 接尾部 K を持たない integer の有効値は、 4 096 または 8 192、16 384、 または 32 768 です。 接尾部 K を持つ integer の有効値は、4 または 8、16、または 32 です。 ページ・サイズがこれらのいずれの値にも該当しない場合 (SQLSTATE 428DE)、 あるいはページ・サイズが表スペースと関連付けられたバッファー・プールのページ・サイズと 同じではない場合 (SQLSTATE 428CB) には、エラーが起こります。 デフォルト値は 4 096 バイト (4K) ページです。 integer と K の間には、任意の数のスペースを使用できます (スペースなしでも可)。

MANAGED BY SYSTEM
表スペースを、システム管理スペース (SMS) 表スペースとして指定します。

system-containers
SMS 表スペースに対するコンテナーを指定します。

USING ('container-string',...)
SMS 表スペースに対して、表スペースに属し、 表スペースのデータの保管先となる 1 つまたは複数のコンテナーを指定します。 コンテナー・ストリング (container-string) の長さは、 240 バイトを超えてはなりません。

container-string は、 絶対ディレクトリー名または相対ディレクトリー名にすることができます。 ディレクトリー名が絶対ではない場合は、 データベース・ディレクトリーからの相対ディレクトリーになります。 ディレクトリー名の構成要素のいずれかが存在しない場合は、 それがデータベース・マネージャーによって作成されます。 表スペースを除去すると、 データベース・マネージャーによって作成されたすべての構成要素が削除されます。 コンテナー・ストリングで指定されたディレクトリーが存在する場合、 そのディレクトリーにはファイルやサブディレクトリーがあってはなりません (SQLSTATE 428B2)。

container-string の形式は、オペレーティング・システムによって異なります。 コンテナーは、オペレーティング・システムの通常の方法で指定されます。 たとえば、OS/2、Windows 95 および Windows NT のディレクトリー・パスはドライブ文字と ":" から始まり、 UNIX 系システムでは "/" から始まります。

リモート資源 (OS/2、Windows 95 および Windows NT の LAN リダイレクト・ドライブや、 AIX の NFS マウント・ファイル・システム) はサポートされません。

on-nodes-clause
区分データベースにおいて、コンテナーを作成する区分を指定します。 この文節を指定しない場合、 他のどの on-nodes-clause にも明示的に指定されていないノードグループ内の区分でコンテナーが作成されます。 ノードグループ IBMTEMPGROUP で定義されている SYSTEM TEMPORARY 表スペースについては、 on-nodes-clause を指定しないと、 データベースに追加されたすべての新しい区分またはノードでもコンテナーが作成されます。 この文節の指定の詳細については、*** ページを参照してください。

MANAGED BY DATABASE
表スペースを、データベース管理スペース (DMS) 表スペースとして指定します。

database-containers
DMS 表スペースに対するコンテナーを指定します。

USING
container-clause を導きます。

container-clause
DMS 表スペースに対してコンテナーを指定します。

(FILE|DEVICE 'container-string' number-of-pages,...)
DMS 表スペースに対して、表スペースに属し、 表スペースのデータの保管先となる 1 つまたは複数のコンテナーを指定します。 コンテナーのタイプ (FILE または DEVICE) とそのサイズ (PAGESIZE ページの数) を指定します。 このサイズは整数値としても指定でき、 その後に K (K バイトの場合)、M (M バイトの場合)、または G (G バイトの場合) を付けます。 このように指定した場合、ページ・サイズで分割されたバイト数のフロアは、 コンテナーのページ数を判別するために使用します。 FILE と DEVICE のコンテナーを混合して指定できます。 コンテナー・ストリング (container-string) の長さは、 254 バイトを超えてはなりません。

FILE コンテナーの場合、container-string は、 絶対ファイル名または相対ファイル名でなければなりません。 絶対ファイル名以外のファイル名は、 データベース・ディレクトリーからの相対パス名になります。 ディレクトリー名の構成要素のいずれかが存在しない場合は、 それがデータベース・マネージャーによって作成されます。 ファイルが存在しない場合、データベース・マネージャーによってそのファイルが作成され、 指定されたサイズに初期化されます。 表スペースを除去すると、 データベース・マネージャーによって作成されたすべての構成要素が削除されます。

注:ファイルが存在する場合は上書きされ、 指定したサイズより小さい場合には拡張されます。 指定したサイズよりもファイルの方が大きくても、ファイルは切り捨てられません。

DEVICE コンテナーの場合、container-string は装置名でなければなりません。 その装置はすでに存在していなければなりません。

すべてのコンテナーは、すべてのデータベースを通して固有でなければなりません。 1 つのコンテナーは、1 つの表スペースにのみ属することができます。 コンテナーごとに異なるサイズにすることができますが、 すべてのコンテナーが同じサイズの場合にパフォーマンスは最高になります。 container-string の正しい形式は、 オペレーティング・システムによって異なります。 コンテナーは、オペレーティング・システムの通常の方法で指定されます。 コンテナーの宣言の詳細については、 管理の手引き を参照してください。

リモート資源 (OS/2、Windows 95 および Windows NT の LAN リダイレクト・ドライブや、 AIX の NFS マウント・ファイル・システム) はサポートされません。

on-nodes-clause
区分データベースにおいて、コンテナーを作成する区分を指定します。

この文節を指定しない場合、 他のどの on-nodes-clause にも明示的に指定されていないノードグループ内の区分でコンテナーが作成されます。 ノードグループ IBMTEMPGROUP で定義されている SYSTEM TEMPORARY 表スペースについては、 on-nodes-clause を指定しないと、 データベースに追加されたすべての新しい区分でもコンテナーが作成されます。 この文節の指定の詳細については、*** ページを参照してください。

on-nodes-clause
区分データベースにおいて、コンテナーを作成する区分を指定します。

ON NODES
特定の区分を指定することを示すキーワードです。 NODE は NODES の同義語です。

node-number1
特定の区分 (またはノード) 番号を指定します。

TO node-number2
区分 (またはノード) 番号の範囲を指定します。 node-number2 の値は、 node-number1 の値よりも大きいか等しい値でなければなりません (SQLSTATE 428A9)。 この表スペースのノードグループにノードが組み込まれると、コンテナーが作成される区分に、 指定した区分番号の範囲 (指定した区分番号を含む) のすべての区分が組み込まれます。

番号によって指定する区分と、区分の範囲内のすべての区分 (またはノード) は、 表スペースを定義するノードグループに存在している必要があります (SQLSTATE 42729)。 ある区分番号を明示的に、または範囲の中で指定できるのは、 このステートメントのただ 1 つの on-nodes-clause の中だけです (SQLSTATE 42613)。

EXTENTSIZE number-of-pages
次のコンテナーに移る前にコンテナーに書き込まれる PAGESIZE ページの数を指定します。 このエクステント・サイズ値は整数値としても指定でき、 その後に K (K バイトの場合)、M (M バイトの場合)、または G (G バイトの場合) を付けます。 このように指定した場合、ページ・サイズで分割されたバイト数のフロアは、 エクステント・サイズのページ値の数を判別するために使用します。 データが保管されていくにつれて、 データベース・マネージャーはコンテナー間を繰り返し循環します。

デフォルト値は DFT_EXTENT_SZ 構成パラメーターによって指定されます。

PREFETCHSIZE number-of-pages
データの事前取り出しの実行中に、 表スペースから読み取られる PAGESIZE ページの数を指定します。 この事前取り出しサイズ値は整数値としても指定でき、 その後に K (K バイトの場合)、M (M バイトの場合)、または G (G バイトの場合) を付けます。 このように指定した場合、ページ・サイズで分割されたバイト数のフロアは、 事前取り出しサイズのページ値の数を判別するために使用します。 事前取り出しでは、照会に必要なデータがその照会で参照される前に読み取られるため、 照会では入出力の実行を待たずにすみます。

デフォルト値は DFT_PREFETCH_SZ 構成パラメーターによって指定されます。 (この構成パラメーターは、他の構成パラメーターと同様に、 管理の手引き で詳しく説明されています。)

BUFFERPOOL bufferpool-name
この表スペースの表に対して使用するバッファー・プールの名前を指定します。 バッファー・プールは存在している必要があります (SQLSTATE 42704)。 これを指定しない場合、デフォルトのバッファー・プール (IBMDEFAULTBP) が使用されます。 バッファー・プールのページ・サイズは、 表スペースに指定された (またはデフォルト指定された) ページ・サイズと 一致していなければなりません (SQLSTATE 428CB)。 バッファー・プールに対して、 この表スペースのノードグループを定義する必要があります (SQLSTATE 42735)。

OVERHEAD number-of-milliseconds
number-of-milliseconds (ミリ秒数) は、 入出力制御装置のオーバーヘッドとディスク・シーク待ち時間を ミリ秒単位で指定する数値リテラルです (整数、10 進数、または浮動小数点数)。 この数値がすべてのコンテナーで同一でない場合、 それは表スペースに属するすべてのコンテナーの平均でなければなりません。 この値は、照会の最適化の過程で入出力コストを判別するのに使用されます。

TRANSFERRATE number-of-milliseconds
number-of-milliseconds は、 1 個のページをメモリーに読み込むための時間を ミリ秒単位で指定する数値リテラルです (整数、10 進数、浮動小数点数)。 この数値がすべてのコンテナーで同一でない場合、 それは表スペースに属するすべてのコンテナーの平均でなければなりません。 この値は、照会の最適化の過程で入出力コストを判別するのに使用されます。

DROPPED TABLE RECOVERY
ROLLFORWARD コマンドの RECOVER TABLE ON オプションを使えば、 指定した表スペースで除去された表を回復できる場合があります。 この文節は、REGULAR 表スペースにのみ指定できます (SQLSTATE 42613)。 除去後の表の回復について詳しくは、管理の手引きを参照してください。

例 1: UNIX 系システムで、それぞれ 10 000 の 4K ページの 3 つの装置を使用する 通常の DMS 表スペースを作成します。 それらの入出力特性も指定します。

   CREATE TABLESPACE PAYROLL
      MANAGED BY DATABASE
      USING (DEVICE'/dev/rhdisk6' 10000,
         DEVICE '/dev/rhdisk7' 10000,
         DEVICE '/dev/rhdisk8' 10000)
      OVERHEAD 24.1
      TRANSFERRATE 0.9

例 2: 3 つの別個のドライブの 3 つのディレクトリーを使用し、 エクステント・サイズを 64 ページ、事前取り出しサイズを 32 ページに指定して、 OS/2 または Windows NT で通常の SMS 表スペースを作成します。

   CREATE TABLESPACE ACCOUNTING
      MANAGED BY SYSTEM
      USING ('d:\acc_tbsp', 'e:\acc_tbsp', 'f:\acc_tbsp')
      EXTENTSIZE 64
      PREFETCHSIZE 32

例 3: それぞれ 50,000 ページの 2 つのファイル、 および 256 ページのエクステント・サイズを使用して、 UNIX で一時 DMS 表スペースを作成します。

   CREATE TEMPORARY TABLESPACE TEMPSPACE2
      MANAGED BY DATABASE
      USING (FILE '/tmp/tempspace2.f1' 50000,
      FILE '/tmp/tempspace2.f2' 50000)
      EXTENTSIZE 256

例 4: Unix の区分データベースで、 ノード・グループ ODDNODEGROUP (ノード 1、3、5) に対して DMS 表スペースを作成します。 すべての区分 (またはノード) で、 装置 /dev/rhdisk0 の 10 000 個の 4K ページを使用します。 また、それぞれの区分に、40 000 個の 4K ページがある区分固有の装置を指定します。

   CREATE TABLESPACE PLANS
      MANAGED BY DATABASE
      USING (DEVICE '/dev/rhdisk0' 10000, DEVICE '/dev/rn1hd01' 40000)
      ON NODE (1)
      USING (DEVICE '/dev/rhdisk0' 10000, DEVICE '/dev/rn3hd03' 40000)
      ON NODE (3)
      USING (DEVICE '/dev/rhdisk0' 10000, DEVICE '/dev/rn5hd05' 40000)
      ON NODE (5)


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]