データベースの完全性

ここでは、次のような、データベースの完全性を確保するための Fileshare の機能をすべて説明します。


注:Mainframe Express では、Fileshare がサポートされるのは Mainframe Express の構成要素で使用する場合のみです。 そのため、Fileshare を使用する書き込みアプリケーションに関する次の情報の一部は、Mainframe Express ユーザには該当しません。


トランザクション処理

トランザクション処理を行うと、データファイルを更新する一連の処理を、トランザクションと呼ばれる作業の 1 論理単位にグループ化できます。 トランザクションの一部として変更する場合は、次のように処理されます。

トランザクションでは、複数の Fileshare サーバで、複数のデータファイルを、複数回更新できます。

次の操作後に、SELECT 文と WITH ROLLBACK 句を定義したファイルで最初に更新操作 (WRITE、REWRITE、DELETE) を実行すると、トランザクションが開始します。

また、トランザクションは、次の場合に終了します。


注:


データの完全性を最高レベルで確保するために、トランザクション処理の前に、次の操作を行うようにしてください。

レコードロックは、トランザクションで更新するすべてのレコードについて暗黙的に使用します。 たとえば、プログラムが入力を要求しても、ユーザが応答しない場合のように、トランザクションが一時的に中断された場合は、レコードロックがファイルに長時間残ることがあります。 このとき、別の Fileshare クライアントがロックされたレコードを呼び出し、指定した時間が経過すると、Fileshare サーバはトランザクションを中止 (ロールバック) します。 このような場合に、Fileshare サーバがトランザクションをタイムアウトしたと言います。詳細については、『自動レコードロックのタイムアウト』の項を参照してください。


注:トランザクションで実行する更新回数を最小限に抑えると、取得するレコードロックの数も最小に抑えられます。 レコードロックの数を減らすと、データを共有する Fileshare クライアントの間のレコードロックの競合回数が減り、トランザクション後の COMMIT 文や ROLLBACK 文の実行速度が向上します。


自動レコードロックのタイムアウト

ファイルを共有するマルチユーザ環境では、プログラムはレコードロックを使用して個々のレコードへの同時呼び出しを制御します。 さらに、Fileshare では、トランザクションの中で更新するレコードについてレコードロックを自動的に取得します。 ただし、使用中のレコードロック数が多いほど、同時に呼び出せるデータが少なくなります。 そのため、1 つのプログラムが一度に確保するレコードロック数を最小限にすることが大切です。

ある Fileshare クライアントがレコードでロックを取得した後で (明示的に指定したため、またはトランザクションの中でレコードを更新したために) 、2 番目の Fileshare クライアントがロックされたレコードを読み込もうとした場合には、 Fileshare サーバは、レコードロックを確保している Fileshare クライアントが最後に Fileshare サーバに要求を送信してからの経過時間を調べます。 この経過時間とタイムアウト時間を比較した結果により、Fileshare サーバが実行する処理が異なります。

デフォルトのタイムアウト時間は 60 秒です。 Fileshare サーバの構成ファイルで /t オプションを使用すると、この値を変更できます。 値 0 を指定すると自動レコードロックのタイムアウトを無効にし、レコードロックの解放は、アプリケーションプログラムのみで制御します。

タイムアウトしたプログラムは、次の入出力操作時に、エラー 9/125 を受け取ります。 このエラーメッセージは、警告メッセージとして扱い、エラーが返された操作を繰り返す必要があります。 Fileshare サーバは、アクティブなトランザクションをロールバックし、タイムアウトしたプログラムで確保されているすべてのレコードロックを解放します。

トランザクション処理 - Fileshare クライアント

トランザクション処理を行う各データファイルに対して、COBOL プログラムの SELECT 文を使用してデータファイルを定義するときに、WITH ROLLBACK 句を指定します。

select test-file assign to "test.dat"
   organization indexed
   record key prime-key
   lock mode manual with rollback
   ...

このコード例では、データファイル test.dat でトランザクション処理を行うように指定しています。

トランザクションによる更新を永久的なものにするには、プログラムで COMMIT 文を使用します。 データファイルからトランザクションによる更新を削除するには、ROLLBACK 文を使用します。

COMMIT 文と ROLLBACK 文は、トランザクションに関係するすべてのデータファイルに対して作用します。 そのため、1 つのデータファイルのファイル状態だけでは、COMMIT 文や ROLLBACK 文の実行結果を確認できません。 COMMIT 文や ROLLBACK 文の実行結果を確認するには、ファイルハンドラリダイレクタモジュールを呼び出す必要があります。 ファイルハンドラリダイレクタモジュールで呼び出すエントリポイントは、fs_status です。 この呼び出し形式は、次のとおりです。

