ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 


CREATE DATABASE文

データベースを構成するためのデータベース・システム・ファイル、メタデータ定義、ユーザー・データを作成します。CREATE DATABASE文を使用すると、単一SQL文で新規データベースに対してすべてのデータ定義と権限定義を指定できます。(データベースには後で定義を追加することもできます。)適切なパフォーマンスとデータ整合性を保持する方法の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。

CREATE DATABASE文には、高い柔軟性を保つための様々な追加要素があります。CREATE DATABASE文ではその最も単純な形式で、データベース・システム・ファイルを作成し、その名前を指定し、データベースの物理特性を定義します。CREATE DATABASE文の追加要素を使用すると、次を指定することもできます。


環境

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


形式




























引数

ADJUSTABLE LOCK GRANULARITY IS ENABLED

ADJUSTABLE LOCK GRANULARITY IS DISABLED

データベース・システムが自動的に保持するデータベース・リソースでのロック数をできるかぎり最小化する機能を有効にまたは無効にします。デフォルトはENABLEDで、データベースに対するロックはより少なくなります。ただし、データベース・リソースの競合が大きい場合、ロックの自動調整はCPU排出になります。調節可能なロック粒度を無効にすることによって、このようなデータベースでのCPU使用量を抑えるため、より制約の強いロックにできます。

alias

CREATE DATABASE文によって実行される明示的なデータベース宣言の別名を指定します。別名とは、後に続くSQL文に含まれるデータベースを識別するための、データベースを特定するアタッチの名前です。

注意

別名を使用してデータベースにアタッチした場合、そのデータベース内で要素名を修飾するには、その別名を後続の文で使用する必要があります。

データベース・ルート・ファイル・パラメータからFILENAME引数を省略すると、データベース・ルート・ファイルのファイル名としても別名が使用され、現在のデフォルト・ディレクトリ内にルート・ファイルが作成されます。(ALIAS句にディスクまたはディレクトリ仕様を含めている場合は、SQLにより構文エラーが生成されます。)FILENAMEまたはALIAS引数を指定する必要があります。

CREATE DATABASE文のスキーマ要素ではこの別名を使用する必要はありませんが、その他の別名は指定できません。

ALIAS句はオプションです。対話型SQLおよびプリコンパイルされたプログラム内のデフォルトの別名は、RDB$DBHANDLEです。SQLモジュール言語では、デフォルトはモジュール・ヘッダーに指定された別名です。ALIAS句で明示的に指定するか、またはALIAS句を省略してデフォルトの別名を使用すると、そのデータベースがデフォルトのデータベースとして宣言されます。デフォルト・データベースを指定すると、デフォルト・データベースを参照するCREATE DATABASE文の外部の文では別名の使用が不要になります。

デフォルトのデータベースがすでに宣言されており、ALIAS句にデフォルトの別名(またはすでに宣言された任意の別名)を指定する場合、その結果はCREATE DATABASE文を発行する環境によって異なります。

デフォルト・データベースの詳細は、第2.2.1項を参照してください。

ALL AREAS

すべての記憶域の作成と初期化を並行して実行するように指定します。

すべての記憶域は非同期で作成されます。記憶域を多数作成すると、プロセスの割当て制限を超え、データベースの作成に失敗する場合があります。

ALLOCATION IS number-pages

最初にデータベースに割り当てられたデータベースのページ数です。SQLによって自動的に割当てが拡張され、データのロードおよび後続の拡張が処理されます。ページは3グループに割り当てられます。25ページのALLOCATIONには、実際には27ページが割り当てられます。デフォルトは700ページです。大規模なデータベースをロードしている場合、割当てサイズを大きくすると、ファイルの断片化を防止できます。

ALTER TRANSACTION MODES

事前に定義したモードまたはデフォルト・モードを有効なまま残し、指定したモードを有効にします。たとえば、無効化するトランザクション・モードがバッチ更新のみである場合、次の文を使用します。


SQL> CREATE DATABASE FILENAME mf_personnel
cont>   ALTER TRANSACTION MODES (NO BATCH UPDATE);

指定しない場合、デフォルトのトランザクション・モードはALLです。

ASYNC BATCH WRITES ARE ENABLED

ASYNC BATCH WRITES ARE DISABLED

非同期バッチ書込みを有効にするか無効にするかを指定します。

