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---'
説明
詳細については、コマンド解説書 の CREATE DATABASE を参照してください。
ノードグループを指定しないと、デフォルトのノードグループ (IBMDEFAULTGROUP) が、 REGULAR、LONG、および USER TEMPORARY 表スペースに使用されます。 SYSTEM TEMPORARY 表スペースには、デフォルト・ノードグループ IBMTEMPGROUP が使われます。
各 container-string は、 絶対ディレクトリー名または相対ディレクトリー名にすることができます。 ディレクトリー名が絶対ではない場合は、 データベース・ディレクトリーからの相対ディレクトリーになります。 ディレクトリー名の構成要素のいずれかが存在しない場合は、 それがデータベース・マネージャーによって作成されます。 表スペースを除去すると、 データベース・マネージャーによって作成されたすべての構成要素が削除されます。 コンテナー・ストリングで指定されたディレクトリーが存在する場合、 そのディレクトリーにはファイルやサブディレクトリーがあってはなりません (SQLSTATE 428B2)。
container-string の形式は、オペレーティング・システムによって異なります。 コンテナーは、オペレーティング・システムの通常の方法で指定されます。 たとえば、OS/2、Windows 95 および Windows NT のディレクトリー・パスはドライブ文字と ":" から始まり、 UNIX 系システムでは "/" から始まります。
リモート資源 (OS/2、Windows 95 および Windows NT の LAN リダイレクト・ドライブや、 AIX の NFS マウント・ファイル・システム) はサポートされません。
FILE コンテナーの場合、container-string は、 絶対ファイル名または相対ファイル名でなければなりません。 絶対ファイル名以外のファイル名は、 データベース・ディレクトリーからの相対パス名になります。 ディレクトリー名の構成要素のいずれかが存在しない場合は、 それがデータベース・マネージャーによって作成されます。 ファイルが存在しない場合、データベース・マネージャーによってそのファイルが作成され、 指定されたサイズに初期化されます。 表スペースを除去すると、 データベース・マネージャーによって作成されたすべての構成要素が削除されます。
注: | ファイルが存在する場合は上書きされ、 指定したサイズより小さい場合には拡張されます。 指定したサイズよりもファイルの方が大きくても、ファイルは切り捨てられません。 |
DEVICE コンテナーの場合、container-string は装置名でなければなりません。 その装置はすでに存在していなければなりません。
すべてのコンテナーは、すべてのデータベースを通して固有でなければなりません。 1 つのコンテナーは、1 つの表スペースにのみ属することができます。 コンテナーごとに異なるサイズにすることができますが、 すべてのコンテナーが同じサイズの場合にパフォーマンスは最高になります。 container-string の正しい形式は、 オペレーティング・システムによって異なります。 コンテナーは、オペレーティング・システムの通常の方法で指定されます。 コンテナーの宣言の詳細については、 管理の手引き を参照してください。
リモート資源 (OS/2、Windows 95 および Windows NT の LAN リダイレクト・ドライブや、 AIX の NFS マウント・ファイル・システム) はサポートされません。
この文節を指定しない場合、 他のどの on-nodes-clause にも明示的に指定されていないノードグループ内の区分でコンテナーが作成されます。 ノードグループ IBMTEMPGROUP で定義されている SYSTEM TEMPORARY 表スペースについては、 on-nodes-clause を指定しないと、 データベースに追加されたすべての新しい区分でもコンテナーが作成されます。 この文節の指定の詳細については、*** ページを参照してください。
番号によって指定する区分と、区分の範囲内のすべての区分 (またはノード) は、 表スペースを定義するノードグループに存在している必要があります (SQLSTATE 42729)。 ある区分番号を明示的に、または範囲の中で指定できるのは、 このステートメントのただ 1 つの on-nodes-clause の中だけです (SQLSTATE 42613)。
デフォルト値は DFT_EXTENT_SZ 構成パラメーターによって指定されます。
デフォルト値は DFT_PREFETCH_SZ 構成パラメーターによって指定されます。 (この構成パラメーターは、他の構成パラメーターと同様に、 管理の手引き で詳しく説明されています。)
注
ノード式を示すには、 引き数 " $N" ([ブランク]$N) を使用します。 引き数は必ずコンテナー・ストリングの末尾に指定し、以下のいずれかの形式でのみ使用できます。 以下の表では、ノード番号を 5 とします。
構文 | 例 | 値 | ||
---|---|---|---|---|
[blank]$N | " $N" | 5 | ||
[blank]$N+[number] | " $N+1011" | 1016 | ||
[blank]$N%[number] | " $N%3" | 2 | ||
[blank]$N+[number]%[number] | " $N+12%13" | 4 | ||
[blank]$N%[number]+[number] | " $N%3+20" | 22 | ||
|
以下に、いくつかの例を示します。
例 1:
CREATE TABLESPACE TS1 MANAGED BY DATABASE USING (device '/dev/rcont $N' 20000)
2 ノード・システムでは、以下のようなコンテナーが使用されます。
/dev/rcont0 - on NODE 0 /dev/rcont1 - on NODE 1
例 2:
CREATE TABLESPACE TS2 MANAGED BY DATABASE USING (file '/DB2/containers/TS2/container $N+100' 10000)
4 ノード・システムでは、次のようなコンテナーが作成されます。
/DB2/containers/TS2/container100 - on NODE 0 /DB2/containers/TS2/container101 - on NODE 1 /DB2/containers/TS2/container102 - on NODE 2 /DB2/containers/TS2/container103 - on NODE 3
例 3:
CREATE TABLESPACE TS3 MANAGED BY SYSTEM USING ('/TS3/cont $N%2','/TS3/cont $N%2+2')
2 ノード・システムでは、以下のようなコンテナーが作成されます。
/TS3/cont0 - On NODE 0 /TS3/cont2 - On NODE 0 /TS3/cont1 - On NODE 1 /TS3/cont3 - On NODE 1
例
例 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)