call "fs_status" returning t-status
end-call

ここで、t-status の定義は、次のとおりです。

01 t-status pic x(2) comp-x.

t-status で 0 以外の値が返される場合は、COMMIT 操作または ROLLBACK 操作が失敗したことを示します。

1   SELECT test-file ASSIGN TO "test.dat"
2      LOCK MODE MANUAL WITH ROLLBACK
3   ...
4   OPEN I-O test-file
5   ...
6   move 1 to prime-key
7   WRITE test-file-record
8   ...
9   COMMIT
10   call "fs_status"
11      returning t-status
12   end-call
13   if t-status < > 0
14      display "警告 - COMMIT 操作に失敗しました。"
15   end-if
16   move 2 to prime-key
17   WRITE test-file-record
18   ...
19   ROLLBACK
20   call "fs_status"
21      returning t-status
22   end-call
23   if t-status < > 0
24      display "警告 - ROLLBACK 操作に失敗しました。"
25   end-if
26   WRITE test-file-record
27   ...

この例の各行について説明します。

1 - 2行目

SELECT test-file ASSIGN TO "test.dat"
   LOCK MODE MANUAL WITH ROLLBACK

これらの行では、このデータファイルのトランザクション処理を指定します。

7 行目

WRITE test-file-record

この行では、新しいトランザクションを開始します。

9 行目

COMMIT

この行では、test-file の更新を永久的なものとし、トランザクションを終了します。

10 - 15行目

call "fs_status"
   returning t-status
end-call
if t-status < > 0
   display "警告 - COMMIT 操作が失敗しました。"
end-if

これらの行では、COMMIT 操作の状態を確認します。

17 行目

WRITE test-file-record

この行では、新しいトランザクションを開始します。

19 行目

ROLLBACK

この行では、test-file への更新を削除し、トランザクションを終了します。

20 - 25行目

call "fs_status"
   returning t-status
end-call
if t-status < > 0
   display "警告 - ROLLBACK 操作が失敗しました。"
end-if

これらの行では、ROLLBACK 操作の状態を確認します。

26 行目

WRITE test-file-record

この行では、新しいトランザクションを開始します。

トランザクション処理を可能にするために、Fileshare クライアントの構成を変更する必要はありません。

トランザクション処理 - Fileshare サーバ

トランザクション処理を可能にするために、Fileshare サーバの構成を変更する必要はありません。 ただし、ロールフォワード回復ユーティリティを使用してデータファイルを回復する場合は、回復プロセスの終了時にまだ完了していないトランザクションがあれば、暗黙的にロールバックされます。詳細については、『ロールフォワード回復ユーティリティ』を参照してください。

ロールフォワード回復ログ処理

次の状況で、システム障害が発生すると、データを損失することがあります。

ロールフォワード回復ログ処理は、データファイルに対する更新をすべてログファイルに保存しておく、Fileshare の機能です。 システムに障害が発生してデータを損失した場合は、ロールフォワード回復ユーティリティとログファイルを使用して、元のデータファイルのバックアップコピーに、ログファイル中の更新データを再適用します。 この回復処理が終了すると、バックアップファイルにはシステム障害が発生した時点のデータが再現されています (処理が完了していないトランザクションはロールバックされます) 。

ロールフォワード回復ログ処理を使用するために、Fileshare クライアントを変更する必要はありません。

ロールフォワード回復ログ処理 - Fileshare サーバ

ファイル更新のログ処理を行うには、データベース参照ファイルを作成し、これに更新のログを記録するファイルの名前とログファイルの名前を記述する必要があります。データベース参照ファイルの作成方法については、『データベース参照ファイルのメンテナンス』の項を参照してください。

ログファイル名を作成する場合には、拡張子は、Fileshare サーバにより自動生成されるので、手動で拡張子を指定する必要はありません。 手動で拡張子を指定すると、次のメッセージが表示されます。

FS180-W 指定されたログファイル名に拡張子が含まれています。 ログファイル名は
「filename」に変更されました。

Filehsare サーバは、ログ処理中に複数の回復ログファイルを作成します。 最初の回復ログファイルは開始ログファイルと呼ばれ、後のログファイルは継続ログファイルと呼ばれます。 Fileshare サーバは現在のログファイルをバックアップするたびに継続ログファイルを作成します。

