ヘッダーをスキップ

Oracle Rdb SQLリファレンス・マニュアル リリース7.2 E06178-01 |
| 目次 | 索引

戻る | 次へ |

次の複合文では、変数を使用してJOBS表の行を更新します。変数MIN_SALへの値の割当てには、SET代入制御文を使用します。

    SQL> BEGIN
    cont> -- Declare the variable.
    cont>      DECLARE :MIN_SAL INTEGER(2);
    cont> -- Set the value of the variable.
    cont>      SET :MIN_SAL = (SELECT MIN(MINIMUM_SALARY) FROM JOBS) * 1.08;
    cont> -- Update the rows in the JOBS table.
    cont>      UPDATE JOBS
    cont>            SET MINIMUM_SALARY = :MIN_SAL
    cont>                WHERE MINIMUM_SALARY < (:MIN_SAL * 1.08);
    cont> END;

例2: DEFAULT句の使用

次の例では、DEFAULT句に対して様々な値式を使用する各種の変数宣言を示しています。

    SQL> SET FLAGS 'TRACE';
    SQL>
    SQL> BEGIN
    cont>   DECLARE :x INTEGER DEFAULT -1;
    cont>   TRACE :x;
    cont> END;
    ~Xt: -1
    SQL>
    SQL> BEGIN
    cont>   DECLARE :x INTEGER DEFAULT NULL;
    cont>   TRACE COALESCE (:x, 'NULL');
    cont> END;
    ~Xt: NULL
    SQL>
    SQL> BEGIN
    cont>   DECLARE :x INTEGER DEFAULT (1+1);
    cont>   TRACE :x;
    cont> END;
    ~Xt: 2
    SQL>
    SQL> BEGIN
    cont>   DECLARE :x INTEGER DEFAULT (SELECT COUNT(*) FROM EMPLOYEES);
    cont>   TRACE :x;
    cont> END;
    ~Xt: 100

例3: DEFAULT句を使用したLOOP文の指定

次の例では、単純な値式をいくつか示します。デフォルト値は、この文を初めて実行したときのみでなく、ループの反復のたびに:yに適用されます。

    SQL> BEGIN
    cont>     DECLARE :x INTEGER DEFAULT 0;
    cont>     WHILE :x < 10
    cont>     LOOP
    cont>         BEGIN
    cont>            DECLARE :y INTEGER DEFAULT 1;
    cont>            TRACE :x, :y;
    cont>            SET :x = :x + :y;
    cont>            SET :y = :y + 1;
    cont>         END;
    cont>     END LOOP;
    cont> END;
    ~Xt: 0          1
    ~Xt: 1          1
    ~Xt: 2          1
    ~Xt: 3          1
    ~Xt: 4          1
    ~Xt: 5          1
    ~Xt: 6          1
    ~Xt: 7          1
    ~Xt: 8          1
    ~Xt: 9          1

例4: CHECK制約の使用

この例では、CHECK制約を使用して、無効な値がREPEATループに対する制御変数に割り当てられるのを防止します。シングルトンSELECTにより、実際にはローカル変数Pにゼロが返され、変数の検証が失敗します。

    SQL> begin
    cont> declare :v integer = 0 check (value is not null);
    cont> declare :p integer = 1 check (value is not null and value <> 0);
    cont>
    cont> repeat
    cont>     select count(*) into :p
    cont>     from employees
    cont>     where employee_id = '00000';
    cont>     set :v = :v + :p;
    cont> until :v > 1000
    cont> end repeat;
    cont> end;
    %RDB-E-NOT_VALID, validation on field P caused operation to fail

例5: WITH HOLD句の使用

