ここでは、次のような、データベースの完全性を確保するための 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 サーバーは、アクティブなトランザクションをロールバックし、タイムアウトしたプログラムで確保されているすべてのレコード ロックを解放します。
トランザクション処理を行う各データファイルに対して、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 サーバーにより自動生成されるので、手動で拡張子を指定する必要はありません。 手動で拡張子を指定すると、次のメッセージが表示されます。
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 つしかありませんが、継続ログ ファイルはいくつあってもかまいません。
回復操作を実行する場合には、ロールフォワード回復ユーティリティは、最初に開始ログ ファイルを処理し、次に作成順に従って継続ログ ファイルを処理します。
データベース参照ファイルのエントリを使用してデータファイルを更新すると、ログ処理を明示的に解除しない限り、ログが記録されます。
/f
オプションを使用します。
/o l
(ログの省略) オプションを使用してください。オペレーティング システムによっては、キャッシュを使用するので、ログ ファイルに書き込まれた情報をすべてディスクに物理的に書き込めるわけではありません。 Fileshare サーバーは、定期的にオペレーティング システムを呼び出し、ログ ファイルの更新を書き込むように指示します。 デフォルトでは、ログ ファイルに 100 レコード分が書き込まれるたびに、ログ ファイルがフラッシュされます。 この間隔を変更するには、ログ ファイル名をデータベース参照ファイルに追加するときに /lc
(ログカウント) オプションを使用します。 ログカウントを 0 に設定すると、Fileshare サーバーは、ディスクへ更新をフラッシュするためにオペレーティング システムを呼び出すことはありません。 そのかわり、今度はオペレーティング システムがディスク�
のログ ファイルのフラッシュを制御します。
COMMIT 操作が行われるたびに、ログ ファイルの更新もフラッシュされます。
システム障害の発生時にトランザクションが未処理の場合には、ロールフォワード回復ユーティリティは、ファイルが回復すると、トランザクションを暗黙的にロールバックします。
ロールフォワード回復ログ処理は、性能に重大な影響を与えます。 そのため、この機能が必要でないファイルについては、データベース参照ファイルで /o l
オプションを使用して、ログを解除できます。 または、データベース参照ファイルからこれらのファイルエントリをまとめて削除することもできます。
理想的な回復ログの使用方法は、次のとおりです。
注:データベース参照ファイルのバックアップディレクトリを指定すると、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 クライアントの構成やプログラムを変更する必要はありません。
データベース参照ファイルに登録したデータファイルについては、デフォルトでデータベース連続番号の確認を行います。 データベース連続番号を確認する必要がないファイルについては、連続番号を解除できます。解除するには、データベース参照ファイルにあるこのデータファイルのエントリに対して /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
このコマンドの内容は、次のとおりです。
/o l
オプションは、ログ処理を解除します。 ただし、このファイルに対しても、データベース連続番号の確認を行います。
/o s
オプションは、このデータファイルに対するデータベース連続番号の確認を解除します。 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
オプションを使用)
/lc
オプションを使用)
/e
オプションを使用)/p
オプションを使用すると、ログ ファイルを含むドライブの空き容量がなくなりそうな場合に Fileshare サーバーが警告を表示する基準を指定できます。
fs /d dbase.ref /l logfilename /p nnn
この場合は、nnn にはディスクの空き容量の割合を指定し、実際の空き容量がこの値を下回ると Fileshare サーバーが警告メッセージを表示します。 デフォルト値は 5 です。つまり、Fileshare サーバーは、ログ ファイルを含むドライブの空き容量が 5% 未満になったときに警告メッセージを表示します。
/lc
オプションを使用すると、ログ ファイルをディスクにフラッシュする頻度を指定できます。
fs /d dbase.ref /l logfilename /lc nnn
この場合は、nnn には Fileshare サーバーがオペレーティング システムを呼び出してログ ファイル バッファーをディスクにフラッシュするまでにログ ファイルに書き込むレコード数を指定します。 デフォルト値は 100 です。つまり、Fileshare サーバーは、ログ ファイルに 100 レコード分を書き込むごとに、このログ ファイルをディスクにフラッシュします。 また、Fileshare サーバーは COMMIT 操作を行うたびに、ログ ファイルを自動的にフラッシュします。
ログ ファイルが Fileshare サーバーの動作しているマシンにない場合、またはオペレーティング システムの制約により Fileshare でログ ファイルをフラッシュできない場合には、Fileshare サーバーは、ログ ファイルをフラッシュできません。 この場合は、/lc 1
オプションを設定すると、Fileshare サーバーがログ ファイルを開くときにライトスルーを指定します。 オペレーティング システムがファイルに対してライトスルーをサポートしていると、ログ ファイルはディスクに書き込まれます。
/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
オプションを使用)
/ap
オプションを使用)
/k
オプションを使用)
/o l
オプションを使用)
/o s
オプションを使用)
/o t
オプションを使用)
/af
オプションを使用すると、ファイル名レコードに代替のファイル名を指定できます。
fs /d dbase.ref /f filename /af alternate-filename
この場合は、Fileshare サーバーがデータファイル filename へのアクセス要求を受けるたびに、かわりに alternate-filename へアクセスします。
/ap
オプションを使用すると、ファイル名レコードに仮想ファイル ハンドラーを指定できます。
fs /d dbase.ref /f filename /ap program-name
この場合は、program-name には、データファイルですべての入出力要求を処理するために Fileshare サーバーが呼び出す仮想ファイル ハンドラーを指定します。 『高度な操作』の章にある『仮想ファイル ハンドラー』の項を参照してください。
/f
に入力するファイル名 (/ap
のエントリに対応) の末尾にワイルドカードを記述し、ファイルのグループが指定された仮想ファイル ハンドラーに要求を渡すように指示できます。
/k
オプションを使用すると、ファイル名レコードのデータ圧縮およびキー圧縮を指定できます。次に例を示します。
fs -d dbase.ref /f filename /k DnnnIx
この場合は、nnn には、データ圧縮ルーチン番号を指定し、x には、キー圧縮番号を指定します。 nnn と x の有効値は、コンパイラ指令 DATACOMPRESS および KEYCOMPRESS に対して指定できる値と同じです。
/o l
オプションを使用すると、ファイルのログ処理を解除できます。
fs /d dbase.ref /f filename /o l
この場合は、filename のログ処理を解除します。
注:バックアップディレクトリレコードを指定することにより、データベースの自動バックアップを使用可能にした場合は、ファイルに対するログ処理を解除することはできません。
/o s
オプションを使用すると、ファイルに対するデータベース連続番号を解除できます。
fs /d dbase.ref /f filename /o s
この場合は、ファイル filename のデータベース連続番号を解除します。
/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 に自動的にコピーするように指定します。