現在の回復ログファイルには、常に、文字「L」で始まる拡張子が付けられます。 バックアップした回復ログファイルには、文字「B」で始まる拡張子が付けられます。 各拡張子では、これらの文字の後に 01 から始まる回復ログファイル番号を示す 2 桁の数字が続きます。自動生成されたこれらの拡張子は、ログファイルへの書き込み順を示します。つまり、ロールフォワード回復を実行する場合に適用する順番も示すことになります。 たとえば、recover というログファイルを指定したとします。 Fileshare サーバは、起動時に、recover.L01 というログファイルを作成し、このファイルに更新を記録します。 回復ログファイルをバックアップすると、Fileshare サーバは、現在のログファイル recover.B01 に別の名前を付けて保存し、recover.L02 という新しいファイルを作成します。 これで、Fileshare サーバがシャットダウンした場合でも、2 つの回復ログファイルがあることになります。recover.B01 は、開始ログファイル、recover.L02 は、継続ログファイルです。 開始ログファイルは 1 つしかありませんが、継続ログファイルはいくつあってもかまいません。

回復操作を実行する場合には、ロールフォワード回復ユーティリティは、最初に開始ログファイルを処理し、次に作成順に従って継続ログファイルを処理します。

データベース参照ファイルのエントリを使用してデータファイルを更新すると、ログ処理を明示的に解除しない限り、ログが記録されます。

オペレーティングシステムによっては、キャッシュを使用するので、ログファイルに書き込まれた情報をすべてディスクに物理的に書き込めるわけではありません。 Fileshare サーバは、定期的にオペレーティングシステムを呼び出し、ログファイルの更新を書き込むように指示します。 デフォルトでは、ログファイルに 100 レコード分が書き込まれるたびに、ログファイルがフラッシュされます。 この間隔を変更するには、ログファイル名をデータベース参照ファイルに追加するときに /lc (ログカウント) オプションを使用します。 ログカウントを 0 に設定すると、Fileshare サーバは、ディスクへ更新をフラッシュするためにオペレーティングシステムを呼び出すことはありません。 そのかわり、今度はオペレーティングシステムがディスクへのログファイルのフラッシュを制御します。

COMMIT 操作が行われるたびに、ログファイルの更新もフラッシュされます。

システム障害の発生時にトランザクションが未処理の場合には、ロールフォワード回復ユーティリティは、ファイルが回復すると、トランザクションを暗黙的にロールバックします。

ロールフォワード回復ログ処理は、性能に重大な影響を与えます。 そのため、この機能が必要でないファイルについては、データベース参照ファイルで /o l オプションを使用して、ログを解除できます。 または、データベース参照ファイルからこれらのファイルエントリをまとめて削除することもできます。

理想的な回復ログの使用方法は、次のとおりです。

  1. データファイルをバックアップするたびに (できれば毎日)、Fileshare サーバをシャットダウンします。 ロールフォワード回復ログファイルには、Fileshare サーバの起動時以降の、データベースファイルに対するすべての更新情報が含まれます。

  2. データファイルをバックアップします。 データファイルをバックアップすると、ログファイルは古くなるので (最新バックアップ以降の更新に関するログのみが必要なため)、削除できます。

  3. Fileshare サーバを再起動します。 新しいログファイルが作成され、そこに、その後のデータベースファイルに対する更新のログが記録されます。 システム障害のためにデータを損失した場合には、最新のデータベースバックアップを復元し、ロールフォワード回復ユーティリティを使用して、ログファイルに記録された更新を再適用します。

注:データベース参照ファイルのバックアップディレクトリを指定すると、Fileshare サーバにより、この一連の操作を自動的に実行できます。 詳細については、『データベースの自動バックアップとロールフォワード回復』の項を参照してください。


更新ログを大量に記録すると、ログファイルが非常に大きくなることがあります。 ログファイルがあるディスクがいっぱいになると、ログファイルにレコードを書き込むことができなくなります。 この場合は、ログファイルが不完全になり、Fileshare サーバが強制終了します。 ログファイルの空きディスク容量がディスクの総容量に対する特定の割合を下回ると、警告メッセージが表示されます。 この割合は、データベース参照ファイルの /p オプションにより設定できます。 この警告が表示された場合は、Fileshare サーバを終了し、データファイルの新しいバックアップを作成してください。 この処理により、 Fileshare サーバの再起動時に、古いログファイルを廃棄し、新しいログファイルで作業を続けることができます。