次の例は、AUDIT_HISTORY表から古いデータを消去するプロシージャでのWITH HOLD PRESERVE ON COMMIT句の使用を示します。これにより、100行（:MAX_UNIT）ごとにトランザクションがコミットされます。

    SQL> declare transaction read only;
    SQL> set flags 'TRACE';
    SQL> set compound transactions 'internal';
    SQL> declare :purge_date date;
    SQL> accept :purge_date prompt 'Purge date for AUDIT_HISTORY? ';
    Purge date for AUDIT_HISTORY? 1-jan-1989
    SQL>
    SQL> begin
    cont>     with hold preserve on commit
    cont> declare :max_unit constant integer = 100;
    cont> declare :rc integer = :max_unit;
    cont>
    cont> set transaction read write;
    cont> for :ah
    cont>     as table cursor ah_cursor
    cont>     for select * from audit_history
    cont>     where job_start < :purge_date
    cont> do
    cont>     delete from audit_history
    cont>         where current of ah_cursor;
    cont>     if :rc = 0
    cont>     then
    cont>         commit;
    cont>         set :rc = :max_unit;
    cont>         set transaction read write;
    cont>     else
    cont>         set :rc = :rc - 1;
    cont>     end if;
    cont> end for;
    cont> get diagnostics :rc = ROW_COUNT;
    cont> commit;
    cont> trace 'Processed rows: ', :rc;
    cont> end;
    ~Xt: Processed rows: 1096

# CONNECT文

> データベース環境および接続を作成し、その関連に対して接続名を指定します。

> 接続は、一連のカーソル、中間結果表、およびアプリケーションと現在アタッチされているデータベース環境のすべてのモジュールに存在するプロシージャ間の関連を指定します。

> データベース環境は、単位としてアタッチまたはデタッチできる1つ以上のデータベースです。接続名により、特定の接続およびデータベース環境が指定されます。プロシージャの実行時に、接続のコンテキスト内で実行されます。

> CONNECT文を発行すると、SQLによって、使用しているアプリケーションのすべてのプロシージャから新規の接続と、CONNECT文で指定されたすべてのデータベースから新規の環境が作成されます。新規の環境には、デフォルト環境でアタッチされたデータベースが含まれます。

> データベースのデフォルト環境へのアタッチには、次の2つの方法があります。

> - ATTACH文を使用して、実行時にデータベース環境を指定する方法。後続のATTACH文を使用して指定したデータベースはすべて、デフォルト環境の一部になります。

> - DECLARE ALIAS文を使用して、プリコンパイルされたSQLおよびSQLモジュール言語でコンパイル時にデータベース環境を指定する方法。DECLARE ALIAS文を使用して指定したすべてのデータベースも、デフォルト環境の一部になります。

> CONNECT文により、新規の接続と一連のアタッチメントが作成され、その接続に対して暗黙的なSET CONNECTが実行されます。CONNECT文によってトランザクションは作成されませんが、接続にはそれぞれ独自の暗黙的トランザクション・コンテキストが存在します。同じデータベースにアタッチする2つの異なるCONNECT文を発行できますが、各アタッチは一意です。

> CONNECT文で接続名を指定すると、後続のSET CONNECT文でその接続名を参照できます。SET CONNECT文を使用すると、問合せのデタッチおよび再コンパイルを行わずに実行したアプリケーションに対して、新規の接続を指定できます。詳細は、「SET CONNECT文」を参照してください。

> DISCONNECT文により、データベースからデタッチされ、指定した接続でのトランザクションが終了され、これらのトランザクションの開始以降に実行した変更がすべてロールバックされます。

## 環境

> CONNECT文は次の環境で使用できます。

> - 対話型SQL内

> - プリコンパイル対象のホスト言語プログラムに埋め込まれる場合

> - SQLモジュールのプロシージャの一部として

> - 動的SQLで動的に実行される文として

## 形式

## 引数

> ### ALIAS alias

> データベースへの特定のアタッチに付ける名前を指定します。接続式で別名を指定すると、プログラムまたは対話型SQL文で複数のデータベースを参照できるようになります。

> デフォルトのデータベースのみを参照する場合は、CONNECT文で別名を指定する必要はありません。

> 別名を指定してもFILENAMEまたはPATHNAMEを指定しない場合は、SQLではDECLARE ALIAS文でデータベースのパス名またはファイル名がデフォルトで使用されます。別名はデフォルト環境の一部である必要があります。

> ### AS runtime-options (1)

