SQLやOMFを使って表領域を新規作成する

Oracleデータベースを管理する方はDBAとして、表領域を新規作成するシーンは度々あるかと思います。

覚えるべきキーワード
・CREATE TABLESPACE 表領域名 DATAFILE ‘データファイル名’ SIZE サイズ
・EXTENT MANAGEMENT LOCAL
・SEGMENT SPACE MANAGEMENT
・ALTER SYSTEM SET DB_CREATE_FILE_DEST = ‘ディレクトリ名’;

表領域を新規作成するにはEM Expressを使用する場合のほかにSQLを実行する場合があります。SQLで表領域を作成するには表領域名、データファイル名(データファイルはディレクトリも込みで記載します)、表領域サイズを指定します。表領域名temp、データファイル名 /00/app/oracle/oradata/orc1/smp01.dbf、サイズ30Mで作成したい時は以下のSQLになります。

CREATE TABLESPACE 表領域名 DATAFILE ‘データファイル名’ SIZE サイズ

CREATE TABLESPACE temp DATAFILE ‘/00/app/oracle/oradata/orc1/smp01.dbf’ SIZE 30M;

これで作成できます。このSQLが表領域作成の最もシンプルな書き方ですが、オプションを指定して作成することもできます。オプションはEXTENT MANAGEMENT LOCAとSEGMENT SPACE MANAGEMENTの2つです。
EXTENT MANAGEMENT LOCALLは、エクステントサイズを管理するためのローカル管理表領域の指定です。指定できる管理方法はAUTOALLOCATEとUNIFORM SIZE サイズの2つです。

自動的にエクステントの割り当てを管理するにはAUTOALLOCATEを指定します。最小のエクステントサイズは64KBです。表領域名temp、データファイル名 /00/app/oracle/oradata/orc1/smp01.dbf、サイズ30MでEXTENT MANAGEMENT LOCALをAUTOALLOCATEで作成したいSQLは以下です。

EXTENT MANAGEMENT LOCAL AUTOALLOCATEの指定

CREATE TABLESPACE temp DATAFILE ‘/00/app/oracle/oradata/orc1/smp01.dbf’ SIZE 30M EXTENT MANAGEMENT LOCAL AUTOALLOCATE ;

ちなみにEXTENT MANAGEMENT LOCALのデフォルトはAUTOALLOCATEです。

指定したサイズでエクステントサイズを管理するにはUNIFORM SIZE サイズを指定します。表領域名temp、データファイル名 /00/app/oracle/oradata/orc1/smp01.dbf、サイズ30Mでエクステントサイズを3MBで作成したいSQLは以下です。

EXTENT MANAGEMENT LOCAL UNIFORM SIZE サイズの指定

CREATE TABLESPACE temp DATAFILE ‘/00/app/oracle/oradata/orc1/smp01.dbf’ SIZE 30M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 3MB;

UNIFORM SIZEにサイズを指定しない場合はデフォルトで1MBが設定されます。

次にSEGMENT SPACE MANAGEMENTはセグメント領域の管理方法を指定するオプションです。指定できる管理方法はAUTOとMANUALの2つです。

自動でセグメント領域を管理する場合はAUTOを指定します。これはセグメント内の空き領域をビットマップで管理する手法です。表領域名temp、データファイル名 /00/app/oracle/oradata/orc1/smp01.dbf、サイズ30M、EXTENT MANAGEMENT LOCALをAUTOALLOCATEで自動セグメント領域管理を指定したSQLです。

SEGMENT SPACE MANAGEMENT AUTOの指定

CREATE TABLESPACE temp DATAFILE ‘/00/app/oracle/oradata/orc1/smp01.dbf’ SIZE 30M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

手動でセグメント領域を管理する場合はMANUALを指定します。手動セグメント領域管理はセグメント内の空き領域を空きリストで管理します。セグメント領域管理はAUTOの方が圧倒的に便利なので、MANUALを指定するケースは少ないと思います。表領域名temp、データファイル名 /00/app/oracle/oradata/orc1/smp01.dbf、サイズ30M、EXTENT MANAGEMENT LOCALをAUTOALLOCATEで手動セグメント領域管理を指定したSQLです。

SEGMENT SPACE MANAGEMENT MANUALの指定

CREATE TABLESPACE temp DATAFILE ‘/00/app/oracle/oradata/orc1/smp01.dbf’ SIZE 30M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT MANUAL;

ちなみにSEGMENT SPACE MANAGEMENTのデフォルト値はAUTOです。

表領域はOracle Managed Files(OMF)を使って新規作成することもできます。OMFの機能を使えば、OracleのOSファイルはデータベースが自動的に作成してくれるし、管理もしてくれます。OMFを使うためには2つのSQLを実行します。
OMFを使用した表領域SQLの1つ目ではファイルの作成場所を指定します。DB_CREATE_FILE_DEST初期化パラメータでファイルの作成場所を指定します。/00/app/oracle/oradata/orc1をファイルの作成場所に指定すると、以下のSQLになります。

OMFを使用した表領域の作成1/2

(1/2:ファイルの作成場所を指定)
ALTER SYSTEM SET DB_CREATE_FILE_DEST = ‘/00/app/oracle/oradata/orc1’;

これでディレクトリを指定できました。
次に表領域を作成します。表領域名はtmpとします。

OMFを使用した表領域の作成2/2

(2/2:表領域を作成)
CREATE TABLESPACE tmp;

tmpの表領域が作成できました。この方法で作成したデータファイルのデフォルトサイズは100MBで、無制限に自動拡張が可能となっています。なので、tmpは100MBで無制限に自動拡張が可能です。ちなみにファイル名はデータベースが自動的に設定してくれます。
表領域の新規作成にはEM Express、SQL、OMF使用の方法があります。案件の環境に合わせて最適な方法で実行しましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です