既存のカタログのスキャン

最初に、既存のディスク ベースのカタログをスキャンする必要があります。これにより、カタログ内の既存のデータ ファイルの場所を特定する一連の中間ファイルが作成されます。これらのファイルを第 2 段階で使用してディプロイ可能なファイルを作成します。

カタログをスキャンするには次のようにします。

mfdbcatc -s -c <catalog file>

ここで、<catalog file> は既存のカタログ ファイルです。これにより、プレフィックスが付いた R_n.dat という複数のファイルといくつかの構成ファイルを含む一連の中間ファイルが作成されます。

構成ファイルには relative.cfgstatic.cfgenvironment.cfg、および fileshare.cfg があり、カタログに存在する可能性がある異なるタイプの場所に対応するためにそれぞれ使用されます。プロセスの第 2 段階に進む前に、これらのファイルを編集することでディプロイ可能な最終的なファイルに反映することができます。

relative.cfg

この構成ファイルでは、構成済みのカタログ フォルダーの場所を基準とするカタログ エントリを扱います。内容は次のようになります。

0001:<CATALOGFOLDER>/DATA/
0009:<CATALOGFOLDER>/DATALIB/

このエントリは、カタログのカタログ フォルダーの場所にデータ ファイルを含む DATA および DATALIB という 2 つのサブフォルダーがあることを示しています。

データベースにディプロイしたときのカタログの構造を変更する場合は、これらのエントリをこの時点で編集できます。たとえば、DATA フォルダーのファイルをディプロイ時に <CATALOGFOLDER> 内の DB_DATA フォルダーに移動するには、ファイルを次のように編集します。

0001:<CATALOGFOLDER>/DB_DATA/
0009:<CATALOGFOLDER>/DATALIB/

また、現在 <CATALOGFOLDER> に対する相対パス DATA にあるファイルをサーバー myhost のデータストア mydatatable にある DB_DATA という静的な場所に格納するには、ファイルを次のように編集します。

0001:sql://myhost/mydatatable/?type=folder;folder=DB_DATA/
0009:<CATALOGFOLDER>/DATALIB/

さらに、このユーティリティの本来の目的とは異なりますが、<CATALOGFOLDER> に対する相対パス「DATALIB」をローカルのディスクベースのディレクトリの場所に移動することもできます。

0001:<CATALOGFOLDER>/DATA/
0009:C:\DATAFILES\DATALIB\

static.cfg

静的な構成ファイルでは、参照するファイルを静的な (ハードコーディングされた) 場所を使用して扱います。このタイプのファイルは上記とは少し異なり、ファイルが現在格納されている場所ではなく、ディプロイ後にこれらのタイプのファイルが格納される場所の候補を示します。

提示される場所は現在のパスから単純に推定したもので、データベースの識別子にはプレースホルダーが使用されます。内容は次のようになります。

0001:sql://{host}/{instance}/{datastore}/?type=folder;folder=TEST_DATA_/

この結果は、/TEST/DATA/ にあるデータ ファイルがスキャンで識別されたことを示しています。識別子 {host}{instance}、および {datastore} は、この構成ファイルで変更しない限り、更新段階 (第 2 段階) で指定した値に置き換えられます。このファイルのプレースホルダーを編集すると、現在 /TEST/DATA/ にあるファイルを指定したデータベースの特定の場所に移動できます。

0001:sql://MYHOST/MYSTORE/?type=folder;folder=MY_DATA_/

それらを別の相対的な場所に移動することもできます。

0001:<CATALOGFOLDER>/MY_DATA_/

また、静的なディスクの場所に移動することもできます (上記と同様、このユーティリティの本来の目的とは異なります)。

0001:D:\ANOTHER\DISK\MY_DATA\

environment.cfg

ファイルの場所は、環境変数の値を基準にしている場合もあります。ソースの場所を解決するには、変数の値が必要です。この値は、宛先の場所としても機能します。

この構成ファイルは、前述のファイル タイプよりも複雑です。ファイルの場所の一部に環境変数を使用すると、次のようになります。

$MYLOCATION/DATA/

実行時に環境変数 $MYLOCATION が展開され、その値からフル パスが構築されます。たとえば、MYLOCATION=C:\TMP\ の場合、ソースの場所は C:\TMP\DATA\ に解決されます。

ディプロイ段階でも、ソースの場所を特定してデータベースにディプロイするために値を解決できる必要があります。デフォルトでは、上記の例の場合、構成ファイルに次のようなエントリが含まれます。

0001:$MYLOCATION=[<ENV-VALUE>]DATA\,<CATALOGFOLDER>/DATA_/

ソースの部分と宛先の部分がコンマで区切られます。<ENV-VALUE> をこのままにすると、更新/ディプロイ段階の実行時に mfdbcatc ユーティリティで MYLOCATION 環境設定の値がチェックされます。特定の値を使用するように構成ファイルを編集することもできます。

001:$MYLOCATION=[C:\TMP\]DATA\,<CATALOGFOLDER>/DATA_/

また、固定の場所を使用するようにファイルを編集することもできます。

0001:C:\TMP\DATA\,<CATALOGFOLDER>/DATA_/

これらの編集は、ディプロイするファイルの場所に影響します。

宛先の部分 (エントリのコンマの後の部分) で、カタログに対する相対的な場所 (/DATA_/) がファイルのディプロイ先として提示されています。これを前述のエントリ タイプのいずれかに変更すると、ファイルがディプロイされている場所を反映するように新しいカタログ エントリが変更されます。たとえば、別の環境変数エントリにディプロイするには次のようにします。

0001:MYLOCATION=[C:\TMP\]DATA\,NEWLOCATION=[sql://myhost/mydata/?type=folder;folder=DATA/]MOREDATA/

これにより、C:\TMP\DATA\ で見つかったファイルが sql://myhost/mydata/?type=folder;folder=DATA/MOREDATA/ にディプロイされますが、新しいカタログのエントリは $NEWLOCATION/MOREDATA/ を参照します。

また、静的な場所にディプロイすることもできます。

0001:MYLOCATION=[C:\TMP\]DATA\,sql://myhost/mydata/?type=folder;folder=DATA/MOREDATA/

上記と異なるのは、カタログでファイルの sql://myhost/mydata/<filename>?folder=DATA/MOREDATA/ を直接参照していることです。

新しい静的なディスクの場所にディプロイすることもできます。

0001:MYLOCATION=[C:\TMP\]DATA\,C:\TMP\NEWDATA\
注: このタイプのエントリは、生成されるディプロイ スクリプト内にディプロイ文を生成するのではなく、COPY 文を生成します。

fileshare.cfg

このファイルの内容は次のようになります。

0001:$$FSSERVER/DATA/,<CATALOGFOLDER>/FSSERVER_DATA_/

デフォルトでは、カタログに対する相対的な宛先が提示されます。これについても、前述のファイル タイプと同様に特定の場所に変更できます。このファイル タイプは、environment.cfg と同じ編集規則に従います。