> アタッチされるデータベースのグループ（環境）とそれらを参照するデータベースおよびリクエスト・ハンドル（接続）間の関連に対する識別子を指定します。

> 接続名は、使用するアプリケーション内で一意である必要があります。リテラル文字列は、一重引用符で囲みます。次に例を示します。

>     CONNECT TO 'ALIAS CORP FILENAME corporate_data' AS 'JULY_CORP_DATA'

> 接続名を指定しない場合は、SQLによって一意の接続名が生成されます。次に例を示します。

>     SQL> CONNECT TO
>     cont> 'ATTACH FILENAME mf_personnel';
>     SQL> SHOW CONNECTIONS
>             RDB$DEFAULT_CONNECTION
>     ->      SQL$CONN_00000000

> ### ATTACH attach-expression

> デフォルト環境の一部ではない別名を指定します。FILENAME 'attach-spec'、PATHNAME path-name、database-options、およびattach-optionsの詳細は、「ATTACH文」を参照してください。

> ### CATALOG runtime-options (2)

> 接続内の動的文にデフォルト・カタログを指定します。

> 動的SQLのパラメータ・マーカー、プリコンパイルされたSQLプログラムのホスト言語変数、SQLモジュールの言語モジュールのパラメータ、または文字列リテラルを指定できます。指定する引数は、実行時に解釈される接続式を含む文字列である必要があります。

> ### db-specification

> 有効な別名を1つ以上指定します。特定のデータベースを識別する別名は、そのデータベースが現在のアプリケーションのいずれかのモジュールで宣言されているか、ATTACH文によりアタッチされている場合にのみ有効です。ATTACH文は、db-specificationの一部として発行できます。

> ### FILENAME 'attach-spec'

> データベースにアクセスするために必要な完全または部分的な情報が含まれる引用符付き文字列です。

> FILENAME引数を使用する場合、データベース定義に対する変更は、リポジトリではなくデータベース・システム・ファイルにのみ入力されます。FILENAMEを指定する場合、アプリケーションは実行時にこのファイル名を使用してデータベースにアタッチされます。

> node-specおよびfile-specの詳細は、第2.2.8.1項を参照してください。

> ### 'string-literal'
> parameter-marker host-variable

> 通常は実行時に、様々なCONNECT句で使用される値を指定します。

> ### literal-user-auth

> 接続で指定した別名に使用するユーザー名およびパスワードを指定します。この句により、データベース（特にリモート・データベース）へのアクセスが可能になります。

> このリテラルにより、CONNECT文で各別名のユーザー名およびパスワードの情報を明示的に指定できます。この句を使用する場合の詳細は、「ATTACH文」を参照してください。

> ### NAMES runtime-options (4)

> 現在の接続のセッションのデフォルト・キャラクタ・セット、識別子・キャラクタ・セットおよびリテラル・キャラクタ・セットとして使用されるキャラクタ・セット名を指定します。runtime-optionsの値は、第2.1節にリストされたキャラクタ・セットのいずれかである必要があります。

> 動的SQLのパラメータ・マーカー、プリコンパイルされたSQLプログラムのホスト言語変数、SQLモジュールの言語モジュールのパラメータ、または文字列リテラルを指定できます。指定する引数は、実行時に解釈される接続式を含む文字列である必要があります。

> ### PATHNAME path-name

> スキーマ定義のソースを指定するリポジトリのフルパス名または相対パス名です。PATHNAME引数を使用する場合、スキーマ定義に対する変更は、リポジトリとデータベース・システム・ファイルに入力されます。システム上にリポジトリがあり、データ定義文を使用する予定がある場合、Oracle Rdbでは、PATHNAME引数の使用をお薦めします。

> 指定したパス名は、実行時に別名に関連付けられるパス名に優先します。

> 実行時にPATHNAMEを指定する場合、アプリケーションはリポジトリから抽出されたデータベース・ファイル名にアタッチされます。

> ### SCHEMA runtime-options (3)

> 接続内の動的文にスキーマを指定します。

