このドキュメントでは、Caché GBLOCKCOPY ルーチンを実行してグローバルをコピーする方法と手順について説明します。
概要
GBLOCKCOPY は、データベース間でグローバルのコピーを高速に行う Caché ルーチンです。これはターミナルと対話形式で実行するか、バックグラウンドのジョブとして 1 以上のグローバルをコピーするバッチに構成されます。GBLOCKCOPY には組み込みのモニタと、グローバル・コピーの複数の進行を記録するための複数のリポートが含まれます。システム障害が発生した場合、GBLOCKCOPY は中断した後に再開します。
Note:
GBLOCKCOPY ルーチンは、SetKill に現在アクセスしていないグローバルでのみ、使用されます。SetKill が、他のデータベースやネームスペースにコピーされているソース・グローバルで発生した場合、コピー先のグローバルで発生する結果は予測できません。SetKill は、コピーが実行されているソース・データベース内の、他のグローバルで実行されます。これらは、コピーに影響を与えることなく、コピー先のグローバル、データベース、またはネームスペースで実行されます。
GBLOCKCOPY がグローバルを新規のデータベースにコピーするとき、保護、ジャーナル属性、照合タイプ、および Keep 属性を含むソース・グローバルの同じプロパティを持つグローバルをそこに作成します。唯一の例外は、グローバルが以下の照合の 1 つの場合です。
上記の場合、照合は Caché 標準に自動的に変更されます。
GBLOCKCOPY の使用
GBLOCKCOPY は、以下のように異なる複数の演算で使用されます。
GBLOCKCOPY の実行
GBLOCKCOPY を実行する前 (またはアップグレードを実行する前) に、ご使用のデータベースのオペレーティング・システムの完全なバックアップを作成し、他のデータベースとの衝突がないことを確実にするために整合性チェックを実行します。
Note:
GBLOCKCOPY の実行を高速にするため、一時データやスクラッチ・データ、および不必要な古いデータはすべて削除します。ISM のアップグレードには、アップグレードの前に削除してください。Caché の 2 KB ページ・サイズから 8 KB ページ・サイズに変換する場合は、GBLOCKCOPY を実行する前に削除してください。
GBLOCKCOPY のバッチ機能を使用して、同時に実行するために変換バッチを設定することができます。“Auto Create a Batch” オプションを選択します。このオプションは、システム上のデータベースのリストに対して ^SYS("UCI") グローバルを調査します。2 KB ページ・サイズを使用しているデータベースが検出された場合、変換バッチにオプションが追加されます。変換バッチが一度設定されると、バッチを実行するオプションを選択することができます。変換バッチが実行されている間、Monitor、または Batch Report を使用して進行状況を監視することができます。
Note:
データベースを GBLOCKCOPY で変換している間は、データベースへアクセスしないようにしてください。GBLOCKCOPY の実行中にアクセスすると、予測できない結果を生じる可能性があります。同じシステム上で、GBLOCKCOPY で変換しないデータベースは、安全に使用することができます。
以下は、“Auto Create a Batch” オプションを使用する例です。
%SYS>d ^GBLOCKCOPY

This routine will do a fast global copy from a database to another database or
to a namespace. If a namespace is the destination, the global will follow any
mappings set up for the namespace. 

 
1) Interactive copy
2) Batch copy
3) Exit
 
Option? 2
 
1) Manage Batches
2) Run a Batch
3) Restart a Batch
4) Add Processes to a running Batch
5) Stop a Running batch
6) Monitor Running Batch
7) Batch Report
8) Exit
 
Option? 1
 
1) Create a Batch
2) Edit a Batch
3) List Batches
4) Delete a Batch
5) Auto create a Batch
6) Exit
 
Option? 5
 
1) Convert 2K DB to 8K DB
2) Convert OPENM/ISM DB
3) Both
4) Exit
 
Option? 1
 
Batch name to auto create? CVT2K
 
Detected 2K c:\temp\a\CACHE.DAT, convert to 8K CACHE.DAT? Yes => Yes
Detected 2K c:\temp\x\CACHE.DAT, convert to 8K CACHE.DAT? Yes => Yes
Detected 2K c:\temp\z\CACHE.DAT, convert to 8K CACHE.DAT? Yes => No
 
Auto creating the following database conversions:
 
Convert 2K c:\temp\a\CACHE.DAT => 8K c:\temp\a\CACHE.DAT
Convert 2K c:\temp\x\CACHE.DAT => 8K c:\temp\x\CACHE.DAT
 
Confirm auto creation of batch CVT2K? No => yes
 
Database c:\temp\a\CACHE.DAT renamed to c:\temp\a\old\CACHE.DAT
Database c:\temp\x\CACHE.DAT renamed to c:\temp\x\old\CACHE.DAT
 
Batch Name: CVT2K  0 of 0 Processes running, 0 per directory
 # Source DB=>Destination DB/NS                  Last Update Done/ToDo/Err State