警告メッセージを無視し、ログファイルの容量が増大し続けた結果、使用可能な空きディスク容量が 200,000 バイト未満になると、Fileshare サーバは処理を中断します。 Fileshare サーバは、エラーメッセージ FS030 を返し、古いログファイルをリモートでバックアップするか、または手動で削除するまで、新しいログファイルでの処理を再開しません。

ロールフォワード回復ユーティリティ

ロールフォワード回復ユーティリティは、システム障害の発生後にデータファイルへの更新を回復する機能です。


注:ロールフォワード回復ユーティリティは、更新内容が回復ログファイルに記録されている場合に、データベースを回復するためのみに使用できます。詳細については、『ロールフォワード回復ログ処理』の項を参照してください。


ロールフォワード回復処理を行う前に、次の点を確認します。

ロールフォワード回復ユーティリティを起動するには、/r (回復) オプションを使用します。 ロールフォワード回復ユーティリティを起動する場合は、データベース参照ファイルを指定する必要があります。その例を次に示します。

fs /r dbase.ref [options]

この場合には、dbase.ref は、ロールフォワード回復ユーティリティで使用するデータベース参照ファイルの名前です。 このファイル名は、Fileshare サーバが動作中に使用するデータベース参照ファイルと同じ名前でなければなりません。 ロールフォワード回復ユーティリティは、データベース参照ファイルを読み込み、ロールフォワード回復ログファイルの場所と名前、および、回復するデータファイルの名前を決定します。


注:ロールフォワード回復ユーティリティを起動する前に、データベース参照ファイルのメンテナンスユーティリティ (/e オプション) を使用して、データベース参照ファイルから不要なエントリを消去すると、復元するデータファイルを選択できます。


ロールフォワード回復ユーティリティでは、次のオプションを指定できます。

/dt date-time

このオプションでは、ロールフォワード回復ユーティリティにより、指定した時間までに行われたデータファイルへの更新を復元するように指定します。 date-time の形式は、YYMMDDHHMMSS (年、月、日、時、分、秒) で、数字で指定します。 このオプションを指定しない場合には、ロールフォワード回復ユーティリティは、ロールフォワード回復ログファイルに記録されているすべての更新を適用します。

fs /r dbase.ref /dt 931231235959

このコードでは、データベース参照ファイル dbase.ref を使用して、ロールフォワード回復ユーティリティを起動します。 この場合は、1993 年 12 月 31 日までに行われた更新のみが回復します。

/v

このオプションでは、ロールフォワード回復ユーティリティを使用して、検索中の回復ログファイルに関する追加情報と格納されているディレクトリを表示します。

更新は複数のログファイルに記録できます (詳細については、『ロールフォワード回復ログ処理』の項を参照)。 ロールフォワード回復ユーティリティは、ログファイルディレクトリで開始ログファイルを検索します。 開始ログファイルが見つからない場合は、このログファイルディレクトリで開始ログファイルのバックアップファイルを検索します。 ここでも開始ログファイルが見つからず、データベース参照ファイルで指定したバックアップディレクトリがある場合は、このバックアップディレクトリでも同じ手順で検索を繰り返します。 ロールフォワード回復ユーティリティが開始ログファイルを検出できた場合は、回復手順が始まります。検出できない場合には、エラーが表示され、回復手順は開始されません。

開始ログファイルの処理が完了すると、ロールフォワード回復ユーティリティは継続ログファイルを検索します。 回復ログファイルのバックアップを実行していない場合には、継続ログファイルは存在しないため、回復処理は終了します。 ロールフォワード回復ユーティリティは、継続ログファイルを、まずログファイルディレクトリで、次にログファイルバックアップディレクトリで検索します。 すべての更新が回復し、データファイルに適用されるまで、回復プロセスは、継続ログファイルを使用して回復処理を続行します。

トランザクションの処理中にサーバが終了すると、処理中のトランザクションはログに記録されますが、コミットされません。 また、サーバを強制終了すると、開いているファイルはすべて、トランザクション中であってもクローズとしてログに記録されます。 ロールフォーワード回復処理ではこれらのトランザクションをコミットできないため、その後に続く通常のクローズは無効となります。 このような状況になった場合は、次のメッセージが表示されます。

"FS290-W コミットされていないトランザクションが記録されました。トランザクションを完了できません。"

このメッセージの後に、トランザクションを完了できないファイル名が示されます。

データベース連続番号