> 動的SQLのパラメータ・マーカー、プリコンパイルされたSQLプログラムのホスト言語変数、SQLモジュールの言語モジュールのパラメータ、または文字列リテラルを指定できます。指定する引数は、実行時に解釈される接続式を含む文字列である必要があります。

> ### TO connect-string-literal

> ### TO connect-parameter

> ### TO connect-parameter-marker

> データベース環境を指定します。動的SQLのパラメータ・マーカー、プリコンパイルされたSQLプログラムのホスト言語変数、SQLモジュールの言語モジュールのパラメータ、または文字列リテラルを指定できます。指定する引数は、実行時に解釈される接続式を含む文字列である必要があります。

> ### USER 'username'

> データベース・システムでの権限チェックに使用されるオペレーティング・システムのユーザー名を指定する文字列リテラルです。

> ### USING 'password'

> USER句で指定されているユーザー名に対するユーザーのパスワードを指定する文字列リテラルです。

> ### user-authentication

> データベース（特にリモート・データベース）へのアクセスの許可に使用するユーザー名およびパスワードを指定します。

> この句により、CONNECT文でユーザー名およびパスワードの情報を明示的に指定できます。ALIAS句またはATTACH句でユーザー名およびパスワードの情報を指定しない場合、SQLでは指定された各別名のデフォルトとして、この句で指定したユーザー名およびパスワードが使用されます。

> この句を使用する場合の詳細は、「ATTACH文」を参照してください。

## 使用方法

> - 別名のリストを指定すると、SQLでは一致する別名のデータベースの実行時パラメータとしてこのリストが使用されます。

> - CONNECT文を発行すると、デフォルト環境はCONNECT文を含むモジュールのグローバル・データベースおよびローカル・データベースで決まります。データベースがLOCALとして宣言された場合、モジュールにはデータベース環境の独自のビューが存在します。アプリケーションによりモジュール内のプロシージャがローカル別名でコールされると、データベース環境が変更されます。異なる2つのモジュールに同じローカル別名を付けると、異なる2つのデータベースとみなされます。
>   データベースがGLOBALとして宣言された場合、モジュール間でデータベースが共有されます。すべての別名をGLOBALとして宣言する場合、デフォルト接続は変更されません。異なる2つのモジュールでGLOBALとして宣言された別名を付けると、SQLによってモジュール間のデータベースが共有されます。

> - データベースのDECLARE文とは異なるモジュールに存在するCONNECT文のデータベース名を参照するには、データベースをGLOBALとして宣言する必要があります。

> - 接続を有効にするには、モジュール言語コマンドラインのCONNECT修飾子、またはプリコンパイラ・コマンドラインのSQLOPTIONS=(CONNECT)修飾子を使用します。接続を有効化すると、動的SQL文によるすべてのグローバル・データベースへのアクセスが可能になり、CONNECT文による任意のグローバル・データベースへの接続が可能になります。

> - 使用しているアプリケーションが現在アクティブな接続を持たないプロシージャをコールする場合、SQLによってデフォルト環境が使用されます。その時点でのデフォルト環境は、そのモジュールのDECLARE ALIAS文を使用して宣言されたすべてのデータベースによって形成されます。他のモジュールのデータベースは、そのモジュールのプロシージャの実行時にアタッチされます（アクティブなトランザクションが存在しないことを前提とします）。

> - DISCONNECT文により、アクティブなトランザクションが終了され、アタッチ中に実行されたデータベースの変更はすべて元に戻されます。変更を受け入れるには、DISCONNECT文を発行する前に、COMMIT文を発行する必要があります。

> - SET CONNECT文を使用して、使用可能な接続から1つの接続を選択できます。

> - 特定のデータベースからのアタッチおよびデタッチの実行時に、SQL接続および明示的なコールをDECdtmシステム・サービスに使用して制御できます。DECdtmシステム・サービスの明示的なコールおよび各データベースとSQL接続の関連付けにより、他のデータベースにアタッチした状態で、別のデータベースからデタッチできます。詳細は、『Oracle Rdb7 Guide to Distributed Transactions』を参照してください。