非同期バッチ書込みによって、変更されたデータ・ページのバッチをディスクに非同期で書き込むプロセスが許可されます(バッチ書込み操作の完了を待つ間、プロセスは停止しません)。非同期バッチ書込みによって、データ整合性が失われることなく更新アプリケーションのパフォーマンスが向上します。

デフォルトでは、バッチ書込みが有効です。非同期バッチ書込みを使用する場合の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。

論理名RDM$BIND_ABW_ENABLEDを定義すると、非同期バッチ書込みを有効にできます。

ASYNC PREFETCH IS ENABLED

ASYNC PREFETCH IS DISABLED

Oracle Rdbによって、プロセスが実際にページをリクエストする前に、フェッチによるページのディスクからの読込みを待機する時間を短縮するかどうかを指定します。

プリフェッチによってパフォーマンスが大幅に向上しますが、不適切に使用するとリソースを過度に使用する可能性があります。非同期プリフェッチはデフォルトで有効です。非同期プリフェッチの詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。

論理名RDM$BIND_APF_ENABLEDを定義すると、非同期プリフェッチを有効にできます。

BUFFER SIZE IS buffer-blocks BLOCKS

SQLによってバッファごとに割り当てられるブロック数を指定します。ゼロより大きい符号なし整数を指定する必要があります。デフォルトのバッファ・サイズは、PAGE SIZE値の3倍です(デフォルトのPAGE SIZEが2の場合、6ブロック)。

バッファ・サイズはグローバル・パラメータであり、ページごと(またはバッファごと)のブロック数はページごとに64ブロック未満に制限されます。ページ・サイズは複数ファイルのデータベースの記憶域ごとに異なり、ページ・サイズは各記憶域に格納されるレコードのサイズで決まります。

バッファごとにブロック数を選択する場合は、バッファに収まる概算ページ数を選択します。つまり、複数ファイルのデータベースのすべての記憶域のすべてのページ・サイズで完全に割り切れるバッファ・サイズです。たとえば、記憶域が3つあり、ページ・サイズがそれぞれ2、3および4ブロックの場合、12ブロックのバッファ・サイズを選択するとバッファの使用が最適になります。反対に、バッファ・サイズとして8を選択すると、ページ・サイズが3の記憶域のバッファごとに2ブロックが無駄になります。Oracle Rdbによって、バッファに収まるできるかぎり多数のページ数が読み取られますが、この例ではバッファに3ブロックのページが2つ読み取られ、2つの無駄なブロックが残されます。

CACHE USING row-cache-name

指定した行キャッシュを、データベース内のすべての記憶域のデフォルトとして割り当てます。各記憶域に格納される行は、それらが表データ、セグメント化された文字列データ、または索引ノードなどの特殊名行で構成されているかどうかに関係なく、すべてキャッシュされます。

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


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

CREATE STORAGE AREA句の後にCACHE USING句を指定するか、後でデータベースおよび記憶域を変更して新規の行キャッシュを割り当てることにより、データベースのデフォルトの行キャッシュをオーバーライドできます。各記憶域に対して割り当てることができる行キャッシュは1つのみです。

CACHE USING句もNO ROW CACHE句も指定しない場合、データベースのデフォルトはNO ROW CACHE句です。

CARDINALITY COLLECTION IS ENABLED

CARDINALITY COLLECTION IS DISABLED

オプティマイザがカーディナリティの更新をシステム表内に記録するかどうかを指定します。有効にした場合、表に行が挿入または削除されると、オプティマイザによって表および非一意索引のカーディナリティが収集されます。カーディナリティの更新は、変更が十分に蓄積されている場合のコミット時、または切断時に実行されます。

頻繁に更新される環境では、カーディナリティ更新を無効にするほうが便利な場合があります。この機能を無効にする場合は、RMU Analyze Cardinalityコマンドを使用して手動でカーディナリティを管理する必要があるため、オプティマイザには見積り用に非常に正確な値を指定します。

カーディナリティ収集はデフォルトで有効です。

CARRY OVER LOCKS ARE ENABLED

CARRY OVER LOCKS ARE DISABLED

キャリーオーバー・ロックの最適化を有効または無効にします。デフォルトでは、キャリーオーバー・ロックは有効です。