データベース連続番号を使用すると、データファイルと対応するログファイルの同期を取るために、データファイルのグループをリンクできます。

ログファイルに格納されている連続番号は、連続番号を指定した各データファイルのヘッダーに自動的に格納されます。 連続番号は、Fileshare サーバを起動するたびに増加します。 ロールフォワード回復ユーティリティを機能させるには、すべてのデータファイルにログファイルと一致する連続番号を指定しておく必要があります。 データファイルの連続番号が一致しない場合には、Fileshare サーバは次のメッセージを表示し、起動に失敗します。

FS038-S ファイル <filename> で、一致する連続番号が見つかりません。

この場合は、考えられるエラー原因は次のとおりです。

データベース参照ファイルに登録したデータファイルについては、すべて、デフォルトでデータベース連続番号の確認を行います。 連続番号の確認機能を解除するには、データベース参照ファイルの /o s (連続番号の省略) オプションを使用します。 各ファイルで連続番号の確認を行わない場合には、システム管理者は、Fileshare システムに正しいバージョンのファイルがインストールされていることを確認する必要があります。

連続番号は、可変長のレコードファイルヘッダーをもつデータファイルにのみ使用できます。 次のファイル構成では、ヘッダーを含まないため、連続番号の確認はできません。

固定長レコードのデータファイルに連続番号を適用する場合は、可変長レコードのデータファイルとして再作成してください。 ファイルを再作成するには、事前に COBOL プログラムでファイル定義を変更します。

固定長レコードのデータファイルを作成する場合のコード例

FD account-file.
01 account-file-record.
   03 account-file-prime pic x(4).

上記のファイルに対応する可変長レコードのデータファイルを作成する場合のコード例

FD account-file recording mode is variable.
01 account-file-record.
   03 account-file-prime pic x(4).

データベース連続番号を利用するために、Fileshare クライアントの構成やプログラムを変更する必要はありません。

データベース連続番号 - Fileshare サーバ

データベース参照ファイルに登録したデータファイルについては、デフォルトでデータベース連続番号の確認を行います。 データベース連続番号を確認する必要がないファイルについては、連続番号を解除できます。解除するには、データベース参照ファイルにあるこのデータファイルのエントリに対して /o s (連続番号の省略) オプションを適用します。

Windows
fs /d dbase.ref /l \logdir\log.dat
fs /d dbase.ref /f test1.dat
fs /d dbase.ref /f test2.dat /o l
fs /d dbase.ref /f test3.dat /o s

UNIX
fs -d dbase.ref -l /logdir/log.dat
fs -d dbase.ref -f test1.dat
fs -d dbase.ref -f test2.dat -o l
fs -d dbase.ref -f test3.dat -o s

このコマンドの内容は、次のとおりです。

データベースの自動バックアップとロールフォワード回復

Fileshare でロールフォワード回復を目的とした更新ログ処理を理想的に行うには、次の方法を使用します。

  1. Fileshare サーバを定期的にシャットダウンします。

  2. すべてのデータベースファイルのバックアップを作成します。

  3. Fileshare サーバを再起動し、新しい回復ログファイルを使用します。

詳細については、『ロールフォワード回復ログ処理』の項を参照してください。

/backup オプションを使用して、データベース参照ファイルのバックアップディレクトリ名を指定すると、上記の操作が自動で行われます。 次に例を示します。

fs /d dbase.ref /backup c:\backdir

このコマンドでは、c:\backdir をバックアップディレクトリとして指定するデータベース参照ファイル dbase.ref にエントリを追加します。 バックアップディレクトリに対しては、完全パスを指定できます。完全パスを指定しない場合は、Fileshare サーバの現在のディレクトリに対する相対パスとして判断されます。

このようにしてバックアップディレクトリを設定すると、Fileshare サーバは、起動時に、データベース参照ファイルで指定したすべてのデータファイルをディレクトリ c:\backdir にコピーします。 また、回復ログファイルが存在する場合、Fileshare サーバはそのログファイルを削除します。これは、データベースファイルがバックアップされたためログファイルのデータが古いためです。

Fileshare サーバの動作中は、ログ処理を設定したファイルに対するすべての更新が、通常どおりログファイルに記録されます。 次に Fileshare サーバを再起動したときに、再びデータベースファイルをバックアップし、ログファイルを廃棄します。 ただし、Fileshare サーバの以前のセッションが正常にシャットダウンされておらず、有効な終了レコードがログファイルに書き込まれていないこと (たとえば、システムの故障などが原因で) を検出すると、Fileshare は、自動的にロールフォワード回復機能を起動します。 この機能により、データベースファイルの以前のバックアップを自動的に復元し、ログファイルの記録に従ってすべての更新を回復します。 回復が正常に完了すると、Fileshare サーバは通常どおりに起動します。