> - DISPLAY CHARACTER SETに対して指定したキャラクタ・セットには、ASCII文字が含まれる必要があります。使用可能なキャラクタ・セットのリストは、第2.1.5項を参照してください。オプションとして、リテラル、パラメータまたはパラメータ・マーカーを選択できます。

> - キャラクタ・セットにより、明示的なデータベースのコンテキストを持たない文のSQLDAおよびSQLDA2にあるSQLNAMEフィールドのキャラクタ・セットも指定されます。

> - データベースのデフォルト・キャラクタ・セットがDEC_MCSではない場合、PATHNAME指定子は使用できません。これは、現在CDD/リポジトリではオブジェクト名にDEC_MCSのみを含める制限があるためです。SQLにより、エラー・フラグが付けられます。

## 例

> 例1: デフォルト接続および他の1つの接続の作成

> 次の例では、デフォルト接続およびTESTという名前の付いた接続の、異なる2つの接続を持つ1つのデータベースにユーザーがアタッチする方法を示します。

>     SQL> attach 'alias MIA1 filename MIA_CHAR_SET';
>     SQL> connect to 'alias MIA1 filename MIA_CHAR_SET' as 'TEST';
>     SQL> show connections;
>             RDB$DEFAULT_CONNECTION
>     ->      TEST
>     SQL> show connections TEST;
>     Connection: TEST
>     Default alias is RDB$DBHANDLE
>     Default catalog name is RDB$CATALOG
>     Default schema name is SMITH
>     Dialect: SQLV40
>     Default character unit: OCTETS
>     Keyword Rules: SQLV40
>     View Rules: SQLV40
>     Default DATE type: DATE VMS
>     Quoting Rules: SQLV40
>     Optimization Level: DEFAULT
>     Hold Cursors default: WITH HOLD PRESERVE NONE
>     Quiet commit mode: OFF
>     Compound transactions mode: EXTERNAL
>     Default character set is DEC_MCS
>     National character set is DEC_MCS
>     Identifier character set is DEC_MCS
>     Literal character set is DEC_MCS
>     Display character set is UNSPECIFIED

>     Alias MIA1:
>             Identifier character set is DEC_KANJI
>             Default character set is DEC_KANJI
>             National character set is KANJI

> 例2: デフォルト接続および他の2つの接続の作成

> 次の例では、personnel_northwest、personnel_northeastおよびpersonnel_southeastの3つのデータベースにアタッチします。（personnel_northwestに対して別名を指定しないことにより、デフォルトの別名が割り当てられます。）EAST_COASTを含む、いくつかの接続が確立されます。EAST_COASTには、personnel_northeastとpersonnel_southeastの両方が含まれます。

> SHOW DATABASE文を使用してデータベースに対する変更を表示します。

>     SQL> --
>     SQL> -- Attach to the personnel_northwest and personnel_northeast databases.
>     SQL> -- Personnel_northwest has the default alias, so personnel_northeast
>     SQL> -- requires an alias.
>     SQL> -- All of the attached databases comprise the default connection.
>     SQL> --
>     SQL> ATTACH 'FILENAME personnel_northwest';
>     SQL> ATTACH 'ALIAS NORTHEAST FILENAME personnel_northeast';
>     SQL> --
>     SQL> -- Add the personnel_southeast database.
>     SQL> --
>     SQL> ATTACH 'ALIAS SOUTHEAST FILENAME personnel_southeast';
>     SQL> --
>     SQL> -- Connect to personnel_southeast.  CONNECT does an
>     SQL> -- implicit SET CONNECT to the newly created connection.
>     SQL> --
>     SQL> CONNECT TO 'ALIAS SOUTHEAST FILENAME personnel_southeast'
>     cont>     AS 'SOUTHEAST_CONNECTION';
>     SQL> --
>     SQL> -- Connect to both personnel_southeast and personnel_northeast as
>     SQL> -- EAST_COAST connection. SQL replaces the current connection to
>     SQL> -- the personnel_southeast database with the EAST_COAST connection
>     SQL> -- when you issue the CONNECT statement. You now have two different
>     SQL> -- connections that include personnel_southeast.
>     SQL> --
>     SQL> CONNECT TO 'ALIAS NORTHEAST FILENAME personnel_northeast,
>     cont>     ALIAS SOUTHEAST FILENAME personnel_southeast'
>     cont>     AS 'EAST_COAST';
>     SQL> --
>     SQL> -- The DEFAULT connection still includes all of the attached databases.
>     SQL> --
>     SQL> SET CONNECT DEFAULT;
>     SQL> --
>     SQL> -- DISCONNECT releases the connection name EAST_COAST, but
>     SQL> -- does not detach from the EAST_COAST databases because
>     SQL> -- they are also part of the default connection.
>     SQL> --
>     SQL> DISCONNECT 'EAST_COAST';
>     SQL> --
>     SQL> SET CONNECT 'EAST_COAST';
>     %SQL-F-NOSUCHCON, There is not an active connection by that name

