グローバルの高速コピーのための ^GBLOCKCOPY の使用法
このページでは、データベース間でグローバルの高速コピーを行うことができる ^GBLOCKCOPY ルーチンの使用法について説明します。このルーチンの制限事項についても必ず確認してください。
概要
^GBLOCKCOPY ルーチンには、インタラクティブとバッチの 2 種類のモードがあります。インタラクティブ・モードでは単一のプロセスを実行しますが、バッチ・モードでは複数のプロセスを並列で構成して実行できます。^GBLOCKCOPY には組み込みのモニタと、グローバル・コピーの複数の進行を記録するための複数のレポートが含まれます。システム障害が発生した場合、^GBLOCKCOPY は中断した後に再開します。
^GBLOCKCOPY がグローバルを新規のデータベースにコピーするとき、保護、ジャーナル属性、照合タイプ、および Keep 属性を含むソース・グローバルの同じプロパティを持つグローバルをそこに作成します。
^GBLOCKCOPY の使用
^GBLOCKCOPY は、以下のように異なる複数の演算で使用されます。
-
データベースから他のデータベース、またはネームスペースに 1 つ以上のグローバルをコピーします — コピー先のデータベースまたはネームスペースにコピーするグローバルを 1 つ以上選択できます。グローバルがコピー先のデータベースに既に存在する場合、ソース・グローバルのデータは既存のデータに結合されます。
-
添え字レベル・マッピングを使用して、1 つのデータベースからのグローバルを複数のデータベースに分割します — グローバルの添え字レベル・マッピング (SLM) でネームスペースを設定することで、データベースのグローバルを新規のネームスペースにコピーすることができます。これにより、SLM を構築するデータベース間でグローバルを分割することができます。
-
複数のデータベース内の添え字マップされたグローバルを、1 つのデータベースに移動します — グローバル全体を含む新規のデータベースを作成します。次に、異なるすべての SLM データベースから新規のデータベースにコピーするバッチで、複数のコピーを設定します。
-
データベースのコピーを作成します — すべてのグローバルを別のディレクトリにコピーすることによって、データベースをそのディレクトリにコピーできます。
-
ECP を通じて他のマシンにグローバルをコピーします — ^GBLOCKCOPY は、ECP ネットワーク接続上の他のマシンへのグローバルのコピーをサポートします。リモート・マシンに対する ECP 接続、およびそれを示すネームスペース・マッピングを設定する必要があります。次に、“Copy from Database to Namespace” オプションを選択し、コピー先としてリモート・ネームスペースを選択します。
-
データベースの未使用スペースを再要求します — 大規模なグローバルがデータベース内で作成されて削除された場合、データベースには未使用の余分なスペースがあることがあります。データベースのすべてのグローバルを新規のデータベースにコピーし、古いデータベースを新しいもので置換すると、このスペースを削除できます。
-
データベース内のポインタを再編成します — データベースがブロックの分割により断片化された場合、そのデータベース内のデータを再編成すると高速なパフォーマンスを得ることができます。これには、データベース内のすべてのグローバルを新規のデータベースにコピーし、古いデータベースを新規のデータベースに置換します。
-
グローバルの照合を変更します — コピー対象の既存グローバルの照合を変更する場合、^GBLOCKCOPY を実行する前に、目的の既定の照合を指定して、コピー先データベースにグローバルを作成できます。
-
Caché または従来のデータベースまたはネームスペースを InterSystems IRIS にインポートします — CACHE.DAT ファイルまたは従来のデータベース・ファイルを IRIS.DAT データベースまたはネームスペースにインポートする場合、コピー元のディレクトリとして存在するディレクトリを選択するだけです。データベースは IRIS.DAT という名前に変更され、データをコピー先のデータベースやネームスペースにコピーすることができるようになります。
^GBLOCKCOPY の実行
^GBLOCKCOPY を実行する前 (またはアップグレードを実行する前) に、ご使用のデータベースのオペレーティング・システムの完全なバックアップを作成し、データベースに破損がないことを確実にするために整合性チェックを実行します。
^GBLOCKCOPY の実行を高速にするため、一時データやスクラッチ・データ、および不必要な古いデータはすべて削除します。
^GBLOCKCOPY の実行では、特定のデータベースにあるすべてのグローバルまたは一部のグローバルのみをコピーできます。このルーチンでは、コピーするグローバルの名前を指定することが要求されます。一部のグローバルのみを参照する場合、構文は次のようになります。
-
glonam と入力すると、コピーするグローバルとして “glonam” を選択します。
-
'glonam と入力すると、選択しているグローバル “glonam” を選択解除します。
-
glonam1-glonam2 と入力すると、“glonam1” から “glonam2” までの範囲のグローバルを選択します。
-
'glonam1-glonam2 と入力すると、“glonam1” から “glonam2” までの範囲のグローバルを選択解除します。
グローバルの選択で使用できるワイルドカード文字は次のとおりです。
-
アンパサンド (&) は任意の 1 文字に一致します。
-
番号記号 (#) は 1 桁に一致します。
-
疑問符 (?) は任意の 1 文字に一致します。
-
アスタリスク (*) は任意の個数の文字に一致します。
グローバルの範囲の指定ではワイルドカード文字を使用できません。
グローバルの一部を選択するときは以下の入力も使用できます。
-
? — 情報入力を列挙します。
-
?L — 利用可能なグローバルをすべて列挙し、選択済みのグローバルを番号記号 (#) で示します。
-
?S — 現在選択されているグローバルを列挙します。
-
?H — グローバル選択構文を列挙します。
^GBLOCKCOPY のバッチ機能を使用して、同時に実行する複数の操作を設定できます。バッチの構成時には、コピー・プロセスの総数と、ディレクトリごとのコピー・プロセスの最大数を入力することが求められます。グローバルごとに最大で 1 つのプロセスを実行できます。バッチ・モードでは、コピー処理の時間が最大グローバルのサイズに比例し、それにストレージの遅延と帯域幅も要因として関与します。バッチが実行されている間、モニタまたはバッチ・レポートを使用して進行状況を監視することができます。
制限事項
コピー期間を通して存在していたグローバル変数はすべてコピー先にコピーされます。ただし、コピー中に発生した SET 操作と KILL 操作は、キャプチャされる場合とされない場合があり、また順番どおりにキャプチャされない場合もあるため、コピー先のグローバルは、特定の時点を表すものではありません。以下のいずれかが当てはまる場合、揮発性のソースで ^GBLOCKCOPY を実行しても安全です。
-
特定の目的 (有効なレポーティング非同期ミラー・メンバ上のデータベースのように、その場限りの目的でのみこれを使用している場合など) において、瞬間的な一貫性は重要ではない。
-
これに続いて、コピーを開始する前から開始するジャーナル・リストアを行う。
同じシステム上の別のデータベース (つまり、^GBLOCKCOPY で処理されていないデータベース) は、こうした制限事項なしに使用することができます。
SYS.Database.Copy()Opens in a new tab クラス・メソッドにも同じ制限事項が適用されます。