バックアップディレクトリがデータベース参照ファイルで指定されていると、Fileshare サーバを起動する前に、手動でロールフォワード回復ユーティリティを実行できます。 ロールフォワード回復ユーティリティは、回復処理を開始する前に、以前のバックアップを自動復元します。


注:データベースの自動バックアップ機能の目的は、最新の Fileshare ログファイルに、前回データベースのバックアップが行われてから追加された更新のみを含め、データベース管理者が理想的な手順でロールフォワード回復を行えるようにすることです。 データベースファイルを手動で追加または置換した場合には、Fileshare はこれを検出できず、正しくないバージョンのファイルをバックアップまたは復元する可能性があります。そのため、データの完全性を維持できなくなります。 データベースファイルは手動で置換しないようにしてください。Fileshare では、データベース全体をバックアップするためにサーバを終了するような操作のみを行うようにしてください。


データベースの自動バックアップを設定するために、バックアップディレクトリを指定した場合は、/o l オプションを使用して、データベース参照ファイルで宣言されたデータファイルに対するログ処理を解除できません。 データベース参照ファイルで指定されている各ファイルのログ処理をアクティブにすると、Fileshare は、バックアップディレクトリからバックアップバージョンをコピーしたときに、確実にすべての更新を回復できます。 自動バックアップを必要としないファイルがある場合には、データベース参照ファイルからそれらのファイルを削除してください。

たとえば、一晩でシステム全体のバックアップを行う場合のように、Fileshare ファイルをバックアップする必要がある場合は、Fileshare マネージャの API 関数を使用して Fileshare をシャットダウンし、すべてのデータベースファイルをバックアップしてから、新しいログファイルを作成して再起動します。 この処理が完了したら、Fileshare バックアップディレクトリの永久ハードコピーを作成することをお奨めします。詳細については、『高度な操作』の章にある『Fileshare マネージャ』の項を参照してください。

fs /d dbase.ref /l logfile
fs /d dbase.ref /backup c:\backdir
fs /d dbase.ref /f c:\accounts\customer.dat
fs /d dbase.ref /f c:\finance\history.dat

このコマンドは、次の作業を実行します。

Fileshare サーバは、起動時に、これらのデータファイルをディレクトリ c:\backdir に自動的にバックアップします。 Fileshare サーバの動作中にログファイルがバックアップされた場合も、バックアップファイルは c:\backdir ディレクトリに格納されます。 ロールフォワード回復ユーティリティを起動すると、c:\backdir のバックアップファイルは元のディレクトリで復元され、ログファイルに記録された更新が再適用されます。

データベース参照ファイルのメンテナンス

データベース参照ファイルには、Fileshare サーバが使用する Fileshare の機能、および、この機能を適用するファイルを決定するための情報が記述されています。 ここでは、ここまですでに説明した機能を利用するための、データベース参照ファイルの作成方法と更新方法について説明します。


注:


データベース参照ファイルのメンテナンスユーティリティは、/d (データベース) オプションを使用して起動します。次に例を示します。

fs /d dbase.ref [options]

パラメータの内容は、次のとおりです。

dbase.ref データベース参照ファイルの名前です。 データベース参照ファイルが存在しない場合には、新規作成されます。
options データベース参照ファイルで実行する操作を指定するオプションです。 データベース参照ファイルのメンテナンスユーティリティを起動するたびに、指定したデータベース参照ファイルに対してレコードの追加や削除を行います。

データベース参照ファイルには、次の 4 種類のレコードを追加できます。

詳細については、後述します。

回復ログファイルレコード

/l オプションを使用すると、回復ログファイルの名前を指定できます。たとえば、次のように指定します。

fs /d dbase.ref /l logfilename

データベース参照ファイルには、1 つの回復ログファイルレコードしか記述できません。

回復ログファイルレコードには、次のような指定ができます。

ディスク容量の警告 (/p)

/p オプションを使用すると、ログファイルを含むドライブの空き容量がなくなりそうな場合に Fileshare サーバが警告を表示する基準を指定できます。

fs /d dbase.ref /l logfilename /p nnn