>     SQL> --
>     SQL> -- If you disconnect from the default connection, and have no other
>     SQL> -- current connections, you are longer be attached to any databases.
>     SQL> --
>     SQL> DISCONNECT DEFAULT;
>     SQL> SHOW DATABASES;
>     %SQL-F-ERRATTDEF, Could not use database file specified by SQL$DATABASE
>     -RDB-E-BAD_DB_FORMAT, SQL$DATABASE does not reference a database known to Rdb
>     -RMS-E-FNF, file not found

# CREATE文

> データベース・オブジェクトが作成されます。

## 使用方法

> 次の注意事項は、CREATE DATABASEを除くすべてのCREATE文に適用されます。

> - LIST、DEFAULTまたはRDB$SYSTEMのいずれかの記憶域が読取り専用に設定されている場合、CREATE文を実行できません。最初にこれらの記憶域を読取り/書込みに設定する必要があります。一部のデータベースではRDB$SYSTEMもデフォルトになり、記憶域をリストする場合があります。

> - CREATE文は読取り/書込みトランザクションで実行する必要があります。アクティブなトランザクションがない場合にこの文を発行すると、SQLでは、直近のDECLARE TRANSACTION文で指定された特性を持つトランザクションが開始されます。

> - CREATE文は、次がどちらも該当する場合に失敗します。

>   - 適用されるデータベースがDICTIONARY IS REQUIRED引数を使用して作成された場合。

>   - データベースがFILENAME引数を使用してアタッチされた場合。

>   このような場合、文を発行すると次のエラーが発生します。

>       %RDB-E-NO_META_UPDATE, metadata update failed
>       -RDMS-F-CDDISREQ, CDD required for metadata updates is not being maintained

# CREATE CACHE句

> 注意 CREATE CACHEは独立した文として発行できません。これは、CREATE DATABASE文またはIMPORT文の一部としてのみ使用できる句です。 また、行キャッシュはALTER DATABASE文のADD CACHE句を使用して作成できます。

> 頻繁に参照される行が、関連付けられたページがディスクに戻された場合もメモリー内に保持されるように、行キャッシュを作成します。これにより、最近参照された行のみがキャッシュされるため、バッファ全体をキャッシュするよりも、メモリー使用率が節約されます。

> 行キャッシュ領域の詳細は、「ALTER DATABASE文」および「CREATE SEQUENCE文」を参照してください。

## 環境

> CREATE CACHE句は、CREATE DATABASE文またはIMPORT文でのみ使用できます。ADD CACHE句は、ALTER DATABASE文でのみ使用できます。

## 形式

## 引数

> ### ALLOCATION IS n BLOCK

> ### ALLOCATION IS n BLOCKS

> キャッシュされた行が書き込まれる、行キャッシュ・ファイル（.rdc）の初期割当てを指定します。

> ALLOCATION句が指定されない場合、ブロック内のデフォルト割当ては、このキャッシュのCACHE SIZEの約40%です。

> 行キャッシュがデータベースのチェックポイントに対して定義されている場合、この句は無視されます。

> ### CACHE row-cache-name

> 行キャッシュを作成します。