データベースにアタッチする一方で、プロセスには、アクティブなロック(データベースにアタッチされたロック)およびいくつかのキャリーオーバー・ロック(降格されていない以前のトランザクションで要求されたロック)がある場合があります。現在、キャリーオーバーとしてマークされているロックがトランザクションで必要になる場合、アクティブ・ロックに変更するとロックを再利用できます。ロック・リクエストや降格を実行せず、同じロックをアクティブからキャリーオーバー、キャリーオーバーからアクティブへと何度も変更できます。あるプロセスが同じ領域に繰り返しアクセスする場合、これによってロック・リクエスト回数は大幅に減少します。

キャリーオーバー・ロック最適化の一環として、NOWAITトランザクションによりNOWAITロックが要求、取得、および保持されます。これにより、データベースにアクセスしている他のプロセスに対して、NOWAITトランザクションが存在し、そのためOracle Rdbによってすべてのキャリーオーバー・ロックが解除されるということが通知されます。NOWAITトランザクションが実行時に明らかに遅い場合は、ALTER DATABASE文またはCREATE DATABASE文にCARRY OVER LOCKS ARE DISABLEDを指定できます。

この機能は、オンライン・データベース変更として使用できます。

CHECKPOINT TIMED EVERY n SECONDS

row-cache-options句に対し、行キャッシュ・サーバー(RCS)・プロセスによってチェックポイントが実行され、行キャッシュの内容がディスクに戻される頻度を指定します。RCSプロセスでは、FAST COMMIT句のチェックポイント頻度オプションは使用されません。

RCSチェックポイントの実行頻度は、ノードの失敗の後のリカバリ操作中に、読み取る必要のある.aijファイルの数を決定する上で重要です。また、データベースに対してチェックポイントを実行する行キャッシュについて、マークされたレコードがデータベースにフラッシュ・バックされる頻度にも影響を及ぼします。デフォルトは15分(900秒)ごとです。

CHECKPOINT UPDATED ROWS TO BACKING FILE

CHECKPOINT UPDATED ROWS TO DATABASE

CHECKPOINT ALL ROWS TO BACKING FILE

すべての行キャッシュのチェックポイント操作中にデフォルトのソースおよびターゲットを指定します。ALL ROWSが指定された場合、各チェックポイント操作中に書き込まれるソース・レコードは行キャッシュの変更済および未変更の両方の行です。UPDATED ROWSが指定された場合、行キャッシュの変更済の行に対してのみ、毎回チェックポイントが実行されます。

チェックポイント操作のターゲットがBACKING FILEである場合、RCSプロセスによってソース行キャッシュ・エントリがバッキング(.rdc)・ファイルに書き込まれます。バッキング・ファイルの作成には、行キャッシュLOCATION句、ALLOCATION句およびEXTENT句が使用されます。ノード障害からのリカバリ時に、データベース・リカバリ・プロセスにより行キャッシュをバッキング・ファイルにある行からメモリー内に再移入できます。

ターゲットがDATABASEである場合は、更新済の行キャッシュ・エントリがデータベースに書き込まれます。行キャッシュLOCATION句、ALLOCATION句およびEXTENT句は無視されます。ノード障害からのリカバリ時に、データベース・リカバリ・プロセスでは行キャッシュのコンテンツにデータが存在しません。このため、行キャッシュをメモリー内に再移入できません。

CREATE CACHE句、ADD CACHE句またはALTER CACHE句のLOCATION句が、このデータベース・レベルのCHECKPOINT句より優先されます。

CHECKSUM CALCULATION IS ENABLED

CHECKSUM CALCULATION IS DISABLED

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

デフォルトはENABLEDです。

注意

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

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

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

注意

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

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

CLEAN BUFFER COUNT IS buffer-count BUFFERS

すぐに再使用が可能な状態が保持されるバッファの数を指定します。

Oracle Rdbでは、置換のためのバッファの数は、プロセスのバッファ最低使用頻度キューの最後に保持されます。

デフォルトは5バッファです。最小値は1、最大値はバッファ・プール・サイズと同じ大きさまで指定できます。

論理名RDM$BIND_CLEAN_BUF_CNTを定義すると、クリーン・バッファの数をオーバーライドできます。値の設定の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。

COLLATING SEQUENCE collation-name

データベースのCHAR列およびVARCHAR列すべてに使用されるデフォルトの照合順番を指定します。後続のCREATE DOMAIN文で照合順番を指定しない場合は、デフォルトの照合順番が使用されます。