この場合は、nnn にはディスクの空き容量の割合を指定し、実際の空き容量がこの値を下回ると Fileshare サーバが警告メッセージを表示します。 デフォルト値は 5 です。つまり、Fileshare サーバは、ログファイルを含むドライブの空き容量が 5% 未満になったときに警告メッセージを表示します。

ログファイルのフラッシュ (/lc)

/lc オプションを使用すると、ログファイルをディスクにフラッシュする頻度を指定できます。

fs /d dbase.ref /l logfilename /lc nnn

この場合は、nnn には Fileshare サーバがオペレーティングシステムを呼び出してログファイルバッファをディスクにフラッシュするまでにログファイルに書き込むレコード数を指定します。 デフォルト値は 100 です。つまり、Fileshare サーバは、ログファイルに 100 レコード分を書き込むごとに、このログファイルをディスクにフラッシュします。 また、Fileshare サーバは COMMIT 操作を行うたびに、ログファイルを自動的にフラッシュします。

ログファイルが Fileshare サーバの動作しているマシンにない場合、またはオペレーティングシステムの制約により Fileshare でログファイルをフラッシュできない場合には、Fileshare サーバは、ログファイルをフラッシュできません。 この場合は、/lc 1 オプションを設定すると、Fileshare サーバがログファイルを開くときにライトスルーを指定します。 オペレーティングシステムがファイルに対してライトスルーをサポートしていると、ログファイルはディスクに書き込まれます。

ログファイルレコードの消去 (/e)

/e オプションを使用すると、回復ログファイルレコードを消去できます。

fs /d dbase.ref /l logfilename /e

データベース参照ファイルを作成した後にレコードを削除する方法は、他にありません。

fs /d dbase.ref /l \log\log.dat /p 10 /lc 200

この例では、ディレクトリ log のログファイルとして log.dat を指定します。 データファイルに対するログ処理を明示的に解除している場合を除き、このデータベース参照ファイルで指定するすべてのデータファイルの更新内容は、このログファイルに記録されます。 /p オプションでは、ログファイルが置かれているドライブの空き容量が 10% 未満になったときに、Fileshare サーバが警告メッセージを表示するように指定します。 /lc オプションでは、ログファイルに 200 レコード分が書き込まれるたびに、Fileshare サーバがこのログファイルをディスクにフラッシュするように指定します。

ファイル名レコード

/f オプションを使用すると、ファイル名レコードを指定できます。たとえば、次のように指定します。

fs /d dbase.ref /f filename

このコマンドでは、データベース参照ファイルに含めるデータファイルを指定しています。

データベース参照ファイルで指定したすべてのファイルでは、ログ処理が可能で、ログ処理をサポートするファイル構成については、デフォルトでデータベース連続番号が使用可能です。

ファイル名レコードには、次のような指定ができます。

代替のファイル名 (/af)

/af オプションを使用すると、ファイル名レコードに代替のファイル名を指定できます。

fs /d dbase.ref /f filename /af alternate-filename

この場合は、Fileshare サーバがデータファイル filename へのアクセス要求を受けるたびに、かわりに alternate-filename へアクセスします。

仮想ファイルハンドラ (/ap)

/ap オプションを使用すると、ファイル名レコードに仮想ファイルハンドラを指定できます。

fs /d dbase.ref /f filename /ap program-name

この場合は、program-name には、データファイルですべての入出力要求を処理するために Fileshare サーバが呼び出す仮想ファイルハンドラを指定します。 『高度な操作』の章にある『仮想ファイルハンドラ』の項を参照してください。

/f に入力するファイル名 (/ap のエントリに対応) の末尾にワイルドカードを記述し、ファイルのグループが指定された仮想ファイルハンドラに要求を渡すように指示できます。

データとキーの圧縮 (/k)

/k オプションを使用すると、ファイル名レコードのデータとキーの圧縮を指定できます。次に例を示します。

fs -d dbase.ref /f filename /k DnnnIx

この場合は、nnn には、データ圧縮ルーチン番号を指定し、x には、キー圧縮番号を指定します。 nnnx の有効値は、コンパイラ指令 DATACOMPRESS および KEYCOMPRESS に対して指定できる値と同じです。

ログ処理の解除 (/o l)

/o l オプションを使用すると、ファイルのログ処理を解除できます。

fs /d dbase.ref /f filename /o l

この場合は、filename のログ処理を解除します。


注:バックアップディレクトリレコードを指定することにより、データベースの自動バックアップを使用可能にした場合は、ファイルに対するログ処理を解除することはできません。


