[OracleDB] 表領域作成SQL「create tablespace」文とポイントを紹介
Oracle Databaseの表領域 の作成**** SQLと作成時のポイントを紹介します。
単純な作成SQLは各種メディアやブログで紹介されていますが、
この記事では表領域を操作する時の重要なポイント も合わせて紹介します。
何も考えなくて表領域は作成できますがこの記事を読んで最適な表領域を作成してください。
この記事の内容
- 表領域の作成SQLの基本構文を紹介
- 表領域のエクステント管理・セグメント管理の推奨値は?
- その他表領域作成時に指定するパラメータは?
表領域の作成SQL:create tablespace
まずは表領域の作成のSQLを紹介したいと思います。
create tablespace文は、表領域を作成するコマンドになります。
表領域作成後に変更ができないパラメータが多く存在するため作成SQLを間違えないようにしましょう。
create tablespace <表領域名>
datafile '<データファイル名>' size <データファイルのサイズ>;
下がサンプルSQLになります。
create tablespace TESTTBS
datafile '/u01/app/oracle/oradata/orcl/testtbs001.dbf' size 10m;
表領域作成時には接尾語に番号を振る ことをオススメします。
これはデータファイルを追加する時にファイル番号を振って管理しやすくするため です。
エクステント管理方式とエクステントサイズを指定:extent management
特別な理由がない限り、「ローカル管理方式の** UNIFORM ALLOCATE**」を指定します。
エクステント管理方式は2つ選択することができますが、スタンダードの「ローカル管理方式 」を指定しましょう。
「ディクショナリ管理方式 」も指定することができますが古い管理方式であるため特に選択する必要がありません。
エクステントサイズ ですが、「UNIFORM ALLOCATE 」で均一に指定することをオススメします。
「AUTO ALLOCATE 」で自動サイズ指定もできますが、エクステントが断片化してしまいパフォーマンスが低下化する原因となります。
create tablespace <表領域名>
datafile '<データファイル名>' size <データファイルのサイズ>
extent management local uniform size <UNIFORMのサイズ>;
下がサンプルSQLになります。
create tablespace TESTTBS
datafile '/u01/app/oracle/oradata/orcl/testtbs001.dbf' size 10m
extent management local uniform size 1m;
セグメント領域管理方式を指定:segment space management
セグメント領域の管理方式も表領域作成時に指定します。
セグメント領域の管理方式は必ず「AUTO 」を設定しましょう。
「MANUAL 」も指定できますが、セグメント内の空きリストを使用してセグメントを管理するため非常に非効率になります。
create tablespace <表領域名>
datafile '<データファイル名>' size <データファイルのサイズ>
下がサンプルSQLになります。
create tablespace TESTTBS
datafile '/u01/app/oracle/oradata/orcl/testtbs001.dbf' size 10m
segment space management auto;
データファイルの自動拡張:autoextend on next XXX maxsize XXX
データファイルの自動拡張を指定することでファイルサイズが急に大きくなった時でもエラーを回避できます。
拡張させるサイズは、小さすぎると何度もデータファイルが拡張されます し、
サイズが大きすぎると拡張時に待機が発生 します。
なので予め余裕値を十分に持ってデータファイルを作成しておくこと をオススメします。
create tablespace <表領域名>
datafile '<データファイル名>' size <データファイルのサイズ>
autoextend on next <拡張させるサイズ> maxsize <最大データファイルサイズ>;
下がサンプルSQLになります。
create tablespace TESTTBS
datafile '/u01/app/oracle/oradata/orcl/testtbs001.dbf' size 10m
autoextend on next 1024k maxsize 1G;
BIGFILEのデータファイルを指定:bigfile
昨今のデータの大容量化に伴い、従来のSMALLFILE(最大32GB)よりも大きいBIGFILE を指定できるようになりました。
BIGFILEはブロックサイズが8KBの時は128TBまでデータファイルを使用することができます。
なお何も指定しないとデフォルトでSMALLFILE が作成されます。
create bigfile tablespace <表領域名>
datafile '<データファイル名>' size <データファイルのサイズ>;
下がサンプルSQLになります。
create bigfile tablespace TESTTBS
datafile '/u01/app/oracle/oradata/orcl/testtbs001.dbf' size 10m
[st-mybox title=本記事のまとめ fontawesome=fa-clipboard-check color=#f2a60e bordercolor=#f2a60e bgcolor=#ffffff borderwidth=2 borderradius=5 titleweight=bold\] - create tablespace文で表領域を作成する - エクステント管理方式は「ローカル管理方式でUNIFORMでサイズ均一化」させることがオススメ - セグメント領域の管理方式は「AUTO」と設定すること [/st-mybox]
参考:しばちょう先生の試して納得!DBAへの道 第7回 表領域の管理方法を理解