デフォルトはENABLED IMMEDIATEで、これにより読取り/書込みトランザクションでは、読取り専用トランザクションがアクティブかどうかにかかわらず、変更した行のコピーがスナップショット・ファイルに書き込まれます。
ENABLED DEFERREDオプションを指定すると、読取り/書込みトランザクションにおいて(読取り専用トランザクションがアクティブでないかぎり)変更した行のコピーのスナップショット・ファイルへの書込みが回避できます。この方法でスナップショットへの書込みを遅延することにより、読取り/書込みトランザクションのパフォーマンスが向上します。ただし、アクティブな読取り/書込みトランザクションの開始より後に開始される読取り専用トランザクションは、すべてのアクティブな読取り/書込みユーザーがそれらのトランザクションを完了するまで待機する必要があります。
エクステントの制御が単純な場合は、ページ数を指定します。複数データベースをより厳密に制御するには、かわりにMINIMUM、MAXIMUMおよびPERCENT GROWTHのエクステント・オプションを使用します。
MINIMUM、MAXIMUM、およびPERCENT GROWTHパラメータを使用する場合は、それらを丸カッコで囲む必要があります。
複数ファイルのデータベースでは、CREATE DATABASE文が、独自のSNAPSHOT FILENAME句を含むCREATE STORAGE AREA RDB$SYSTEM句を含んでいる場合を除き、RDB$SYSTEM記憶域スナップショット・ファイルにファイル仕様が使用されます。
ファイル仕様には、.snp以外のスナップショット・ファイル仕様は指定しないでください。Oracle Rdbでは、別の拡張子を指定した場合でも、ファイル仕様に拡張子.snpが割り当てられます。
SNAPSHOT FILENAME引数を省略すると、.snpファイルのデバイス名、ディレクトリ名およびファイル名はデータベース・ルート・ファイルと同じになります。
デフォルトはENABLED IMMEDIATEで、これにより読取り/書込みトランザクションでは、読取り専用トランザクションがアクティブかどうかにかかわらず、変更した行のコピーがスナップショット・ファイルに書き込まれます。
ENABLED DEFERREDオプションを指定すると、読取り/書込みトランザクションにおいて(読取り専用トランザクションがアクティブでないかぎり)変更した行のコピーのスナップショット・ファイルへの書込みが回避できます。この方法でスナップショットへの書込みを遅延することにより、読取り/書込みトランザクションのパフォーマンスが向上します。ただし、アクティブな読取り/書込みトランザクションの開始より後に開始される読取り専用トランザクションは、すべてのアクティブな読取り/書込みユーザーがそれらのトランザクションを完了するまで待機する必要があります。
デフォルトはSTATISTICS COLLECTION IS ENABLEDです。ALTER DATABASE文およびIMPORT文を使用すると統計を無効にできます。
RMU Show Statisticsコマンドの詳細は、『Oracle Rdb for OpenVMS Oracle RMUリファレンス・マニュアル』を参照してください。
統計収集を有効にする場合は、論理名RDM$BIND_STATS_ENABLEを定義します。統計収集を使用する場合の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。
圧縮が有効になっている場合、Oracle Rdbではランレングス圧縮を使用して、テキスト・データ型からの2つ以上の連続する空白文字、または非文字データ型からの2つ以上のバイナリ・ゼロを圧縮します。システムの索引を圧縮すると、記憶域が減少し、I/Oが改善されます。アプリケーションが頻繁にデータ定義を同時実行しないかぎり、システムの索引を圧縮してください。
SYSTEM INDEX (COMPRESSION IS...)句を指定して作成したデータベースは、EXPORT文およびIMPORT文を使用してのみ変更できます。圧縮モードを変更するためのデータベース変更はできません。
SYSTEM INDEX COMPRESSION IS句は、この句と同一で、Oracle Rdbの古いバージョンとの互換性の目的で保持されています。
THRESHOLDオプションを指定する場合は、DETECTED ASYNC PREFETCH句がすでに指定されている必要があります。ASYNC PREFETCH句にTHRESHOLDオプションを指定しようとすると、エラーが表示されます。
デフォルトのしきい値は、70、85、および95パーセントです。値を1つまたは2つのみ指定する場合は、指定されなかった値は、デフォルトで100パーセントになります。
単一ファイルのデータベースにはTHRESHOLDS記憶域パラメータは指定できず、PAGE FORMAT IS MIXEDを明示的に指定していない場合もTHRESHOLDS記憶域パラメータは指定できません。均一記憶域にしきい値を指定するには、CREATE STORAGE MAP文を使用します。
領域管理パラメータの設定の詳細は、『Oracle Rdb7 Guide to Database Maintenance』を参照してください。
ユーザーごとの制限は、グローバル・バッファの総数より大きくできません。デフォルトは5バッファです。ユーザーごとの制限は、RMU Dumpコマンド出力に1ユーザー当たりの最大グローバル・バッファの数として表示されます。
プロセスがアタッチごとに割当て可能なグローバル・バッファの最大数は、NUMBER IS句で設定されるグローバル・バッファの総数を、データベースへのアクセスが保証されているアタッチの総数で割ることにより決定します。たとえば、グローバル・バッファの総数が200であり、少なくとも10アタッチに対してデータベースへのアクセスを保証する場合、1アタッチ当たりのグローバル・バッファの最大数は20に設定します。
一般的には、グローバル・バッファを使用する場合、1ユーザー当たりのグローバル・バッファの最大数は、デフォルトのデータベース・バッファの数よりも大きく設定します。VMSclusterシステムのパフォーマンスを最大化できるように、Global_Buffers修飾子を指定したRMU Openコマンドを使用してクラスタ内の各ノード上で2つのグローバル・バッファ・パラメータをチューニングします。
USER LIMIT ISパラメータはオンラインで変更できますが、その変更は次回データベースがオープンするまで反映されません。
グローバル・バッファ固有のバッファ・パラメータは、NUMBER ISパラメータおよびUSER LIMIT ISパラメータの2つのみです。そのため、これらは、プロセスごとにではなくノードごとに適用されます。
モード | 説明 |
---|---|
ALL | すべてのモードが有効。 |
NONE | 有効なモードなし。 |
トランザクション・タイプ | |
[NO]READ ONLY | データベースに対して読取り専用トランザクションを実行可能。 |
[NO]READ WRITE | データベースに対して読取り/書込みトランザクションを実行可能。 |
[NO] BATCH UPDATE | データベースに対してバッチ更新トランザクションを実行可能。このモードの実行では、セキュリティ機能やリカバリ・ユニット・ジャーナル・ファイルは適用されず、オーバーヘッドは発生しない。バッチ更新トランザクションは、テータベースの初期ロードに使用するためのものである。Oracle Rdbでは、このモードは無効にすることを推奨。 |
モードの予約 | |
[NO] SHARED [READ | WRITE] |
表を共有モード用に予約可能。つまり、他のユーザーもこれらの表を使用できる。 |
[NO] PROTECTED [READ | WRITE] | 表を保護モード用に予約可能。つまり、他のユーザーもこれらの表から読み取ることができる。 |
[NO] EXCLUSIVE [READ | WRITE] | 表を排他アクセス用に予約可能。つまり、READ ONLYトランザクションであっても他のユーザーはこれらの表にアクセスできない。 |
ALL | 他のユーザーでもすべての表を使用可能。 |
NONE | 表へのアクセスは不可。 |
txn-modesの詳細は、「SET TRANSACTION文」を参照してください。
WAIT句が指定されない場合、nのデフォルト値はゼロ(0)です。nの値には、ゼロ(0)〜35,791,394の範囲の値が可能です。ただし、Oracle Rdbでは、大きい値は使用しないことをお薦めします。
ワークロード・プロファイルは、データベース・ワークロードにおいて問合せにより使用される目的の表参照および列参照の詳細です。ワークロード収集を有効にすると、オプティマイザによりこれらの参照が収集され、RDB$WORKLOADシステム表に記録されます。このワークロードはさらに、ワークロードに関する便利な統計を記録するRMU Analyze Statisticsコマンドにより処理されます。これらのワークロード統計は、より精密なアクセス計画を用意するためにオプティマイザにより実行時に使用されます。
デフォルトでは、ワークロード収集は無効です。
- CREATE DATABASE文は、複数のトランザクションを開始およびコミットします。ただし、CREATE DATABASE文はロールバックできません。
- トランザクションがアクティブな場合は、CREATE DATABASE文を発行できません。可能であれば、プログラムまたは対話型セッション内で、CREATE DATABASEを最初のSQL文にしてください。
- コンテキスト構造体とは、分散トランザクション・コンテキストを記述するデータ構造体です。すでに開始されているトランザクションではCREATE DATABASE文を実行できないため、CREATE DATABASE文には分散トランザクションのコンテキスト構造体を渡すことができません。
- トランザクションがアクティブな状態ではCREATE DATABASE文を発行できませんが、SQLでは、トランザクションが宣言された後、CREATE DATABASEを発行できます。
これを実行すると、新規データベースを含むため、現在宣言されているトランザクションの有効範囲が自動的に拡張されます。SQLは、CREATE DATABASE文で別名を使用し、その別名に対するデフォルトのトランザクション・オプション(読取り/書込み、待機)を宣言します。また、現在宣言されているトランザクションにすでに含まれているデータベースに対するトランザクション・オプションを保持します。- RDBVMS$CREATE_DB論理名およびRDBVMS$CREATE_DB識別子を使用して、ユーザーがシステム上でデータベースを作成する機能を制限できます。RDBVMS$CREATE_DB論理名およびRDBVMS$CREATE_DB識別子の詳細は、『Oracle Rdb7 Guide to Database Design and Definition』のデータベースの保護の定義に関する章を参照してください。
- CREATE DATABASE文は、作成者にデータベースに対するすべてのSQL権限を付与し、他のすべてのユーザーにはSQL権限を付与しないという、データベースのデフォルトのアクセス制御リスト(ACL)を作成します。
- リソース識別子が所有するディレクトリにデータベースを作成すると、そのディレクトリのアクセス制御エントリがデータベースのルートファイルのACLに適用され、その後、RMUアクセス制御エントリが追加されます。これは、データベース・ユーザーによるOpenVMSのファイル・セキュリティのオーバーライドを回避するためです。ただし、これにより、自分が所有するとみなしているデータベースに対して、RMUアクセス権限を持たなくなる可能性があります。
この問題の詳細および回避策は、『Oracle Rdb for OpenVMS Oracle RMUリファレンス・マニュアル』および『Oracle Rdb7 Guide to Database Maintenance』を参照してください。- 最大数を超えるグローバル・バッファを要求するプロセスには、グローバル・バッファの最大数が付与されます。これにより、問題が発生していることが示されないまま、想定よりもパフォーマンスが遅くなる場合があります。
- 次の照合順番を使用してデータベースを定義しようとすると、Oracle Rdbは算術例外エラーを返します。
native_2_upper_lower = cs( sequence = (%X00,"#"," ","A","a","B","b","C","c","D","d","E", "e","8","F","f","5"-"4","G","g","H","h","I","i","J","j","K","k", "L","l","M","m","N","n","9","O","o","1","P","p","Q","q","R","r", "S","s","7"-"6","T","t","3"-"2","U","u","V","v","W","w","X","x", "Y","y","Z","z"), modifications = (%X01-%X1F=%X00,"!"-""""=%X00,"$"-"0"=%X00,":"-"@"= %X00, "{"-%XFF=%X00,""="A"));
照合順番のmodificationsの箇所では、多すぎる文字がヌル文字に変換されています。Oracle Rdbで処理可能なヌル文字への変換は、80文字程度です。
これを回避するには、MULTINATIONAL2キャラクタ・セットを目的の順序でソートするように変更します。- 単一ファイルのデータベースに対しては、スナップショット・ファイル名を指定できません。
SNAPSHOT FILENAME句をCREATE STORAGE AREA句の外部に指定すると、後続のCREATE STORAGE AREA文ではデフォルト値が使用されます。したがって、この句では、単一ファイルのデータベース(記憶域が複数に分離されていないデータベース)用のスナップショット・ファイルを別途作成できません。
単一ファイルのデータベースを作成する場合、Oracle Rdbでは、スナップショット・ファイルのファイル仕様は格納されません。かわりに、ルート・ファイル(.rdb)のファイル仕様を使用して、スナップショット・ファイルのファイル仕様が決定されます。
スナップショット・ファイルを別のデバイスまたは別のディレクトリに配置する場合、複数ファイルのデータベースを作成します。
ただし、隠し論理名に関する検索リストを定義することにより、OpenVMSプラットフォームに対する制限を回避できます。(ただし、非指定のルート論理名は使用しないでください。非指定のルート論理名を使用して定義されたデータベース・ファイルは、バックアップはできますが、予想どおりにはリストアされません。)
別のデバイスまたは別のディレクトリにあるスナップショット・ファイルを使用してデータベースを作成する手順は、次のとおりです。
- 隠し論理名を使用して検索リストを定義します。検索リストの1番目の項目にはルート・ファイルの場所を指定し、2番目の項目にはスナップショット・ファイルの場所を指定します。
- ディレクトリ仕様の論理名を使用してデータベースを作成します。
- 2番目のデバイスまたはディレクトリにスナップショット・ファイルをコピーします。
- 元の場所からスナップショット・ファイルを削除します。
既存のデータベースでこれを行う場合は、検索リストを定義する前にRMU Closeコマンドを使用してデータベースをクローズし、元のスナップショット・ファイルを削除した後にRMU Openコマンドを使用してデータベースをオープンします。それ以外の場合は、ここに示した手順に従ってください。
スナップショット・ファイルおよびデータベース・ファイルを別のデバイスに配置する場合は、データベースのバックアップとリストアのプロセスを考慮することが重要です。データベースのバックアップにはRMU Backupコマンドを使用します。ファイルはその後、RMU Restoreコマンドを実行することによりリストアできます。スナップショット・ファイルは、それを常時保管するデバイスまたはディレクトリにコピーし、リストア先として使用した場所から削除します。詳細は、『Oracle Rdb for OpenVMS Oracle RMUリファレンス・マニュアル』を参照してください。- キャラクタ・セットの拡張サポートが必要で、デフォルト、各国語、または識別子キャラクタ・セットを指定する場合は、データベースの作成前に言語を設定する必要があります。言語設定の詳細は、「SET DIALECT文」を参照してください。
- データベースのデフォルト・キャラクタ・セットでは、CHARデータ型およびVARCHARデータ型で列のキャラクタ・セットを指定します。データベースのデフォルト・キャラクタ・セットの詳細は、第2.1.3項を参照してください。
- 各国語キャラクタ・セットでは、NCHARデータ型およびNCHAR VARYINGデータ型で列のキャラクタ・セットを指定します。各国語キャラクタ・セットの詳細は、第2.1.7項を参照してください。
- 識別子キャラクタ・セットでは、カーソル名および表名など、オブジェクト名のキャラクタ・セットを指定します。識別子キャラクタ・セットの詳細は、第2.1.5項を参照してください。
- Oracle Rdbでは、DEFAULT CHARACTER SET句が省略されると、言語が以前にSQL99またはMIAに設定されていた場合、データベースのデフォルト・キャラクタ・セットは、CREATE DATABASE文が起動されるセッションのデフォルト・キャラクタ・セットであるとみなされます。それ以外の場合、この句が省略されるとデータベースのデフォルト・キャラクタ・セットはDEC_MCSになります。
- Oracle Rdbでは、NATIONAL CHARACTER SET句が省略されると、言語が以前にSQL99またはMIAに設定されていた場合、各国語キャラクタ・セットは、CREATE DATABASE文が起動されるセッションの各国語キャラクタ・セットであるとみなされます。それ以外の場合、この句が省略されると各国語キャラクタ・セットはDEC_MCSになります。
- Oracle Rdbでは、IDENTIFIER CHARACTER SET句が省略されると、言語が以前にSQL99またはMIAに設定されていた場合、識別子キャラクタ・セットは、CREATE DATABASE文が起動されるセッションの識別子キャラクタ・セットであるとみなされます。それ以外の場合、この句が省略されると識別子キャラクタ・セットはDEC_MCSになります。
- DISPLAY CHARACTER SET句をATTACH文、CREATE DATABASE文またはDECLARE ALIAS文で指定すると、以前に発行されたSET DISPLAY CHARACTER SET文またはSET AUTOMATIC TRANSLATION文よりも優先されます。
- データベースのデフォルト・キャラクタ・セットがDEC_MCSではない場合、PATHNAME指定子は使用できません。これは、CDD/リポジトリではオブジェクト名にDEC_MCSのみを含める制限があるためです。SQLにより、エラー・フラグが付けられます。
- データベースのデフォルト・キャラクタ・セット、各国語キャラクタ・セットおよび識別子キャラクタ・セットは、データベースの作成後は変更できません。
- プログラムにおけるCREATE DATABASE文は、データベースを参照する他のデータ定義言語(DDL)文より(ソース・ファイルにおいて)優先される必要があります。
- CREATE DATABASE文では、COMMENT ON文を指定できません。
- デフォルト記憶域の指定時に、パフォーマンスを向上させるためにUNIFORMページ形式を指定することをお薦めします。
- データベースのデフォルト記憶域として設定されている記憶域は削除できません。
- データベース作成の際にトランザクション・モードをREAD ONLYに設定すると、すべてのデータベース・オブジェクトが定義できなくなります。
- CREATE DATABASE文でアフター・イメージ・ジャーナルを有効化したり、アフター・イメージ・ジャーナル・ファイルを追加することはできません。アフター・イメージ・ジャーナルの有効化やアフター・イメージ・ジャーナル・ファイルの追加を行うにはALTER DATABASE文を使用する必要があります。
- RDB$PROFILESシステム表を使用して、CREATE USER文、CREATE PROFILE文およびCREATE ROLE文で作成されたユーザー、ロールおよびプロファイルが記録されます。データベースが作成されると、作成者は自動的にユーザーとして追加されます。
- GRANT文は、データベース内でユーザーまたはロールが作成される前に、オペレーティング・システムのユーザーまたはグループを参照する場合があります。この場合、Oracle Rdbは、CREATE USER文またはCREATE ROLE文のIDENTIFIED EXTERNALLY句に対応するユーザーおよびロールを自動的に作成します。
- ノードの指定は、CREATE DATABASE文のルートのFILENAME句に対してのみ行われている可能性があります。
これは、次の句を使用して指定されたディレクトリまたはファイル仕様には、デバイス、ディレクトリ、ファイル名、およびファイル・タイプのみが使用可能であることを意味します。
- ROW CACHE IS ENABLED句、RECOVERY JOURNAL句、ADD CACHE句およびCREATE CACHE句のLOCATION句
- SNAPSHOT FILENAME句
- ADD STORAGE AREA句およびCREATE STORAGE AREA句のFILENAME句およびSNAPSHOT FILENAME句
- Oracle Rdbでは、大容量メモリー(VLM)を使用すると、システムで空いている物理メモリーがすべて使用可能になり、物理メモリーをデータベース・ユーザーの仮想アドレス空間に動的にマップできます。VLMでは、小規模な仮想アドレス・ウィンドウを介して大量の物理メモリーにアクセスできます。VLMは物理メモリー内で定義されますが、仮想アドレス・ウィンドウは各ユーザーのプライベート仮想アドレス空間内で定義され、維持されています。VLM内のグローバル・バッファは、メモリー内に常駐または固定されており、一連のプロセスの割当て制限には直接影響しません。
プロセスごとの仮想アドレス・ウィンドウの数は、ALTER DATABASE...GLOBAL BUFFERSコマンドのUSER LIMIT IS値で指定されるグローバル・バッファの最大割当てセット・パラメータに基づいており、直接調整できません。
ALTER DATABASE...GLOBAL BUFFERSコマンドのLARGE MEMORYパラメータは、VLM内でのグローバル・バッファ作成を指定するために使用されます。
SQL> ALTER DATABASE FILENAME 'MYBIGDB.RDB' cont> GLOBAL BUFFERS ARE ENABLED cont> (NUMBER IS 250000, cont> USER LIMIT IS 500, cont> LARGE MEMORY IS ENABLED);
グローバル・バッファでのVLMの使用を開始する前に、システムの空きメモリーの量を考慮する必要があります。DCLコマンドSHOW MEMORY/PHYSICALを使用して、物理メモリーの可用性および使用率を確認できます。このコマンドは、使用中のメモリーの量および空きメモリーの量に関する情報を表示します。空きメモリーは、ユーザー・アプリケーション以外にも、VLMのグローバル・バッファに使用できます。
データベースごとのグローバル・バッファの合計数は524,288に制限されており、最大バッファ・サイズは64ブロックです。これは、最大16GB(2,097,152アルファ・ページ)のグローバル・バッファに相当します。この制限は、将来のリリースのOracle Rdbで緩和される予定です。
グローバル・バッファの機能の詳細は、『Oracle Rdb7 Guide to Database Performance and Tuning』を参照してください。- SHARED MEMORY IS PROCESS RESIDENTまたはLARGE MEMORYを有効化または無効化するには、コマンドを実行するプロセスに、VMS$MEM_RESIDENT_USER権利識別子が付与されている必要があります。この機能を有効にした場合は、データベースをオープンするためのプロセスにもVMS$MEM_RESIDENT_USER識別子が付与される必要があります。この機能の利用時にはRMU/OPENコマンドの使用をお薦めします。
例1: 単一ファイルのデータベースの作成このコマンド・ファイルの例では、CREATE DATABASE文の内部で定義されているドメインで構成されたEMPLOYEESという1つの表を含む、単一ファイルのデータベースを作成します。EMPLOYEES表は、サンプルの人事データベースの表と同じ定義で構成されています。
人事データベースの複数ファイルのバージョンを作成する例は、「CREATE STORAGE AREA句」を参照してください。
SQL> -- By omitting a FILENAME clause, the database root file SQL> -- takes the file name from the alias: SQL> CREATE DATABASE ALIAS personnel cont> -- cont> -- This CREATE DATABASE statement takes default cont> -- database root file and storage area parameter values. cont> -- cont> -- Create domains. cont> -- Note that database elements do not terminate with semicolons. cont> -- cont> CREATE DOMAIN ID_DOM CHAR(5) cont> -- cont> CREATE DOMAIN LAST_NAME_DOM CHAR(14) cont> -- cont> CREATE DOMAIN FIRST_NAME_DOM CHAR(10) cont> -- cont> CREATE DOMAIN MIDDLE_INITIAL_DOM CHAR(1) cont> -- cont> CREATE DOMAIN ADDRESS_DATA_1_DOM CHAR(25) cont> -- cont> CREATE DOMAIN ADDRESS_DATA_2_DOM CHAR(20) cont> -- cont> CREATE DOMAIN CITY_DOM CHAR(20) cont> -- cont> CREATE DOMAIN STATE_DOM CHAR(2) cont> -- cont> CREATE DOMAIN POSTAL_CODE_DOM CHAR(5) cont> -- cont> CREATE DOMAIN SEX_DOM CHAR(1) cont> -- cont> CREATE DOMAIN DATE_DOM DATE cont> -- cont> CREATE DOMAIN STATUS_CODE_DOM CHAR(1) cont> -- cont> -- Create a table: cont> -- cont> CREATE TABLE EMPLOYEES cont> ( cont> EMPLOYEE_ID ID_DOM cont> CONSTRAINT EMP_EMPLOYEE_ID_NOT_NULL cont> NOT NULL cont> NOT DEFERRABLE, cont> LAST_NAME LAST_NAME_DOM, cont> FIRST_NAME FIRST_NAME_DOM, cont> MIDDLE_INITIAL MIDDLE_INITIAL_DOM, cont> ADDRESS_DATA_1 ADDRESS_DATA_1_DOM, cont> ADDRESS_DATA_2 ADDRESS_DATA_2_DOM, cont> CITY CITY_DOM, cont> STATE STATE_DOM, cont> POSTAL_CODE POSTAL_CODE_DOM, cont> SEX SEX_DOM, cont> CONSTRAINT EMP_SEX_VALUES cont> CHECK ( cont> SEX IN ('M', 'F') OR SEX IS NULL cont> ) cont> NOT DEFERRABLE, cont> BIRTHDAY DATE_DOM, cont> STATUS_CODE STATUS_CODE_DOM, cont> CONSTRAINT EMP_STATUS_CODE_VALUES cont> CHECK ( cont> STATUS_CODE IN ('0', '1', '2') cont> OR STATUS_CODE IS NULL cont> ) cont> NOT DEFERRABLE, cont> ) cont> -- cont> -- End CREATE DATABASE by specifying a semicolon: cont> ;