データベース連続番号の解除 (/o s)

/o s オプションを使用すると、ファイルに対するデータベース連続番号を解除できます。

fs /d dbase.ref /f filename /o s

この場合は、ファイル filename のデータベース連続番号を解除します。

トランザクション処理の解除 (/o t)

/o t オプションを使用すると、ファイルのトランザクション処理を解除できます。

fs /d dbase.ref /f filename /o t

この場合は、ファイル filename のトランザクション処理を解除します。 このデータファイルに対しては、SELECT 文の WITH ROLLBACK 句が無視されます。 このオプションをデータベース参照ファイルに設定すると、プログラムで指定されているすべてのトランザクション処理を無効にします。

ファイル名レコードの消去

/e オプションを使用すると、ファイル名レコードを消去できます。次に例を示します。

fs /d dbase.ref /f filename /e

この場合は、データベース参照ファイルからレコードを消去します。データベース参照ファイルを作成した後にレコードを削除する方法は、他にありません。

fs /d dbase.ref /f \accounts\nomlgr.dat /k d001i7

この例では、ディレクトリ accounts のデータファイル nomlgr.dat が Fileshare サーバで作成されている場合には、データ圧縮とキー圧縮が実行されます。 d001 オプションを指定すると、使用するデータ圧縮ルーチンは、DATACOMPRESS"1" コンパイラ指令でプログラムをコンパイルした場合と同じ処理を行います。 i7 オプションを指定すると、使用するキー圧縮は、KEYCOMPRESS"7" コンパイラ指令でプログラムをコンパイルした場合と同じ処理を行います。 これは、プログラムで指定されたすべてのデータ圧縮またはキー圧縮より優先します。

fs /d dbase.ref /f \accounts\salesday.dat /o tl

この例では、ディレクトリ accounts のデータファイル salesday.dat に対してプログラムで指定されているトランザクション処理をすべて無視するように指定します。 また、このファイルに対するログ処理も解除されます。

fs /d dbase.ref /f \ref\clients.dat /af \oldref\oldclnts.dat /o s

この例では、ref のデータファイル clients.dat に対するすべての入出力要求が、ディレクトリ oldref のデータファイル oldclnts.dat にリダイレクトされるように指定します。 さらに、このファイルに対するデータベース連続番号が解除されます。

fs /d dbase.ref /f \accounts\saleslgr.dat

この例では、ディレクトリ accounts のデータファイル saleslgr.dat のログ処理とデータベース連続番号を使用可能にします。デフォルトでは、ログ処理とデータベース連続番号は、データベース参照ファイルにリストされているすべてのデータファイルに対して使用可能です。

fs /d dbase.ref /f \orders\week10.dat

この例では、ディレクトリ orders のデータファイル week10.dat に対して、ログ処理とデータベース連続番号を使用可能にします。デフォルトでは、ログ処理とデータベース連続番号は、データベース参照ファイルにリストされているすべてのデータファイルに対して使用可能です。

ファイル文字列レコード

/fs オプションを使用すると、ファイル文字列レコードを指定できます。次に例を示します。

fs /d dbase.ref /fs string1 /af string2

この場合は、ファイル名が string1 で始まるすべてのデータファイルについて、 string1 が文字列 string2 に置き換えられるように指定します。

ファイル文字列レコードの消去

/e オプションを使用すると、ファイル文字列レコードを消去できます。

fs /d dbase.ref /fs string /e

この場合は、データベース参照ファイルからレコードを消去します。データベース参照ファイルを作成した後にレコードを削除する方法は、他にありません。

fs /d dbase.ref /fs c:\accounts\ /af c:\lastyear\accounts\

この例では、ファイル名の前にある文字列 c:\accounts\ が文字列 c:\lastyear\accounts\ に置き換えられるように指定します。 /fs オプションで指定した文字列は、Fileshare サーバの現在のディレクトリと比べて、拡張されないことに注意してください。

バックアップフォルダレコード

/backup オプションを使用すると、自動的にバックアップディレクトリを指定できます。次に例を示します。

fs /d dbase.ref /backup c:\backup

この場合は、Fileshare サーバが、起動時に、データベース参照ファイルで指定したすべてのファイルをディレクトリ c:\backup に自動的にコピーするように指定します。

関連情報
はじめに
標準的な操作
構成
セキュリティ
高度な操作
UNIX で使用する Fileshare
通信
エラー処理
Fileshare サーバのメッセージ