> ### CACHE SIZE IS n ROW

> ### CACHE SIZE IS n ROWS

> 行キャッシュに割り当てられる行数を指定します。行キャッシュが満杯になると、より最近参照された行が行キャッシュに保持され、そうでない行は破棄されます。行キャッシュの割当てを調節して、メモリー内に重要な行を保持できます。指定しない場合、デフォルトは1000行です。

> ### CHECKPOINT ALL ROWS TO BACKING FILE

> ### CHECKPOINT UPDATED ROWS TO BACKING FILE

> ### CHECKPOINT UPDATED ROWS TO DATABASE

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

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

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

> データベースレベルのCHECKPOINT句は、このCHECKPOINT句によってオーバーライドされます。

> ### EXTENT IS n BLOCK

> ### EXTENT IS n BLOCKS

> 行キャッシュ・ファイル（.rdc）のファイル・エクステント・サイズを指定します。

> EXTENT句が指定されない場合、ブロックのデフォルト数は、このキャッシュのCACHE SIZE * 127です。

> 行キャッシュがデータベースのチェックポイントに対して定義されている場合、この句は無視されます。

> ### LOCATION IS directory-spec

> 行キャッシュの情報が書き込まれるディレクトリの名前を指定します。ファイル名（row-cache-name.rdc）は、データベース・システムによって、チェックポイント時間に行キャッシュごとに自動生成されます。デバイス名およびディレクトリ名のみを、一重引用符で囲んで指定します。デフォルトの場所は、データベースのルート・ファイル用ディレクトリです。これらの.rdcファイルは、永続データベース・ファイルです。

> データベース・レベルで以前に指定した場所は、このLOCATION句によってオーバーライドされます。

> 行キャッシュがデータベースのチェックポイントに対して定義されている場合、この句は無視されます。

> ### NO LOCATION

> 行キャッシュに対してLOCATION IS句で以前に指定した場所が削除されます。NO LOCATIONを指定した場合、行キャッシュの場所はデータベース・ルート・ファイルのディレクトリになります。

> 行キャッシュがデータベースのチェックポイントに対して定義されている場合、この句は無視されます。

> ### NUMBER OF RESERVED ROWS IS n

> 各ユーザーがキャッシュへの挿入用に予約できるキャッシュ行の最大数を指定します。プロセスにより、行をキャッシュに挿入するときに使用されるエントリが、キャッシュ内に予約または割り当てられます。効率を高めるため、複数のエントリが一度に予約されます。ユーザーが予約したリストがすべて使用されると、Oracle Rdbにより別のグループのエントリの予約が試行されます。デフォルトは20行です。

> この値は、行キャッシュ内の使用可能なスロットの検索にも使用されます。初期パスで行キャッシュ全体が検索されるわけではありません。この値により、空きスロットを検索する行の最大数が指定されます。少なくとも1つの空きスロットが検出されると、挿入操作が実行されます。この初期検索で空きスロットが検出されない場合、空きスロットが見つかるまでOracle Rdbによりキャッシュの検索が続行されます。

> ### NUMBER OF SWEEP ROWS IS n

> スイープ操作中に、行キャッシュ・サーバー（RCS）・プロセスにより行キャッシュから再度データベースに書き戻される変更済の行の数を指定します。RCSは、変更済データでキャッシュが満杯であると通知を受けると、後続のトランザクションで行をキャッシュに挿入できるようにスイープを開始し、キャッシュ内に使用可能なスペースを作成します。スイープ行の数を、最初にキャッシュ内の合計行数の約5%に指定することをお薦めします。その後パフォーマンスを監視して、スイープ行の数を必要に応じて調整します。使用可能な値の範囲は、2〜524288である必要があります。指定しない場合、デフォルトは3000行です。

> ### ROW LENGTH IS n BYTES

> 行キャッシュに割り当てられる各行の長さを指定します。行が行キャッシュ領域に対して大きすぎる場合、それらの行はキャッシュされません。ROW LENGTHは4バイトの次の倍数に丸められた、位置合せ済のロングワードです。