照合名はユーザーが選択します。この名前は、このデータベースでの操作用に、この照合順番を参照しているすべてのCOLLATING SEQUENCE句で使用する必要があります。

COMMENT IS 'string'

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

COUNT IS n

ロックの管理に使用されるページ・ロック・ツリーのレベル数を指定します。たとえば、COUNT IS 3を指定した場合は、ファンアウト要素は(10、100、1000)です。Oracle Rdbにより範囲が1000ページにロックされ、必要に応じて100、10、1ページと下方に調節されます。

COUNT IS句が省略された場合、デフォルトは3です。nの値には、1〜8の範囲の値が可能です。

create-cache-clause

詳細は、「CREATE CACHE句」を参照してください。

create-catalog-statement

詳細は、「CREATE CATALOG文」を参照してください。

CREATE DATABASE文でCREATE CATALOG文を指定する場合は、最初に同じCREATE DATABASE文でMULTISCHEMA IS ON句を指定します。

CREATE CATALOG文は即時にコミットされ、ロールバックできません。CREATE CATALOG文を指定するには、次の条件がTRUEである必要があります。

マルチスキーマに対するデータベース有効化の詳細は、第2.2.11項を参照してください。

create-collating-sequence-statement

詳細は、「CREATE COLLATING SEQUENCE文」を参照してください。

CREATE DATABASE文に埋め込まれたCREATE DOMAIN文の照合順番を指定する場合は、最初に同じCREATE DATABASE文の中でCREATE COLLATING SEQUENCE文を指定する必要があります。

create-domain-statement

詳細は、「CREATE DOMAIN文」を参照してください。

CREATE DATABASE文にCREATE DOMAIN文を埋め込む場合は、FROM path-name句は使用できません。ただし、CREATE DATABASE文の後には別のCREATE DOMAIN文を発行できます。CREATE DATABASE文では、ドメインを直接記述することもできます。

埋込みCREATE DOMAIN文の照合順番を指定する場合は、最初に同じCREATE DATABASE文の中でCREATE COLLATING SEQUENCE文を指定する必要があります。

create-function-statement

CREATE FUNCTION文。詳細は、「CREATE ROUTINE文」を参照してください。

create-index-statement

詳細は、「CREATE INDEX文」を参照してください。

create-module-statement

詳細は、「CREATE MODULE文」を参照してください。

create-procedure-statement

CREATE PROCEDURE文。詳細は、「CREATE ROUTINE文」を参照してください。

create-schema-statement

詳細は、「CREATE SCHEMA文」を参照してください。

作成するスキーマは、そのスキーマを含むカタログとデータベースと別名が同一であるか、デフォルトの別名をカタログおよびデータベースで共有している必要があります。

create-sequence-statement

詳細は、「CREATE SEQUENCE文」を参照してください。

create-storage-area-clause

詳細は、「CREATE STORAGE AREA句」を参照してください。

create-storage-map-statement

詳細は、「CREATE STORAGE MAP文」を参照してください。

create-table-statement

詳細は、「CREATE TABLE文」を参照してください。

CREATE DATABASE文にCREATE TABLE文を埋め込む場合は、FROM path-name句は使用できません。ただし、CREATE DATABASE文の後には別のCREATE TABLE文を発行できます。CREATE DATABASE文では、表を直接記述することもできます。

CREATE DATABASE文の中のCREATE TABLE文は、作成前のドメインを示すこともできます。ただし、同一のCREATE DATABASE文にドメインに対するCREATE DOMAIN文が存在する必要があります。

create-trigger-statement

詳細は、「CREATE TRIGGER文」を参照してください。

create-view-statement

詳細は、「CREATE VIEW文」を参照してください。

database-element

データベース要素はCREATE STORAGE AREA句、(CREATE DOMAIN ... FROM path-nameおよびCREATE TABLE ... FROM path-nameを除く)CREATE文のいずれか、またはGRANT文です。

DBKEY SCOPE IS ATTACH

DBKEY SCOPE IS TRANSACTION

削除された行のデータベース・キーをSQLでいつ再使用できるかを制御します。この設定はデータベース・ルート・ファイル・パラメータではなく、CREATE DATABASE文によって実行される暗黙的データベース・アタッチの特性です。したがって、CREATE DATABASE文のDBKEY SCOPE句は、その文を入力したユーザーのセッションの間のみ実効性を持ちます。