-- ----------------------------                  ----------- ------------- -----
 1 c:\temp\a\old\=>c:\temp\a\                                   0/  15/  0 Queue
 2 c:\temp\x\old\=>c:\temp\x\                                   0/  15/  0 Queue
 
Auto creation of batch CVT2K complete
 
1) Convert 2K DB to 8K DB
2) Convert OPENM/ISM DB
3) Both
4) Exit
 
Option? 4
 
1) Create a Batch
2) Edit a Batch
3) List Batches
4) Delete a Batch
5) Auto create a Batch
6) Exit
 
Option? 6
 
1) Manage Batches
2) Run a Batch
3) Restart a Batch
4) Add Processes to a running Batch
5) Stop a Running batch
6) Monitor Running Batch
7) Batch Report
8) Exit
 
Option? 2
 
Batch name to run? ?
 
Name    #  Source DB=>Destination DB/NS                       Globals  Status
----    -  ----------------------------                       -------  ------
CVT2K   1  c:\temp\a\old\=>c:\temp\a\                         All      Queue
        2  c:\temp\x\old\=>c:\temp\x\                         All      Queue
 
 
Batch name to run? CVT2K
How many copy processes do you want to run at once? 2 => 
How many of these copy processes do you want to run for each directory? 1 => 
Confirm copy? Yes => 
GBLOCKCOPY を使用したアップグレード・タスク
GBLOCKCOPY ルーチンを使用して、アップグレードに関連する複数のタスクが実行できます。
GBLOCKCOPY を使用してデータベースを変換する
Caché をアップグレードした後、GBLOCKCOPY ルーチンを使用して以下の処理を実行します。
Note:
さらに高度なパフォーマンスを得るためには、既存の 2 KB ページ・サイズのデータベースから 8 KB ページ・サイズのデータベースへの変換を推奨しています。これは、アップグレード時でも、後からでも実行することができます。データベースは、データベースの停止時間やディスクの空き容量にしたがって、1 度に 1 つ、あるいは複数変換することができます。
%SYSCONV と GBLOCKCOPY の相違点
%SYSCONV ルーチンは MUMPS.DAT データベースの名前を CACHE.DAT に変換し、ルーチン・ソースとオブジェクト・コードを保存する配置済みのグローバルの変換を実行し (余分なディスク容量は必要としません)、ルーチンをリコンパイルします。データベースは 2 KB ページ・サイズを使用します。%SYSCONV ルーチンは、ISM 5.10/6.4 のアップグレード用のみに使用します。これは、余分のディスク容量を使用しないで、1 度に 1 ノード分のデータのみ移動するため、低速で実行します。
GBLOCKCOPY ルーチンは、元のデータベースの完全なコピーを作成するときに、余分のディスク容量を必要とします。元のデータベースは、その 従来の サブ・ディレクトリで CACHE.DAT という名前に変更されます。新規の 8 KB データベースは、データベース・ディレクトリに作成されます。その後、従来の ディレクトリのデータは、新規のデータベースにコピーされます。変換後、変換されたデータが認証されるときに、ユーザは 従来の データベースを削除することができます。GBLOCKCOPY ルーチンは、同じディスク容量での実行を制約されておらず、1 度にすべてのブロックが移動するので、高速で動作します。しかし、(%SYSCONV が行うような) ルーチンやオブジェクト・コードではなく、データベース内の すべての データを移動するので、データベースのサイズによっては %SYSCONV よりも時間がかかってしまうこともあります。
Note:
データベースは 2 KB のページ・サイズから 8 KB のページ・サイズに変換されるので、2 KB バッファに割り当てられた MB 数は、Caché 構成マネージャで 8 KB まで変更する必要があります。
マネージャ・データベースの変換
アップグレード後も、マネージャ・データベースは 2 KB のページ・サイズのままです。GBLOCKCOPY を使用して、以下のようにこれを 8 KB ページ・サイズに変換することができます。
  1. すべてのユーザのシステムへのアクセスを切断します。
  2. GBLOCKCOPY を実行して、異なるディレクトリにマネージャ・データベースをコピーします。
  3. Caché を停止します。
  4. 新規に作成されたデータベースを、マネージャ・ディレクトリにコピーします。
  5. Caché を再起動します。
例を以下に示します。
%SYS>d ^GBLOCKCOPY
 
This routine will do a fast global copy from a database to another database or
to a namespace. If a namespace is the destination, the global will follow any
mappings set up for the namespace.
 
1) Interactive copy
2) Batch copy
3) Exit
 
Option? 1
 
1) Copy from Database to Database
2) Copy from Database to Namespace
3) Exit
 
Option? 1
Source Directory for Copy (? for List)? c:\cachesys\mgr
Destination Directory for Copy (? for List)? c:\temp\mgr
Database c:\temp\mgr\ does not exist
Do you want to create it? No => Yes
Database c:\temp\mgr\ created
All Globals? No => Yes
 
39 items selected from
39 available globals
 
Turn journaling off for this copy? Yes => Yes
Confirm copy? Yes => Yes