このセクションで説明するMUPIPコマンドは、一般的なデータベース操作で使用され、ジャーナリングやレプリケーションなどのより高度な機能の基礎となります。
データベースの内容を保存します。バックアップ操作に関与するすべてのデータベース領域にわたって、一貫性のあるアプリケーションスナップショットを提供します。
MUPIP BACKUPコマンドの形式は次のとおりです:B[ACKUP] -BK[UPDBJNL]={DISABLE|OFF}] -B[YTESTREAM] [-NET[TIMEOUT]] -DA[TABASE] -DBG -[NO]NEWJNLFILES[=[NO]PREVLINK],[NO]S[YNC_IO]] <s0>-</s0>[NO]O[NLINE] -REC[ORD] -REPL[ACE] -REPLINSTANCE=target_location -S[INCE]={DATABASE|BYTESTREAM|RECORD} -T[RANSACTION]=hexadecimal_transaction_number ] region-list[,...] destination-list
重要 | |
---|---|
MUPIP BACKUPは、ジャーナル管理、インスタンスファイル管理、レコードタイムスタンプをデータベースファイルヘッダーに統合するため、SANバックアップ、ディスクミラーリング、ファイルシステムスナップショットなどの他のバックアップテクニックよりも、バックアップアクティビティをより包括的に管理します。他の手法を使用するには、MUPIP FREEZE -ON "*"などのコマンドを使用して、すべてのリージョンを同時に停止し、内部構造の整合性を保つためにファイルを一貫してコピーする必要があります。FISは、GT.Mデータベースをバックアップするための第三者の製品を保証もテストもしていません。 |
MUPIP BACKUPは、データベースバックアップの2つの方法をサポートしています:-BYTESTREAMと-DATABASE 。MUPIP BACKUP -BYTESTREAM は、出力を、ディスク、TCPソケット、パイプなどの広範なデバイスに転送します。MUPIP BACKUP -DABABASEは、出力を、ランダムアクセスデバイス(つまり、ディスク)に転送します。
[NO]ONLINE 修飾子は、MUPIP BACKUP が領域(Region)の更新を中断するかどうかを決定します。たとえば、MUPIP BACKUP -NOONLINEは、すべての領域(Region)の更新を、最初のリージョンで開始してから最後のリージョンを終了するまで中断します。ただし、データベースから読み取るだけのプロセスは中断されません。
デフォルトでは、MUPIP BACKUPは、-DATABASE -ONLINEです。
もし、いずれかの領域(Region)名が既存のアクセス可能なファイルにマップされていない場合、または、宛先リストの要素が無効な場合、BACKUP は、エラーのあるコマンドを拒否します。
region-listは、リスト内の現在のグローバルディレクトリの複数の領域(Region)を指定することができます。領域(Region)は大文字と小文字を区別せず、カンマで区切り、ワイルドカードを使用して指定することができます。どの領域(Region)名でもワイルドカード文字 * と % を含めることができます(シェルによる不適切な拡張からそれらを保護するためにエスケープしてください)。領域(Region)名の展開は、M(ASCII)の照合順序で行われます。
バックアップのタイプに応じて、destination-list(宛先リスト)は単一のディレクトリ、ファイル、パイプコマンド、TCPソケットアドレス(IPv4またはIPV6ホスト名とポート番号の組み合わせ)を含むコンマ区切りの宛先リストです。
領域(Region)リスト項目とdestination-list(宛先リスト)項目は、順番にマッチングされます。最初の領域(Region)は最初の宛先、2番目は2番目の宛先などにマッピングされます。もしGT.Mがディレクトリにマップされた領域(Region)に遭遇した場合、GT.Mは、領域(Region)リスト内のすべての後続領域の宛先としてそのディレクトリを扱います。
GT.Mは、相対タイムスタンプ(トランザクション番号)を使用して BYTESTREAMバックアップと DATABASEバックアップの両方を暗黙的にタイムスタンプします。カスタム制御(SANSまたはミラーディスク)バックアップ・プロトコルのRECORDタイムスタンプを明示的に指定することもできます。これらのタイムスタンプは、その後のバックアップの参照ポイントとして使用することをお勧めします。
進行中のKILLをあきらめてバイパスするには、BACKUP -ONLINEが約1分(1領域あたり)かかります。バックアップは、放棄されたKill がクリアされるのを待つことはありません。
環境変数 gtm_baktmpdir は、mupipバックアップが一時ファイルを作成するディレクトリを指定します。もし gtm_baktmpdir が定義されていない場合、GT.Mは環境変数GTM_BAKTMPDIRが定義されていればそれを使用し、それ以外の場合は現在の作業ディレクトリを使用します。
データベースファイルへのアクセスを制限すると、GT.Mは、MUPIP BACKUPで使用されるセマフォ、共有メモリ、ジャーナル、一時ファイルなど、データベースファイルに関連付けられた共有リソースにこれらの制限を伝播します。
GT.Mは、データベース上で1つの同時 -ONLINEバックアップのみをサポートします。 MUPIP BACKUPは、すでに実行されているBACKUPがあるときに開始されると、BKUPRUNNINGメッセージを表示します。
MUPIP BACKUPは、既存の宛先ファイルの上書きを防ぎます。ただし、宛先がファイルを上書きするシェルコマンドのパイプの場合など、他の宛先を保護することはできません。
MUPIPバックアップを開始する前に | |
---|---|
データベースバックアップを開始する前に、以下のタスクを実行してください。
|
$ mupip backup "*" /gtm/bkup
この例では、すべての領域(Region)のすぐに実行できるデータベースバックアップを作成します。
バックアップデータベースは、ソースデータベースと同じジャーナリング特性を共有します。ただし、BKUPDBJNLを使用すると、バックアップ・データベースのジャーナリングを使用不可にするか、オフにすることができます。ソースデータベースと同じ環境で同じ時間にバックアップデータベースを開こうとする場合は、この修飾子を使用します。
BKUPDBJNL修飾子の形式は次のとおりです:
-BK[UPDBJNL]={DISABLE|OFF}
DISABLEを指定すると、バックアップ・データベース内のジャーナリングを使用不可にします。
オフを指定すると、バックアップデータベースにジャーナリングをオフにします。
任意の時点で、修飾子DISABLEまたはOFFのいずれか1つだけを指定できます。
TCP接続、ファイル(またはバックアップディレクトリ)、または、パイプにMUPIP BACKUPの出力を転送します。もし複数の .dat ファイルがある場合、BYTESTREAM は、TCP接続、増分バックアップファイル、および/または、ディレクトリ、または、パイプへ、カンマ区切りリストで出力を転送します。-SINCE または -TRANSACTION と一緒に使用すると、MUPIP BACKUP は増分バックアップを許可します。つまり、-SINCE または -TRANSACTION で指定された前の時点以降に変更されたデータベース・ブロックが含まれます。
注意 | |
---|---|
MUPIP BACKUPをTCP接続に出力すると、現在のシステム上のディスクI/O帯域幅が節約されます。 |
すべてのバイトストリームバックアップは、データベースファイルとして使用する前にランダムアクセスファイル(MUPIP RESTOREを使用)に復元する必要があります。-BYTESTREAMは、TCP/IP接続またはパイプ経由で、リスニングしている MUPIP RESTOREプロセスに直接出力を送信することもできます。
BYTESTREAM 修飾子の形式は次のとおりです:
-B[YTESTREAM]
-BYTESTREAM は、-SINCE および -TRANSACTION と互換性があります。
-INCREMENTAL の代わりに-BYTESTREAMが推奨されます。上位互換性のために、MUPIPは一時的に廃止予定の -INCREMENTAL を引き続きサポートしています。
選択したすべての領域(Region)のファイルを、ディスクツーディスクでバックアップコピーを作成します。DATABASEバックアップコピーは、ランダムアクセスファイルに復元する必要があるBYTESREAMバックアップとは異なり、すぐに使用できるGT.Mデータベースです。
注意 | |
---|---|
DATABASE修飾子は、磁気テープへのバックアップをサポートしていません。 |
DATABASE修飾子の形式は次のとおりです:
-D[ATABASE]
デフォルトで、MUPIP BACKUP は -DATABASE を使用します。
DATABASE修飾子は、-[NO]NEW[JNLFILES]、-ONLINE、-RECORD修飾子とのみ互換性があります。
-COMPREHENSIVE は、-DATABASE の方を推奨します。上位互換性のために、MUPIP は一時的に廃止予定の -COMPREHENSIVE を引き続きサポートしています。
バイトストリーム BACKUPデータがTCP/IP接続を介して送信されるときのタイムアウト期間を指定します。NETTIMEOUT修飾子の形式は次のとおりです:
NET[TIMEOUT]=seconds
デフォルト値は30秒です。
-BYTESTREAM でのみ使用してください。
バックアップされるデータベースファイルのジャーナリング特性を決定します。確立されたすべてのジャーナリング特性は、新しいジャーナル・ファイルに適用されます。データベースのジャーナリングが有効な時、この修飾子は ONLINEバックアップ(デフォルト)でのみに有効です。
-[NO]NEWJNLFILES[=[NO]PREVLINK], [NO]S[YNC_IO]]
-NEWJNLFILESには、次の3つの値があります:
PREVLINK:Backは、新しいジャーナルファイルを以前の世代のジャーナルファイルとリンクします。これがデフォルト値です。
NOPREVLINK:新しく作成されたジャーナルと以前の世代のジャーナル・ファイルとの間にバックリンクがないことを示します。
SYNC_IO:ディスクに直接コミットするジャーナル・ファイルへのすべてのWRITEを指定します。ハイエンドなディスクサブシステム上では、(例えば、それがこのキャッシュに到達する時に、不揮発性キャッシュを含み、そして、コミットされたデータとみなすシステム)、NOSYNC_IOオプションよりもパフォーマンスが向上する可能性があります。NOSYNC_IOはこのオプションをオフにします。
-NONEWJNLFILESは、ジャーナリングを現在のジャーナルファイルで続行します。引数を受け付けません。
デフォルトは-NEWJNLFILES=PREVLINKです。
MUPIP BACKUP操作がアクティブな間に、他のプロセスがバックアップの結果に影響を与えずにデータベースを更新できることを指定します。ONLINE修飾子の形式は次のとおりです:
-[NO]O[NLINE]
MUPIP BACKUP -ONLINE は、バックアップが開始された時点のデータベースのバックアップを作成します。もし実行中のプロセスが引き続きデータベースを更新するならば、バックアップはそれらの更新は反映しません。
領域(Region)上のMUPIP BACKUP -ONLINEは最大1分間待機し、同時にKILLまたはMUPIP REORG操作が完了することができます。もしKILLまたはMUPIP REORG操作が1分以内に完了しない場合、MUPIP BACKUP -ONLINEは、バックアップに誤ってマークされたビジーブロックが含まれている可能性があるという警告とともにバックアップを開始します。このようなブロックはスペースを無駄にし、オペレータをはるかに危険なエラーに鈍感にすることができますが、それ以外の場合はデータベースの整合性に影響しません。もしこのようなエラーが発生した場合は、KILLまたはMUPIP REORG操作が干渉しにくい場合に、バックアップを停止して再起動する方がよい場合があります。KILLまたはMUPPL REORG操作を実行しているプロセスでMUPIP STOPを実行すると、データベースに誤ってマークされたビジーブロックが残ることがあります。この状況では、GT.Mは進行中のKILLフラグを放棄されたKILLフラグに変換します。もしMUPIP BACKUP -ONLINEがADANDONED_KILLSに遭遇すると、メッセージを出してからバックアップを開始します。ABANDONED_KILLSエラーは、オリジナルのデータベースとバックアップデータベースの両方に、間違ったビジーブロックがある可能性があり、即座に訂正する必要があることを意味します。
デフォルトでは、MUPIP BACKUPは-ONLINEです。
後続のバイトストリーム、データベース、カスタムバックアップ(SANSまたはディスクミラー)プロトコルの参照ポイントをマークするためのデータベースファイル(トランザクション番号の形式)のタイムスタンプです。たとえ、-DATABASEと-BYTESTREAMの両方がそれぞれの相対タイムスタンプをマークしたとしても、-RECORD は追加のタイムスタンプオプションを提供します。MUPIP FREEZE は -RECORD修飾子も提供します。これは、FREEZEを使用してSANまたはディスクミラーベースのバックアップメカニズム用にデータベースを設定できるためです。
RECORD修飾子の形式は次のとおりです:
-R[ECORD]
レファレンスポイントをタイムスタンプするために -RECORD(ハイフン付き)を使用し、MUPIP BACKUP操作の開始点を特定するためにRECORDをキーワード( -SINCE=RECORDのように)として使用します。
-RECORDは、以前に記録されたデータベースファイルのトランザクション識別子を置き換えます。
既存の宛先ファイルを上書きします。
REPLACE修飾子の形式は次のとおりです:
-[REPL]ACE
デフォルトでは、MUPIP BACKUPは宛先ファイルの上書きを防ぎます。-REPLACEは、このデフォルト動作を無効にします。
-REPLACEは、-DATABASEとのみ互換性があります。
レプリケーション・インスタンス・ファイルのバックアップを配置するターゲットの場所を指定します。
注意 | |
---|---|
レプリケーション・インスタンス・ファイルは、常にデータベースファイルでバックアップする必要があります。 |
REPLINSTANCE修飾子の形式は次のとおりです:
-REPLI[NSTANCE]=<target_location>
最後に指定したバックアップ以降に変更されたブロックが含まれます。SINCE修飾子の書式は次のとおりです:
-S[INCE]={DATABASE|BYTESTREAM|RECORD}
D[ATABASE] - 最後のMUPIP BACKUP -DATABASE以降のすべての変更をバックアップします。
B[YTESTREAM] - 最後のMUPIP BACKUP -BYTESTREAM以降のすべての変更をバックアップします。
R[ECORD] - 最後のMUPIP BACKUP -RECORD以降のすべての変更をバックアップします。
デフォルトでは、MUPIP BACKUP -BYTESTREAM は -SINCE=DATABASEとして動作します。
次のものとは互換性がありません:-TRANSACTION 。
BACKUP -BYTESTREAMによって、そのトランザクションおよびそれ以降のすべてのトランザクションによって変更されたすべてのブロックがコピーされる開始トランザクションのトランザクション番号を指定します。TRANSACTION修飾子の形式は次のとおりです:
-T[RANSACTION]=transaction-number
トランザクション番号(transaction-number)は、常に16桁の16進数です。これは DSE DUMP -FILEHEADER の中に "Current transaction"というラベルが付いています。
もしトランザクション番号(transaction-number)が無効な場合、MUPIP BACKUPはエラーを報告し、コマンドを拒否します。
データベースがほとんど空の場合は、DATABASEバックアップよりも高速です。
次の修飾子とは同時利用できません:-DATABASE、-SINCE
注意 | |
---|---|
時間のポイントは、アプリケーションの観点から、すべてのデータベース領域で、同じトランザクション番号を持つことはほとんどないことを、一貫しています。したがって、-TRANSACTION=1を除いて、この修飾子は複数の領域を含むバックアップには有効ではありません。 |
例:
$ mupip backup -bytestream REPTILES,BIRDS bkup
環境変数 gtmgbldir にREPTILES.DATとBIRDS.DATというファイルにマップするREPTILESとBIRDSの領域があるとします(ファイルが存在するディレクトリに関係なく)。次に、上記の例では、最後のDATABASEバックアップ以降、bkupディレクトリにバイトストリームのバックアップファイル REPTILES.DATとBIRDS.DATが作成されます。
例:
$ mupip backup -bkupdbjnl="OFF" "*"
このコマンドは、バックアップデータベースのジャーナリングをオフにします。
例:
$ mupip backup -bytestream "*" tcp://philadelphia:7883,tcp://tokyo:8892
ACN.DATとHIST.DATを指す2つの領域を持つグローバル・ディレクトリがあるとすると、この例では、サーバー philadelphia のポート7883でリッスンしている可能性がある MUPIP RESTOREプロセスへACN.DATのバックアップを作成し、そして、サーバーtokyoのポート8893でリッスンしている可能性がある MUPIP RESTOREプロセスへ HIST.DATのバックアップを作成します。
バックアップとレストアの両方が同じシステム上にある場合でも、<マシン名>と<ポート>を常に指定し、MUPIPのバックアッププロセスの前にMUPIP RESTORE プロセスが開始されていることを確認してください。
例:
$ mupip backup -database -noonline "*" bkup DB file /home/gtmnode1/gtmuser1/mumps.dat backed up in file bkup/mumps.dat Transactions up to 0x00000000000F42C3 are backed up. BACKUP COMPLETED.
このコマンドは、ディレクトリbkupに現在のデータベースのすべての領域のディスクツーディスク(disk-to-disk)バックアップコピーを作成します。GT.Mは、バックアップ操作中にすべての領域をフリーズします。
例:
$ mupip backup -bytestream -nettimeout=420 DEFAULT tcp://${org_host}:6200
このコマンドは、DEFAULT領域のバックアップコピーを作成し、タイムアウトが420秒になります。
例:
$ mupip backup -bytestream DEFAULT '"| gzip -c > online5pipe.inc.gz"'
このコマンドは、DEFAULT領域のバックアップをgzipコマンドに(パイプ経由で)送信します。
例:
$ mupip backup -online DEFAULT bkup DB file /gtmnode1/gtmuser1/mumps.dat backed up in file bkup/mumps.dat Transactions up to 0x00000000483F807C are backed up. BACKUP COMPLETED.
このコマンドは、現在のデータベースのDEFAULT領域のバックアップコピーをディレクトリbkupに作成します。バックアップ操作中に、他のプロセスがデータベースを読み込んで更新することができます。
例:
$ mupip backup -record DEFAULT bkup
このコマンドは参照ポイントを設定し、現在のデータベースのDEFAULT領域のバックアップコピーをディレクトリbkupに作成します。
例:
$ mupip backup -online -record DEFAULT bkup1921 DB file /home/reptiles/mumps.dat backed up in file bkup1921/mumps.dat Transactions up to 0x00000000000F4351 are backed up.
例:
$ mupip backup -bytestream -since=record DEFAULT bkup1921onwards MUPIP backup of database file /home/reptiles/mumps.dat to bkup1921onwards/mumps.dat DB file /home/reptiles/mumps.dat incrementally backed up in file bkup1921onwards/mumps.dat 6 blocks saved. Transactions from 0x00000000000F4351 to 0x00000000000F4352 are backed up. BACKUP COMPLETED.
最初のコマンドは参照ポイントを設定し、現在のデータベースのDEFAULT領域のバックアップコピーをディレクトリbkup1921に作成します。第2のコマンドは、第1のコマンドによって設定された基準点から始まるバイトストリームバックアップを完了します。
例:
$ mupip backup -bytestream -transaction=1 DEFAULT bkup_dir MUPIP backup of database file /gtmnode1/gtmuser1/mumps.dat to bkup_dir/mumps.dat DB file /gtmnode1/gtmuser1/mumps.dat incrementally backed up in file bkup/mumps.dat 5 blocks saved. Transactions from 0x0000000000000001 to 0x0000000000000003 are backed up. BACKUP COMPLETED.
このコマンドは、現在のデータベースのDEFAULT領域のすべての使用中のブロックをディレクトリbkup_dirにコピーします。
例:
$ mupip backup -newjnlfiles=noprevlink,sync_io "*" backupdir
この例では、現在の領域(Region)の新しいジャーナル・ファイルを作成し、グローバル・ディレクトリ内のすべての領域(Region)の以前のジャーナル・ファイル・リンクを切り取り、SYNC_IOオプションを有効にして、ディレクトリbackupdir内のすべてのデータベースのバックアップをとります。
グローバルディレクトリファイル内の情報を使用してデータベースファイルを作成し、初期化します。もしいずれかのセグメントにファイルがすでに存在する場合、MUPIP CREATEはそのセグメントに対して何の動作も行いません。
CREATEコマンドのフォーマット:
CR[EATE] [-R[EGION]=region-name]
単一のオプション -REGION修飾子は、データベースファイルを作成する領域を指定します。
1つのGT.Mデータベースファイルは最大224M(234,881,024)ブロックのサイズになります。たとえば、8KBのブロックサイズでは、データベースファイルの最大サイズは1,792GB(8KB * 224M)です。これは1つのデータベースファイルのサイズです - 論理データベース(Mグローバル変数の名前空間)は、任意の数のデータベースファイルで構成できます。
データベースファイルの作成のために、1つの領域を指定します。デフォルトでは、MUPIP CREATE は、現在のグローバルディレクトリ内にデータベースファイルが存在しないすべての領域のデータベースファイルを作成します。
REGION修飾子の形式は次のとおりです:
-R[EGION]=region-name
MUPIP DOWNGRADEコマンドは、ファイルヘッダー形式をV4またはV5に変更します。MUPIP DOWNGRADEコマンドの形式は次のとおりです:
D[OWNGRADE] -V[ERSION]={V4|V5} file-name
V4用:
現在のトランザクション(CTN)、最大tn(MTN)、トランザクション番号を含むその他のフィールドでは、サイズを8バイトから4バイトに減らします。
これは、データベース上で実行された以前のDBCERTIFYの結果を削除します。
標準のnull照合を持つV5データベースをダウングレードすることはできません。そのような場合は、V5データベースでMUPIP EXTRACT -FORMAT=ZWR操作を実行してから、V4データベースに対してMUPIP LOAD操作を実行してください。
データベースファイルを1つのエンディアン形式から別の形式に変換します(BIGからLITTLEまたはLITTLEからBIGへ)。MUPIP ENDIANCVTコマンドの形式は次のとおりです:
ENDIANCVT [-OUTDB=<outdb-file>] -OV[ERRIDE] <db-file>
<db-file>は、エンディアン変換のソース・データベースです。デフォルトでENDIANCVTは<db-file>を変換します。
outdbは変換された出力を<outdb-file>に書き込みます。この場合、ENDIANCVT はソースデータベース<db-file>を変更しません。
ENDIANCVTは、<db-file>と同じサイズの<outdb-file>を生成します。
重要 | |
---|---|
エンディアン変換を正常に完了するには、<outdb-file>に十分な記憶域を確保してください。 |
ENDIANCVTでは、データベースへのスタンドアロンアクセスが必要です。
GT.Mは、変換を実行するための "from" および "to" エンディアン形式の確認要求を表示します。変換は肯定的な確認を受け取ったときにのみ開始されます。これは大文字小文字を区別しない "yes" です。
マルチサイトレプリケーション構成では、受信サーバーは、受信レプリケーションストリームのエンディアン形式を自動的に検出し、それをネイティブエンディアン形式に変換します。詳細については、データベースレプリケーションの章を参照してください。
ENDIANCVTで変換された暗号化データベースファイルには、暗号化に使用されたのと同じキーと同じ暗号が必要です。
注意 | |
---|---|
ビッグ・エンディアン・プラットフォーム上のGT.Mは、リトル・エンディアン・データベースをビッグ・エンディアンに変換することができます。 リトルエンディアンプラットフォーム上のGT.Mも可能です。特定のエンディアンプラットフォーム上のGT.M(MUPIP ENDIANCVT以外の実行時ユーティリティ)は、同じエンディアン形式のデータベースのみを開き、処理します。ネイティブ・エンディアン形式以外の形式のデータベースをオープンしようとすると、エラーが発生します。 |
GT.Mに以下のエラーが発生した場合でも、MUPIP ENDIANCVT が操作を継続できるようにします:
"マイナーデータベース形式は、現在のバージョンではありません"
"進行中のKILL"
"GT.CMサーバーがデータベースにアクセスしています"
OVERRIDE修飾子は、エンディアン形式の変換が正常に行われないような重大なエラー(データベースの整合性エラーなど)をオーバーライドしないことに注意してください。
MUPIPプロセスを停止し、MUPIP が呼び出されたプロセスに制御を戻します。
MUPIP EXITコマンドの形式は次のとおりです:
EXI[T]
EXITコマンドは、任意の修飾子を受け付けてません。
データベースファイルのサイズを大きくします。デフォルトでは、空き領域がある場合、GT.Mはデータベースファイルを自動的に拡張します。
MUPIP EXTENDコマンドの形式は次のとおりです:
EXTE[ND] [-BLOCKS=<data-blocks-to-add>] region-name
MUPIP EXTEND の唯一の修飾子はBLOCKSです。
必須のregion-nameパラメータには、展開する領域の名前を指定します。
EXTENDは、動的なセグメントとファイルへのセグメントへ領域をマップするために、グローバルディレクトリを使用します。
MUPIPがファイルを拡張するGDSデータベースブロックの数を指定します。GDSファイルは、ビットマップに追加ブロックを使用します。MUPIP EXTEND は、指定された数のブロックとオーバーヘッドとして必要なビットマップ・ブロックを加算します。ビットマップの詳細については、 第9章: “GT.Mデータベース構造(GDS)”を参照してください。
BLOCK 修飾子の書式は次のとおりです:
-BLOCKS=data-blocks-to-add
デフォルトでは、EXTENDは、データベースファイルを拡張するGDSのブロックの数として、ファイルヘッダーに拡張の値を使用します。最大合計ブロック制限内にある限り、必要な数のブロックを指定できます(最大 224,000,000 GDSブロック [224 million] )。
特定のグローバルをバックアップするか、または、別のシステムで使用するためにデータベースからデータを抽出します。MUPIP EXTRACTコマンドは、現在のデータベースのグローバルを、GO、BINARY、ZWR の3つの形式のいずれかで順次出力ファイルにコピーします。MUPIP EXTRACTコマンドの形式は次のとおりです:
EXTR[ACT] [ -FO[RMAT]={GO|B[INARY]|Z[WR]} -FR[EEZE] -LA[BEL]=text -[NO]L[OG] -R[EGION]=region-list -S[ELECT]=global-name-list] ] {-ST[DOUT]|file-name}
デフォルトでは、MUPIP EXTRACT は -FORMAT=ZWRを使用します。
MUPIP EXTRACT は、グローバル・ディレクトリを使用して、使用するデータベースファイルを決定します。
MUPIP EXTRACT は、ユーザー照合ルーチンをサポートしています。-FREEZE 修飾子なしで使用すると、通常のGT.Mデータベース・アクセスと同時にEXTRACTが動作することがあります。
MUPIP EXTRACT に一貫したアプリケーション状態が反映されるようにするには、通常は FREEZE修飾子を使用して抽出に関係するすべての領域(Region)に対してデータベース更新を保留するか、または、ONLINE修飾子を使用してデータベースをバックアップし、バックアップからファイルを抽出します。
EXTRACT は、その出力をファイル名で定義されたファイルに置きます。EXTRACTは、そのようなファイルをサポートする任意のデバイス(磁気テープを含む)上のUNIXファイルに出力することができます。
UTF-8モードでは、MUPIP EXTRACT は UTF-8文字エンコーディングでシーケンシャル出力ファイルを書き込みます。MUPIP EXTRACTコマンドと対応するMUPIP LOADコマンドは、環境変数 gtm_chset に同じ設定で実行されることを確認します。
GO形式は、UTF-8モードではサポートされていません。UTF-8モードでBINARYまたはZWR形式を使用します。
%GOユーティリティでグローバルを抽出する方法については、「GT.Mプログラマーズガイド」の「Mユーティリティルーチン」の章を参照してください。MUPIP EXTRACTは通常は高速ですが、%GOはカスタマイズできます。
次のセクションでは、MUPIP EXTRACTコマンドの修飾子について説明します。
出力ファイルのフォーマットを指定します。FORMAT修飾子の形式は次のとおりです:
-FO[RMAT]=format_code
フォーマットコードは、次のいずれかです:
B[INARY] - バイナリ形式。データベースの再編成または短期間バックアップ(迅速な?)で使用されます。MUPIP EXTRACT -FORMAT=BINARYは、MUPIP EXTRACT -FORMAT=GO や MUPIP EXTRACT -FORMAT=ZWRよりもはるかに高速に動作します。注:あるGT.M実装から別のGT.M実装へバイナリデータを転送するための定義された標準はありません。さらに、FISは、新しいバージョンでバイナリ形式を変更する権利を留保します(上位バージョンで変更する可能性あり)。BINARY形式のデータファイルの最初のレコードは、ヘッダーラベルが含まれます。ヘッダーラベルは、87文字の長さです。次の表には、ヘッダーラベルのコンポーネントを示します。
バイナリ形式のデータファイルのヘッダーラベル | |
---|---|
キャラクター |
説明 |
1-26 |
固定長のASCIIテキスト: "GDS BINARY EXTRACT LEVEL 4"。 |
27-40 |
$ZDATE()形式の抽出日時: "YEARMMDD2460SS" |
41-45 |
データが抽出された各領域を結合した、10進数の最大ブロックサイズ |
46-50 |
データが抽出された各領域を結合した、10進数の最大レコードサイズ |
51-55 |
データが抽出された各領域を結合した、10進数の最大キーサイズです。 |
56-87 |
-LABEL 修飾子で指定されたスペースが埋め込まれたラベル。UTF-8モードでの抽出では、GT.MはUTF-8の接頭辞とスペースを-LABELに付けます。デフォルトのラベルは "GT.M MUPIP EXTRACT"です。 |
GO - トランスポートまたはアーカイブするファイルで使用されるグローバル出力形式-FORMAT=GOは、データをレコードのペアに格納します。各グローバル ノードは、キーと1つのデータに対して、1つのレコードを生成します。MUPIP EXTRACT -FORMAT=GOには2つのヘッダーレコードがあります - 最初はテストラベル(LABEL修飾子を参照してください)で、2番目にはデータと時間が入っています。
ZWR - ZWRITE形式。非グラフィカルな情報を含むことがある、トランスポートまたはアーカイブするファイルに使用されます。各グローバル・ノードは、キーとデータの両方を持つ1つのレコードを生成します。MUPIP EXTRACT -FORMAT=ZWRには、2つ目のレコードがテキスト "ZWR" で終わることを除いて、FORMAT=GOと同じ2つのヘッダーレコードがあります。
MUPIP EXTRACTコマンドがレコードをコピーしているすべてのデータベースファイルに対するデータベースの更新を防止します。FREEZEは、MUPIP EXTRACT操作が、コピーの進行中に発生する更新によって「ぼやけた」ものではなく、グローバルの「鮮明な」イメージをキャプチャすることを保証します。
FREEZE修飾子の形式は次のとおりです:
-FR[EEZE]
デフォルトでは、MUPIP EXTRACTは操作中に領域(Rgion)を「フリーズ」しません。
出力ファイルの最初のレコードとなるテキスト文字列を指定します。MUPIP EXTRACT -FORMAT=BINARYは、ラベルテキストを32文字に切り捨てます。LABEL修飾子の形式は次のとおりです:
-LA[BEL]=text
デフォルトでは、EXTRACTは、ラベル "GT.M MUPIP EXTRACT." を使用します。"
-FORMAT=BINARYヘッダー・ラベルの詳細については、EXTRACT -FORMAT=BINARYの説明を参照してください。
MUPIP EXTRACTコマンドで抽出された各グローバルを stdout でメッセージを表示します。このメッセージは、グローバルノード数と、各グローバルの最大の添字の長さと、最大のデータ長を表示します。LOG修飾子の形式は次のとおりです:
-[NO]LO[G]
デフォルトでは、EXTRACTは-LOGを実行します。
MUPIP EXTRACTを一連の領域に制限します。REGION修飾子の形式は次のとおりです:
-R[EGION]=region-list
region-list
は、リスト内の現在のグローバルディレクトリの複数の領域を指定することができます。領域(Region)は大文字小文字を区別せず、カンマで区切り、ワイルドカードを使用して指定できます。どの領域(Region)名でもワイルドカード文字 * と % を含めることができます(シェルによる不適切な拡張からそれらを保護するためにエスケープしてください)。領域(Region)名の展開は、M(ASCII)の照合順序で行われます。
MUPIP EXTRACT操作のグローバル変数を指定します。SELECT修飾子の形式は次のとおりです:
-S[ELECT]= global-specification
デフォルトでは、EXTRACTはすべてのグローバルを選択します.SELECT = *
グローバル名の仕様では、キャレット記号(^)は、オプションです。
グローバル変数を指定する仕様は以下のとおりです:
(a,B,C) のようなカッコ内のリスト。この場合、MUPIP EXTRACTは ^a, ^B, ^C 以外のすべてのグローバルを選択します。
MEFなどのようなグローバル名。この場合、MUPIP EXTRACTはグローバル ^MEFのみを選択します。
グローバル名の範囲、A7:B6 のような。この場合、MUPIP EXTRACTは ^A7 と ^B6 の間のすべてのグローバル名を選択します。
A,B,Cのようなリストこの場合、MUPIP EXTRACTはグローバル ^A, ^B, ^Cを選択します。
同じ接頭辞を持つグローバル名、PIGEON*のような。この場合、EXTRACT は ^PIGEON から ^PIGEONzzzzz までのすべてのグローバル名を選択します。
注意 | |
---|---|
もし、選択のためのルールが複雑ならば、データベースファイルへ取り出すグローバル変数をマップする、特別なグローバル ディレクトリを構築しやすくなります。これは、データベースファイルがレプリケートされたインスタンスの一部である場合は、許可されない可能性があります。このような場合は、データベースのバックアップで動作します。 |
例:
$ mupip extract -format=go -freeze big.glo
このコマンドは、MUPIP EXTRACT操作中のデータベースの更新を防ぎます。
例:
$ mupip extract -format=GO mumps_i.go
このコマンドは、mumps_i.go という抽出ファイルを「グローバル出力」形式で作成します。ファイルを転送またはアーカイブするには、この形式を使用します。GOフォーマット・ファイルの最初のレコードには、ヘッダーラベル "GT.M MUPIP EXTRACT" がテキストとして含まれています。
例:
$ mupip extract -format=BINARY v5.bin
このコマンドは、バイナリ形式の v5.bin という抽出ファイルを作成します。この形式は、データベースの再編成や短期バックアップのために使用します。
例:
$ mupip extract -format=ZWR -LABEL=My_Label My_Extract_File
この例では、現在のデータベースから My_Extract_File(ZWRITE形式)というファイルにすべてのグローバルをMy_Labelというラベルで抽出します。
例:
$ mupip extract -nolog FL.GLO
このコマンドは、グローバル単位ごとに統計を表示せずに、グローバル出力ファイルFL.GLO(データベース内のすべてのグローバル変数で構成されます)を作成します。ラベルが指定されていないため、FL.GLO の最初のレコードには、テキスト文字列 "GT.M MUPIP EXTRACT" が含まれています。
例:
$ mupip extract -select=Tyrannosaurus /dev/tty
このコマンドは、グローバル ^Tyrannosaurus をデバイス(ファイル名)/dev/tty にダンプするようにEXTRACTに指示します。
データベースへの更新を一時的に停止(フリーズ)します。もしバックアップまたは再編成を実行するためにGT.M以外のユーティリティを使用したい場合は、この機能を使用してGT.Mデータベースへのスタンドアロンアクセスを提供することができます。MUPIP FREEZEを使用して、ミラー化されたディスク構成の作成またはミラーの再統合のためのデータベース更新を一時停止(および後で再開)できます。
GT.M BACKUP、INTEG、およびREORG操作は、暗黙的にデータベース領域をフリーズおよびアンフリーズすることがあります。ただし、ほとんどの操作では、このフリーズ/フリーズは内部的に発生し、アプリケーションに対して透過的です。
MUPIP FREEZEコマンドの形式は次のとおりです:
F[REEZE] {-OF[F] [-OV[ERRIDE]]|-ON [-R[ECORD]]} region-list
領域(REGION)リストは、FREEZEの対象を識別します。region-listは、リスト内の現在のグローバルディレクトリの複数の領域(Region)を指定することができます。領域(Region)は大文字小文字を区別せず、カンマで区切り、ワイルドカードを使用して指定できます。どの領域(Region)名でもワイルドカード文字 * と % を含めることができます(シェルによる不適切な拡張からそれらを保護するためにエスケープしてください)。領域(Region)名の展開は、M(ASCII)の照合順序で行われます。
MUPIP FREEZEは、同時KILLまたはMUPIP REORG操作が完了できるように1分間待機します。もし KILLまたはMUPIP REORGコマンドが1分以内に完了しない場合、MUPIP FREEZEは操作を終了し、以前にフリーズしたことをマークした領域(Region)をフリーズ解除します。
一貫性のあるレコードのセットを含むデータベースファイルのバージョンをコピーし再編成を保証するために、同時MUPIPユーティリティは、 (ONLINE修飾子なしの)BACKUPとEXTRACTとして、MUPIPユーティリティがアクションを実行する間、データベースが変更しないことを保証するためのメカニズムが含まれます。FISNは、BACKUPで-ONLINE修飾子を使用することを推奨しています。
MUPIP FREEZEは、FREEZEを設定したユーザーまたは -OVERRIDEを使用してのみ削除できます。
MUPIP FREEZE -ONの後に、FREEZEがMUPIP FREEZE -OFFコマンドまたはDSEによって削除されるまで、更新を試みているプロセスが「ハング」します。MUPIP FREEZEを使用する手続きは、手動あるいは自動化であろうと、すべての適切なケースでFREEZを削除するための規定が含まれ、エラーが通常の流れを混乱させる時が含まれることを、確認してください。
データベースの -RECOVER / -ROLLBACK は、以前のデータベースの更新状態に戻ります。したがって、MUPIP FREEZE -ONの直後に-RECOVER / -ROLLBACKを実行すると、フリーズが解除されます。ただし、もしデータベースにプロセスが接続されている(たとえば、プロセスがMUPP FREEZE -ONの直後にデータベースを更新しようとしたときなど)場合、-RECOVER / -ROLLBACKは成功しません。
FREEZEは、1つの修飾子を含める必要があります:
-OF[F] -ON
オプションの修飾子は以下のとおりです:
-OV[ERRIDE] -R[ECORD]
同じユーザーIDを持つ別のプロセスによって設定されたフリーズをクリアします。
OFF修飾子の形式は次のとおりです:
OF[F]
-OVERRIDEとともに使用すると、-OFFは異なるユーザーIDを持つプロセスによって設定されたフリーズ操作を停止します。
次の修飾子とは同時利用できません: -ON, -RECORD
別のユーザーIDを持つプロセスによってフリーズ・セットを解放します。GT.Mは、フリーズが発生した手続きが解放されなかった場合のエラー回復を可能にするために、オーバーライドを提供します。OVERRIDE修飾子の形式は次のとおりです:
-OV[ERRIDE]
ほとんどのスキームでは、オーバーライドは必要ではありません(危険な場合もあります)。
次の修飾子とは同時利用できません: -ON, -RECORD
MUPIP FREEZE操作でイベントを参照ポイントとして記録することを指定します。MUPIP FREEZEを使用して、カスタムバックアップメカニズム(SANまたはミラーベース)用にデータベースを設定することができます。
RECORD修飾子の形式は次のとおりです:
-R[ECORD]
-RECORDを使用すると、MUPIP BACKUP -BYTESTREAMと外部バックアップメカニズムを統合できます。
-RECORDは、以前に記録されたデータベースファイルのトランザクション識別子を置き換えます。
次の修飾子とは同時利用できません: -OFF and -OVERRIDE.
例:
$ mupip freeze -off DEFAULT
このコマンドは、DEFAULT領域で進行中のMUPIP FREEZE操作を停止します。
例:
$ mupip freeze -on "*"
このコマンドは、現在のグローバルディレクトリ内のすべてのリージョンを更新しないようにします。
例:
$ set +e $ mupip freeze -on -record "*" $ tar cvf /dev/tape /prod/appl/*.dat $ mupip freeze -off $ set -e
set + eコマンドは、コマンドが遭遇したエラーにかかわらず、シェルがシーケンス内のすべてのコマンドを試行するように指示します。これは、tarコマンドが失敗したとしても、freeze -off が処理されるようになります。FREEZEは、現在のグローバルディレクトリによって識別される、すべてのデータベースファイルを更新することを防ぎます。 -record修飾子は、各データベースの現在のトランザクションは、データベースファイルのヘッダーのレコードの一部分に格納することを、指定します。tarコマンドは、/drod/app から.dat拡張子を持つすべてのファイルを含めて、/dev/tapeデバイスに、テープアーカイブファイルを作成します。おそらく、現在のグローバルディレクトリ内のすべてのデータベースファイルは、そのディレクトリに、その拡張子で、保存されます。2番目のFREEZEコマンドは、を再は、最初のFREEZEにより一時中断された更新を、再び有効にします。set - eコマンドは、シェルによって、通常のエラーハンドリングを再び有効にします。
例:
$ mupip freeze -override -off DEFAULT
このコマンドは、異なるユーザーIDを持つプロセスによってフリーズが設定されていても、DEFAULT領域をフリーズ解除します。
指定されたファイルの "公開(public)"(システム生成)IPCキー(本質的にハッシュ値)を生成します。
MUPIP FTOKコマンドのフォーマットは次のとおりです:
FT[OK] [-DB] [-JNLPOOL] [-RECVPOOL] file-name
MurmurHash3 アルゴリズムに基づく128ビットのハッシュを使用して、コマンドラインからのソースファイルのハッシュを提供します。
MUPIP HASHコマンドの形式は次のとおりです:
MUPIP HASH <file-names>
GT.Mデータベースファイルの整合性チェックを実行します。現在のグローバルディレクトリ内の1以上数のリージョンに対して、アプリケーションの停止(データベースの更新の中断)を行わずに、構造的な整合性チェックを実行できます。ただし、1つのファイルデータベースにあるMUPIP INTEGは、スタンドアロンアクセスが必要ですが、グローバルディレクトリは必要ありません。MUPIP INTEGコマンドがデータベース領域を選択する順序は、ファイルシステムのレイアウトの関数であり、ファイルの移動または作成に応じて異なる場合があります。一度に1つのデータベースファイルをMUPIP INTEG操作で実行すると、レポートには予測可能な順序でデータベースファイルが常にリストされます。たとえば、参照ファイルをもつ出力を比較するために、一度に1つのファイルに対して、INTEGを実行します。
以下の条件では常にMUPIP INTEGを使用してください。
定期的に - データベースの継続的な完全性を確保する。通常のINTEGは、データベースファイルが広がり広範囲に損傷する前に、整合性の問題を検出するのに役立ちます。
クラッシュの後 - データベースが破損していないことを保証するため。( 注:before-image ジャーナリングを使用する時、クラッシュ後にデータベースがジャーナルファイルから回復される時、integは不要です。)
データベースエラーが報告されたとき - 問題のトラブルシューティングを行います。
グローバルノードの論理的および物理的な隣接関係を改善すると、ディスクI / Oがより高速になる可能性があります。グローバルノードは、連続したシリアルブロック番号のスパン内に格納されると、論理的に隣接します。グローバルノードは、隣接するハードディスクセクタに1つのシーク操作でアクセスできるように物理的に隣接しています。時間が経つとデータベースの更新(SET / KILL)が、グローバルノードの論理的な隣接関係に影響します。MUPIP INTEGは、MUPIP REORGがデータベースのパフォーマンスを向上できるかどうかを示すグローバルノードの論理的な隣接関係を報告します。ネイティブなファイルシステムのデフラグにより、物理的な隣接関係が改善されます。
注意 | |
---|---|
最新のSANおよびI / Oデバイスのほとんどは、論理的および物理的な隣接関係の調整のパフォーマンスへの影響を隠すことがあります。もし特定のパフォーマンスベンチマークを達成することがあなたの目標である場合、論理的および物理的な隣接関係を増やすことは、あなたが引き受けるかもしれない多くのステップの1つに過ぎないはずです。データベースを設計する際には、論理的な隣接関係が、ハードディスクのシリンダに物理的に存在するブロックの数に近いことを確認してください。短いシークが速いと仮定して、2つまたは3つのシリンダを選択することもできます。 |
MUPIP INTEGコマンドの形式は次のとおりです:
I[NTEG] [ -A[DJACENCY]=integer -BL[OCK]=hexa;block-number -BR[IEF] -FA[ST] -FU[LL] -[NO]K[EYRANGES] -[NO]MAP[=integer] -[NO]MAXK[EYSIZE][=integer] -[NO]O[NLINE] -S[UBSCRIPT]=subscript] -TN[_RESET] -[NO]TR[ANSACTION][=integer] ] {[-FILE] file-name|-REG[ION] region-list}
MUPIP INTEGでは、ファイルまたは領域(Region)の指定が必要です。
<CTRL-C>を押して、プロセスが完了する前にMUPIP INTEGを停止します。
ファイル名(file-name)は、MUPIP INTEG操作のデータベースファイルを識別します。領域リスト(region-list)は、1以上の領域を識別します。順番に、現在のグローバルディレクトリを介してデータベースファイルを識別します。
MUPIP INTEG 操作は、非高速 integ(デフォルトまたはフル)中に現在のブロックバージョンを持たないブロックの数を追跡し、この値をファイルヘッダーのカウンタをアップグレードするブロックと照合します。値が不一致の場合はエラーを発行し、他の整合性エラーがない場合はファイルヘッダーの数を訂正します。
重要 | |
---|---|
MUPIP INTEGが報告するすべてのエラーを迅速に分析して修正します。いくつかのエラーは良性であり、他のものは破損の兆候であるか、または、データベースの完全性を損なう可能性があります。もし深刻なエラーを修正せずに操作を続行すると、次の問題が発生する可能性があります:
|
FISは、以下のエラーが発見されると直ちに修正することを強く推奨しています。
ブロックを誤って解放をマークされる - プロセスがデータベース領域の任意の一部分に対して更新を行う時、これらは損傷を加速する可能性があります。
インデックスブロックの整合性エラー - 障害のあるインデックスを使用して、プロセスがデータベース領域のその位置に対して更新を行うと、これらは損傷を加速する可能性があります。詳細は、 第11章: “データベース整合性の維持”を参照してください。
MUPIP INTEG -FASTと「通常の(regular)」INTEGの両方がこれらのエラーを報告します(これらの修飾子については、このセクションの後半で説明します)。他のデータベースエラーは、GDSファイルで問題が急速に広がる脅威はありません。GT.Mデータベースの修復後、データベースの修復に費やされた時間に起因する損傷のタイプ、継続的な操作のリスク、および正常な操作の中断を評価します。データベース・エラーの分析と修正の詳細は、 第11章: “データベース整合性の維持”を参照してください。 INTEGエラーを評価するためのサポートについては、GT.Mサポートチャネルにお問い合わせください。
以下のセクションでは、INTEGコマンドの修飾子について説明します。
MUPIP INTEGがデータベースの診断中に想定するデータブロックの論理的な隣接関係を指定します。デフォルトでは、MUPIP INTEGは -ADJACENCY=10で動作し、MUPIP INTEGレポートの「Adjacent」カラムに論理的な隣接関係を報告します。
最新のディスクコントローラとネイティブファイルシステムの複雑さは、このレポートを不必要にする可能性があります。しかし、意味がある場合、このレポートはデータの論理的な隣接性を測定します。
MUPIP REORGは論理的な隣接関係を改善し、ネイティブなファイルシステムのデフラグにより物理的な隣接関係が改善されます。
ADJACENCY修飾子の形式は次のとおりです:
-AD[JACENCY]=integer
MUPIP INTEGコマンドのブロックを指定して、データベースのサブツリーのチェックを開始します。MUPIP INTEG -BLOCKは「間違ってマークされたビジーエラー」を検出できません。
. BLOCK 修飾子の書式は次のとおりです:
-BL[OCK]=block-number
ブロック番号は、INTEGエラー報告またはDSEを使用して表示されます。
次の修飾子とは同時利用できません: -SUBSCRIPT and -TN_RESET
ディレクトリ、インデックス、データブロックの総数をデータベースファイルごとに1つのサマリーレポートで表示します。BRIEF修飾子の形式は次のとおりです:L
-BR[IEF]
デフォルトでは、MUPIP INTEGはBRIEF修飾子を使用します。
次の修飾子とは同時利用できません: -FULL
インデックスブロックのみをチェックします。 FASTは、データブロックをチェックしません。
FAST修飾子の形式は次のとおりです:
-FA[ST]
-FASTは、一般的なデータベースのブロックの大部分がデータブロックであるため、完全なINTEGよりも大幅に高速な結果を生成します。
INTEG -FASTは完全なINTEGの代替ではありませんが、データベースの高速化を防ぐために直ちに修復しなければならないエラーを非常に迅速に検出します。
デフォルトでは、INTEGは、データベース内の、すべてのアクティブなインデックスとデータブロックをチェックします。
-FASTレポートには、隣接情報が含まれます。
次の修飾子とは同時利用できません: -TN_RESET
MUPIP INTEG操作のデータベース・ファイルの名前を指定します。FILEは、データベースファイルへの排他的(スタンドアロン)アクセスを必要とし、グローバルディレクトリを必要としません。FILE修飾子の形式は次のとおりです:
-FI[LE]
ファイルへのスタンドアロンアクセスでは、MUPIP INTEG -FILE は参照カウントがゼロかどうかをチェックできます。ゼロ以外の参照カウントは、データベースの事前の異常終了を示します。
-FILE修飾子は、-REGION修飾子と同時利用できません。
デフォルトでは、INTEGは -FILE上で動作します。
MUPIP INTEG操作の拡張レポートを表示します。-FULLを指定すると、MUPIP INTEGは、ディレクトリー・ツリーおよび各グローバル変数ツリー内の索引およびデータ・ブロックの数、ならびにディレクトリー、索引およびデータ・ブロックの合計数を表示します。FULL修飾子の形式は次のとおりです:
-FU[LL]
-FULL修飾子は、-BRIEF修飾子と同時利用できません。
デフォルトでは、INTEGレポートは -BRIEF です。
-FULLを使用すると、INTEGは、領域(Region)またはは領域(Region)のリスト内のすべてのグローバル名を報告します。
MUPIP INTEGレポートに検出された問題の疑いのあるデータを識別するキー範囲が含まれているかどうかを指定します。KEYRANGES修飾子の形式は次のとおりです:
-[NO]K[EYRANGES]
デフォルトでは、INTEGは -KEYRANGES を表示します。
MUPIP INTEGが報告する「誤ってマークされたビジーエラー("incorrectly marked busy errors")」の最大数を指定します。MAP修飾子の形式は次のとおりです:
-[NO]MAP[=max_imb_errors]
<max_imb_errors>は、間違ってマーキングされたビジーエラーの数の限界しきい値を指定します。
-NOMAPは、1000000(100万)の上限しきい値を間違ってビジー・エラーとマークします(-MAP=1000000)。
デフォルトでは、INTEGは最大10のマップ・エラーを報告します(-MAP=10)。
注意 | |
---|---|
MUPIP INTEGは、すべての「間違ってマークされたフリー("incorrectly marked free")」エラーを即時に処理する必要があると報告します。MAPはレポートを制限しません。 |
インデックスブロック内のエラーは、データベースの大きい領域の潜在的な処理から、INTEGを防止します。単一の「プライマリ」エラーにより、有効なインデックスポインタを持たない有効なブロックを特定するのに実際に役立つ、多数の「セカンダリ」誤ってマークされたビジーエラーが発生する可能性があります。"リアル"、または、ビジーエラーをマークされたプライマリの誤りは、システムへ使用できない"空"のブロックのみ作り、それらは低い影響であり、そして、すぐに修復する必要はありません。
注意 | |
---|---|
-RECOVER(たとえば、-BEFORE_TIMEを使用)または-ROLLBACK(たとえば、-FETCHRESYNCを使用)を使用したデータベースのリカバリ後に、データベースに誤ってマークされたビジー・エラーが含まれている可能性があります。これらのエラーは問題ありませんが、使用可能なスペースを消費します。次の機会に修理を予定します。 |
MUPIP INTEG操作で報告される「キーサイズが大きすぎます("key size too large" )」エラーの最大数を指定します。MAXKEYSIZE修飾子の形式は次のとおりです:
-[NO]MAX[KEYSIZE][=integer]
デフォルトでは、INTEGは最大10個のキーサイズエラーを報告します(-MAXKEYSIZE=10)。
-NOMAXKEYSIZEはキー・サイズ報告の制限を取り除き、INTEGはすべてのキー・サイズが大きすぎるエラーを報告するようにします。
-NOMAXKEYSIZEは引数の代入を受け付けません。
「キーサイズが大きすぎます("Key size too large")」エラーは、通常、DSE CHANGE -FILEHEADER-KEY_MAX_SIZEコマンドが最大キーサイズを減らした場合にのみ発生します。
MUPIP INTEG操作がアクティブな間、他のプロセスがバックアップの結果に影響を与えずにデータベースを更新できることを指定します。データベース構造の整合性をデータベースの更新と同時に確認することができます。ONLINE修飾子の形式は次のとおりです:
-[NO]O[NLINE]
-NOONLINEは、MUPIP INTEG中にデータベースをフリーズするように指定します。
デフォルトでは、MUPIP INTEGはオンラインです。ただし、デフォルトは -NOONLINEのV4ブロックを含むデータベースを除きます。V4ブロックを含むデータベースは、V4からV5に移行中のデータベースにのみ存在する必要があることに、注意してください。MUPIP INTEG -ONLINEを使用する前に、V5形式への移行を完了してください。
MUPIP INTEG -ONLINEはデータベースの更新をフリーズしないため、MUPIP INTEG -NOONLINEはこれらのフィールドを修正できるのに対し、ファイル・ヘッダーの「ブロックをアップグレード("blocks to upgrade" )」および「フリー・ブロック("free blocks")」フィールドのエラーを安全に訂正することはできません。
各データベースファイルをチェックすると、MUPIP INTEG -ONLINEはデータベースと同じサイズの穴空きファイル (sparse file) を作成します。各GT.Mプロセスはデータベースを更新すると、データベースを更新する前に、古いブロックのコピーを穴空きファイル (sparse file) に置きます。INTEGの開始よりも新しいトランザクション番号を持つデータベースブロックの場合、MUPIPは穴空きファイル (sparse file) のコピーを使用します。したがって、MUPIP BACKUP -ONLINEと同様に、INTEGは、データベースの開始時から完了時までではなく、開始時の状態をレポートします。注: ls -l コマンドなどのコマンドは、穴空きファイル (sparse file) をフルサイズで表示しますが、実際のディスク使用量は表示しません。実際のディスク使用状況を確認するには、du -sh などのコマンドを使用します。
環境変数 gtm_snaptmpdir を使用して、MUPIPがスナップショットファイルを配置するディレクトリを指定できます(MUPIP INTEG -ONLINEで使用されます)。もし gtm_snaptmpdir が存在しない場合、INTEGは gtm_baktmpdir で指定された場所を使用し、それらの環境変数がどちらも定義されていない場合、INTEGコマンドを発行する時点でカレントディレクトリにスナップショットファイルを配置します。MUPIPおよびGT.Mプロセスは、さまざまな条件下でこれらの一時スナップショットファイルを自動的にクリーンアップします。
一時的なディレクトリのセキュリティ設定では、MUPIPプロセスとデータベースを更新するすべてのプロセスによる書き込みアクセスを許可する必要があります。MUPIPはデータベースファイルと同じアクセス権を持つ一時ファイルを作成し、データベースを更新するプロセスが一時ファイルに書き込むことができます。もしデータベースが暗号化されている場合、更新プロセスによって暗号化されたブロックがスナップショットファイルに書き込まれ、MUPIP INTEGプロセスは -NOONLINE と同じように適切なキー情報にアクセスする必要があります。
MUPIP INTEG -NOONLINE [-FAST] {-REGION | -FILE} は、実行中のKILLをクリアし、実行にデータベース全体が含まれていて、誤ってマークされたビジーブロックがない場合、破棄されたKillフラグがフラグを立てます。
データベース領域ごとにアクティブなオンライン統合は1つだけです。もしオンライン integ がすでにアクティブである場合、後続の integ はエラーを発行し、直ちに終了します。もしオンライン integが正常に完了しなかった場合、GT.Mは次のいずれかの方法でクリーンアップします:
それ以降のオンライン統合が、以前のオンライン integ が成功しなかったことを検出されてから、以前のオンライン integ が保持するリソースが解放されてから処理されます。
もしオンライン integ プロセスに対してMUPIP STOPが発行された場合、プロセスは保持しているすべてのリソースをクリーンアップします。注:プロセスが停止したため、integ の結果が有効でない可能性があります。
後続の MUPIP RUNDOWN は、指定された領域(Region)の以前の失敗したオンライン integ によって保持されているリソースの解放を保証します。
オンライン integの開始後に 64Kトランザクションごとに、オンライン integは不適切に放棄されたオンライン integについてGT.Mの健全性をチェックし、見つかったものが保持するリソースを解放します。
次の修飾子とは同時利用できません: -FILE、-TN_RESET(GT.M V5データベースで -TN_RESETを使用する必要はありません)。
INTEGパラメータがデータベースファイルというよりは、むしろ、1つ以上の領域(Region)を識別することを、指定します。REGION修飾子の形式は次のとおりです:
-R[EGION]=region-list
領域(REGION)リストは、INTEGの対象を識別します。region-listは、リスト内の現在のグローバルディレクトリの複数の領域(Region)を指定することができます。領域(Region)は大文字小文字を区別せず、カンマで区切り、ワイルドカードを使用して指定できます。任意の領域名は、ワイルドカード文字 "*" と "?" を、含めることができます(シェルからの不適切な拡張からそれらを守るためにエスケープすることを忘れないでください)。領域(Region)名の展開は、M(ASCII)の照合順序で行われます。
region-list 引数は、現在のグローバルディレクトリの複数の領域をカンマで区切ったリストで指定することができます。INTEG -REGIONは、有効なグローバルディレクトリを指定するために環境変数 gtmgbldir を必要とします。gtmgbldirの定義の詳細については、第4章:“グローバルディレクトリエディタ” を参照してください。
KILLは、ビットマップ内で解放("free")されたブロックのマーキングを一時的に延期する可能性があるため、INTEG -REGIONは誤ってマークされたビジーエラーを偽のブロックとして報告することがあります。これらのエラーは問題ありません。もし、これらのエラーが "Kill in progress" エラーと一緒に発生した場合は、"Kill in progress" エラーがもはや存在してた後に、エラーを解決します。
デフォルトでは、INTEG は -FILE を実行します。
次の修飾子とは同時利用できません: -FILE, -TN_RESET
INTEGのグローバルまたはキーの範囲を指定します。グローバルキーは、引用符(" ")で囲む必要があります。コロン(:)で、2つの添字を区切って、範囲を指定します。 -SUBSCRIPTは、間違ってマークされたビジーエラーを検出できません。 SUBSCRIPT修飾子の形式は次のとおりです:
-S[UBSCRIPT]=subscript
添字内のキーへのパスが破損していない場合のみ、SUBSCRIPTを指定してください。もしパスが疑わしい、または損傷していることがわかっている場合は、DSEを使用してブロックと INTEG -BLOCK を見つけます。
次の修飾子とは同時利用できません: -BLOCK, -TN_RESET
トランザクション番号とバックアップイベント記録されたトランザクション番号を1つにリセットし、現在のトランザクション番号を2つにリセットします。これにより、バックアップイベント記録されたトランザクション番号をより有意義かつ有益なものにします。また、バックアップを実行するための勧告メッセージを発行します。
TN_RESET修飾子の形式は次のとおりです:
-TN[_RESET]
トランザクション番号は、18,446,744,073,709,551,615 までになります。これは、トランザクション処理アプリケーションが、毎秒1,000,000回の更新のノンストップレートで全速力で実行している場合、およそ584,554年ごとにTNをリセットする必要があることを意味します。
-TN_RESET修飾子は、データを保持するすべてのブロックを書き換えます。もし トランザクションのオーバーフローがゼロ(0)にリセットされた場合、データベース操作は破裂します。
-TN_RESET修飾子は、トランザクションのオーバーフローが0にリセットされないようにする保護メカニズムです。
デフォルトでは、INTEGは、トランザクション番号のブロックを変更していません。
重要 | |
---|---|
暴走したプロセスの後にクリーンアップしても、V5ブロックのみのデータベースで -TN_RESETを実行する必要はありません。 |
-TN_RESET修飾子は、-FAST、-BLOCK、-REGION、および-SUBSCRIPT修飾子と同時利用できません。
注意 | |
---|---|
GT.Mアップデートが正しく閉じられなかったデータベースファイルを開くたびに、GT.Mはトランザクション番号を1000だけインクリメントします。この自動増分は、異常なデータベースのクローズによって引き起こされる問題を防ぎますが、ユーザーは常に操作手順でこの要素を考慮する必要があります。GT.Mがトランザクション番号を使い切る("uses up")する割合は、運用手順と実際のデータベース更新の機能によります。 |
MUPIP INTEGが報告する 「トランザクション番号のブロックが大きすぎます(block transaction- number-too-large errors)」エラーの最大数を指定します。TRANSACTION修飾子の形式は次のとおりです:
-[NO]TR[ANSACTION][=integer]
-NOTRANSACTION はトランザクションレポートの制限を削除し、MUPIP INTEGはすべてのトランザクション番号エラーを報告します。
-NOTRANSACTIONは引数の代入を受け付けません。
システムクラッシュは、「トランザクション番号のブロックが大きすぎます("block transaction number too large" )」というエラーを生成することがあります。これらのエラーは、BACKUP -INCREMENTALおよびトランザクション処理に問題を引き起こす可能性があります。通常、データベースの再オープン時にGT.Mが追加する1000ブロックの自動増分は、これらのエラーを回避します。データベースを再オープンした後も問題が残っている場合、ユーザーはDSE CHANGE -FILEHEADER -CURRENT_TN= コマンドの値を使用して、「トランザクション番号が大きすぎます("block transaction number too large number" )」エラーをすばやく修正できます。
デフォルトでは、INTEGは最大10のブロックトランザクションエラーを報告します(-TRANSACTION=10)。
例:
$ mupip integ -block=4 mumps.dat
このコマンドは、mumps.dat のブロック4に対してMUPIP INTEG操作を実行します。
例:
$ mupip integ -adjacency=20
上記のコマンドの出力例は次のとおりです:
Type Blocks Records % Used Adjacent Directory 2 5 4.150 NA Index 18 1151 77.018 1 Data 1137 94189 97.894 1030 Free 43 NA NA NA Total 1200 95345 NA 1031
この例では、論理的に関連するデータが現在のデータベース内の20のデータブロックを占有すると仮定して、MUPIP INTEG操作を実行します。サンプル出力は、1137個のデータブロックのうち、1030個のデータブロックが互いに隣接していることを示しています。すべてのブロックが可能な限り隣接している場合、データベースのパフォーマンスを向上させることができます。
例:
$ mupip integ -brief mumps.dat
このコマンドは、データベース mumps.dat に対してMUPIP INTEG操作を実行します。上記のコマンドの出力例は次のとおりです:
No errors detected by integ. Type Blocks Records % Used Adjacent Directory 2 2 2.490 NA Index 1 1 2.343 1 Data 1 3 6.738 1 Free 96 NA NA NA Total 100 6 NA 2
例:
$ mupip integ -fast mumps.dat
このコマンドは、データベースファイル mumps.dat のインデックスブロックに対してのみ MUPIP INTEG操作を実行します。上記のコマンドの出力例は次のとおりです:
No errors detected by fast integ. Type Blocks Records % Used Adjacent Directory 2 2 2.490 NA Index 1 1 2.343 1 Data 1 NA NA NA Free 96 NA NA NA Total 100 NA NA 1
データ型のNAエントリ(太字で強調表示)に注意してください。これは、MUPIP INTEG-FAST操作がインデックスブロックのみをチェックしたことを意味します。
$ mupip integ -full mumps.dat
上記のコマンドの出力例は次のとおりです:
Directory tree Level Blocks Records % Used Adjacent 1 1 1 2.343 NA 0 1 1 2.636 NA Global variable ^Dinosaur Level Blocks Records % Used Adjacent 1 1 6 8.398 1 0 6 500 83.902 6 No errors detected by integ. Type Blocks Records % Used Adjacent Directory 2 2 2.490 NA Index 1 6 8.398 1 Data 6 500 83.902 6 Free 91 NA NA NA Total 100 508 NA 7
例:
$ mupip integ -map=20 -maxkeysize=20 -transaction=2 mumps.dat
このコマンドは、MUPIP INTEG操作を実行し、「キーサイズが大きすぎます("key size too large")」エラーの最大数を20に制限します。
例:
$ mupip integ -map=20 -transaction=2 mumps.dat
このコマンドは、MUPIP INTEG操作を実行し、「トランザクション番号のブロックが大きすぎます("block transaction number too large" )」のエラーの最大数を2に制限します。
$ mupip integ -file mumps.dat -tn_reset
このコマンドは、データベース番号ごとにトランザクション番号を1にリセットします。
例:
$ mupip integ -subscript="^Parrots" mumps.dat
この例では、データベースファイル mumps.dat のグローバル変数 ^Parrotsに対してMUPIP INTEG 操作を実行します。
例:
$ mupip integ -subscript="^Amsterdam(100)":"^Bolivia(""Chimes"")" -region DEFAULT
この例では、MUPIP INTEG 操作を実行して、デフォルト領域 の ^Amsterdam (100)以上で ^Bolivia("Chimes") 以下のすべてのグローバル変数を実行します。
注意 | |
---|---|
コマンド文字列にリテラルを指定するには、二重引用符を使用します( 例:^b(""c"") )。 |
指定されたプロセスに割り込み信号を送信します。使用されるシグナルは[POSIX] SIGUSR1です。MUPIP INTRPTコマンドの形式は次のとおりです:
INTRPT process-id
重要 | |
---|---|
シグナルSIGUSR1は、Cの外部関数呼び出しや、コール・イン・サポートを使用する(最初は非GT.M)プロセスでは使用されないようにしてください。これは、GT.Mが$ZINTERRUPTメカニズムを起動するシグナルとして解釈するためです。 |
自分のアカウントに属するプロセスをINTRPTするには、プロセスにUNIX権限は必要ありません。
自身のGROUPに属しているプロセスをINTRPTするには、プロセスは、ターゲットプロセス特権のユーザーグループ内のUNIXメンバーシップを必要とします。自身のGROUP以外のアカウントに属するプロセスをINTRPTするには、プロセスにUNIXのスーパーユーザー権限が必要です。
ジャーナルファイルを使用してデータを分析、抽出、レポート、およびリカバーします。。JOURNALコマンドの説明については、第6章:“GT.M ジャーナリング”を参照してください。
シーケンシャルファイルからグローバル変数名とそれに対応するデータ値をGT.Mデータベースに格納します。
LOADコマンドのフォーマット:
L[OAD] [-BE[GIN]=integer -E[ND]=integer -FI[LLFACTOR]=integer -FO[RMAT]={GO|B[INARY]|Z[WR]]} -[O]NERROR={STOP|PROCEED|INTERACTIVE} -S[TDIN]] file-name
注意 | |
---|---|
アプリケーションの観点からは、アプリケーションの実行中にMUPIP LOAD操作を実行すると、データベースのアプリケーション状態が一貫しないことがあります。 |
MUPIP LOADは、グローバルディレクトリを使用して、使用するデータベースファイルを決定します。
LOADはユーザー照合ルーチンをサポートしています。
LOADは、file-name によって定義されたファイルから入力を受け取ります。これは、そのようなファイルをサポートする任意のデバイス上のUNIXファイルです。
もし環境変数 gtm_chsetがUTF-8に設定されている場合、MUPIP LOADコマンドは、UTF-8でエンコードされたとして、シーケンシャルファイルと見なします。MUPIP EXTRACTコマンドと対応するMUPIP LOADコマンドは、環境変数 gtm_chset に同じ設定で実行されることを確認します。
M "パーセントユーティリティ" の読み込みについては、 「GT.Mプログラマーズガイド」の「Mユーティリティールーチン」の章の %GI セクションを参照してください。LOADは、通常は高速ですが、しかし。%GI ユーティリティは、カスタマイズすることができます。
<CTRL-C>を押して、LOADからステータスメッセージを生成します。<CTRL-C>を2回連続して入力すると、LOADが停止します。内部エラーのために手動で停止または停止したLOADは不完全で、アプリケーション・レベルの整合性に欠けるかもしれませんが、kill -9 で終了しない限りデータベース構造に悪影響を与えません。
注意 | |
---|---|
大規模データベースの MUPIP EXTRACT または MUPPLA LOADプロシージャは、バイナリからZWRフォーマット(ソース)およびその逆(ターゲット)から変換する必要があるデータ量のために時間がかかります。大規模なデータベースでは、抽出ファイルが非常に大きくなる可能性があることも考慮する必要があります。ユーザーは、抽出ファイルのサイズと、ソース・データベースとターゲット・データベースが占有するスペースの適切なストレージを確保する必要があります。あるエンディアン・プラットフォームから別のエンディアン・プラットフォームにデータベース・コンテンツを転送するのに要する総時間とスペースを削減するために、データベースのエンディアン・フォーマットをその場で変換し、変換されたデータベースを転送することが効率的です。データベースファイルのエンディアン形式の変換の詳細については、MUPIP ENDIANCVTを参照してください。 |
次のセクションでは、MUPIP LOADコマンドのオプションの修飾子について説明します。
入力ファイルのフォーマットを指定します。もし入力ファイルの形式が指定されていない場合、MUPIP LOADは入力ファイルのファイルヘッダーに基づいてファイル形式(BINARY / ZWR / GO)を自動的に検出します。もし format が指定されている場合は、入力ファイルの実際のフォーマットと一致する必要があります。
フォーマットコードは次のとおりです:
B[INARY] - Binary format GO - Global Output format Z[WR] - ZWRITE format
MUPIP LOADは、MUPIP EXTRACT、^%GO、および、DSEからの抽出ファイルのファイルヘッダーに基づいて、ファイル形式(BINARY / ZWR / GO)を検出します。
-FORMAT=BINARYのみ、グレイストーン(Greystone)・データベース構造(GDS)のファイルに適用されます。バイナリフォーマットファイルは、GOまたはZWR フォーマットのファイルよりも、大幅に速くロードします。-FORMAT=BINARYは、独自の形式のデータで動作します。-FORMAT=BINARYは、1つのヘッダー・レコードがあるため、LOAD -FORMAT=BINARYは、レコード番号2(2)でアクティブな作業を開始します。
-FORMAT=GOは、レコード・ペアのデータを想定します。各グローバルノードは、キーとデータ用にそれぞれ1つのレコードを必要とします。
-FORMAT=ZWRは、単一のレコード内の各グローバルノードのデータを必要とします。
LOADを開始すべきかどうか、入力ファイルのレコード番号を指定します。有効なキーの先頭がエラーを発生する以外のポイントを開始するために、LAODを指示します。BEGIN修飾子の形式は次のとおりです:
-BE[GIN]=integer
重要 | |
---|---|
常に、-BEGINポイントを選択するためのヘッダーレコードの数を検討してください。詳細については、FORMAT修飾子を参照してください。 |
-FORMAT=GO入力の場合、値は通常は奇数です。-FORMAT=BINARYはヘッダーから重要な情報を必要とするため、このタイプのロードには、-BEGIN値に関係なく、そのままのヘッダーが必要です。
-FORMAT = ZWR input 入力には、各レコードは、参照およびデータの情報の完全なセットが含まれます。ヘッダの2つのレコードを許可することを除き、最初の値は制限されていません。
デフォルトでは、LOADは入力ファイルの先頭から始まります。
LOADを停止すべきかどうか、入力ファイルのレコード番号を指定します。-END=integer は、LOADが動作するためには -BEGIN =integerより大きくなければなりません。LOADは、-ENDで指定された番号のレコードを処理した後、または、入力ファイルの最後に到達した後に終了します。END修飾子の形式は次のとおりです:
-E[ND]=integer
-FORMAT=GO入力の値は、通常は偶数でなければなりません。デフォルトでは、LOADは入力ファイルの最後まで続きます。
データベースブロックに格納されているデータの量を指定します。ブロックへの後続のランタイム更新は、FILL_FACTORによって予約された残りの空き領域を満たします。ブロック分割を避けるブロックは、より効率的に動作します。FILL_FACTOR 修飾子の形式は次のとおりです:
-FI[LL_FACTOR]=integer
ある期間にわたって大幅な追加のレートを経験する可能性のあるグローバル変数の予測された増加に対応するために、余分なスペースを確保し、不要なブロック分割を回避します。
データベースのパフォーマンスの問題やデータベースの更新頻度が高いユーザーは、定義されたFILL_FACTORを調べる必要があります。アプリケーションで統一されたレコードしか使用しない限り、ほとんどのアプリケーションでは一般的ではありませんが、FILL_FACTORは正確に機能しません。
デフォルトでは、LOADは 最大データ密度のために -FILL_FACTOR=100を使用します。
注意 | |
---|---|
FILL_FACTOR は、更新が広いキー範囲で合理的に一様にレコードを追加または増やす場合に便利です。もし更新が常に昇順または降順のキーになっている場合、または、もしレコードのセットおよびレコードのサイズが更新時に比較的静的である場合、FILL_FACTOR は大きなメリットはありません。 |
エラーが発生したときのMUPIP LOAD動作を決定します。ONERROR修飾子の形式は次のとおりです:
-[O]NERROR={STOP|PROCEED|INTERACTIVE}
STOP は、MUPIP LOADが直ちに終了します。
PROCEEDは次のレコードに進みます。
PROMPTS は続行または停止を促します。
デフォルトでは、MUPIP LOADはエラーが発生すると終了します。
例:
$ mupip load ex_file.go
このコマンドは、抽出ファイル ex_file.go の内容を現在のデータベースにロードします。
例:
$ mupip load -format=go big.glo
このコマンドは、現在のデータベースに抽出ファイルbig.gloをロードします。
例:
$ mupip load -begin=5 -end=10 rs.glo
このコマンドは、レコード番号 5からMUPIP LOAD操作を開始し、レコード番号10で終了します。BEGINの値は奇数であることに注意してください。上記のコマンドの出力例は次のとおりです:
GT.M MUPIP EXTRACT 02-MAR-2011 18:25:47 ZWR Beginning LOAD at record number: 5 LOAD TOTAL Key Cnt: 6 Max Subsc Len: 7 Max Data Len: 1 Last LOAD record number: 10
例:
$ mupip load -fill_factor=5 reobs.glo
このコマンドは、現在のデータベースに抽出ファイルをロードするためにFILL_FACTORを5に設定します。
例:
$cat big.glo | mupip load -stdin $mupip load -stdin < big.glo
これらのコマンドは、抽出ファイルbig.gloを-stdinを使用してロードします。
relinkctl(再リンク制御)ファイルおよび関連する共用メモリー・セグメントに関連する情報をレポートします。MUPIP RCTLDUMPコマンドの形式は次のとおりです:
MUPIP RCTLDUMP [dir1]
もしオプションのパラメータ dir1 が指定されていない場合、MUPIP RCTLDUMP は $gtmroutines によって識別されるすべてのアクティブな自動再リンク対応ディレクトリ( *-suffix(* 接尾辞)付きのディレクトリ)に関する情報をダンプします。dir1 に指定されたディレクトリ・パスを使用すると、MUPIP RCTLDUMPは1つのディレクトリに関する情報を報告します。出力の例を次に示します。これは、Object ディレクトリのフルパスをリストします; 対応するrelinkctlファイル名; このrelinkctlファイルに現在ロードされているルーチンの数; このRelinkctlファイルが開いているレポートMUPIPプロセスを含むプロセスの数; Relinkctl共有メモリセグメントの共有メモリIDと長さ; 1つまたは複数のRtnobj共有メモリセグメント; このファイルにロードされているすべてのルーチン名のリスト( rec#... で始まる行)。
Rtnobj共有メモリ行:すべての長さフィールドが16進数で表示されます。 shmlenは、割り当てられた共有メモリセグメントの長さ(バイト単位)です。 shmusedは現在使用されている長さです。 shmfreeは、使用可能な長さです。 objlenは、この共有メモリーに現在ロードされているすべてのオブジェクトの合計長です。GT.Mは、2バイトの整数累乗に丸められたサイズのメモリブロックを割り当てるので、shmusedは常にobjlenより大きい。たとえばobjlenが0x1c0の場合、shmusedは0x200です。
rec#...の形式の行は、relinkctlファイルのレコード番号を示します。各 relinkctl ファイルには最大1,000,000レコードを格納できます。つまり、自動再リンクが有効になっているディレクトリ内のルーチンの最大数は100万です。各レコードには、ルーチン名(rtnname :)、このオブジェクトファイルレコードエントリの現在のサイクル(cycle:)、ZLINKまたはZRUPDATEコマンドごとに突き当たったオブジェクトファイル、このルーチン名の最後にロードされたオブジェクト・ファイルのハッシュ(objhash :)、このルーチン名(numvers :)を持つ Rtnobj 共有メモリセグメントにロードされたオブジェクトファイルの異なるバージョンの数、このルーチン名で現在ロードされているオブジェクトファイルの1つ以上のバージョンの合計バイト長(objlen :)、 GT.Mが各オブジェクトファイルに丸めた完璧な2倍のメモリブロック(shmlen :)を割り当てる、これらのオブジェクトファイルの共有メモリで使用された全長。
relinkctlファイル名を指定すると、RelinkctlファイルのUnix "strings" コマンドを使用して、対応するディレクトリパスを見つけることができます。たとえば、上記のMUPIP RCTLDUMPの出力例に対応する "strings /tmp/gtm-relinkctl-f0938d18ab001a7ef09c2bfba946f002" は、対応するディレクトリ名 "/obj"を出力します。
例:
$ mupip rctldump . Object Directory : /obj Relinkctl filename : /tmp/gtm-relinkctl-f0938d18ab001a7ef09c2bfba946f002 # of routines : 1 # of attached processes : 2 Relinkctl shared memory : shmid: 11534344 shmlen: 0x57c6000 Rtnobj shared memory # 1 : shmid: 11567113 shmlen: 0x100000 shmused: 0x200 shmfree: 0xffe00 objlen: 0x1c0 rec#1: rtnname: abcd cycle: 1 objhash: 0xedbfac8c7f7ca357 numvers: 1 objlen: 0x1c0 shmlen: 0x200
データベースファイルの最適化と再編成によりデータベース・パフォーマンスを向上させ、データベースファイルのサイズを縮小しようとします。MUPIP REORG は、更新を含む他のデータベースアクティビティと同時に実行されます。競合するアクティビティは、一般に、REORGを実行するのに必要な時間だけでなく、競合する操作の時間も増加させます。
MUPIP REORGコマンドの形式は次のとおりです:
REO[RG] [ -D[OWNGRADE] -E[XCLUDE]=global-name-list -FI[LL_FACTOR]=integer -I[NDEX_FILL_FACTOR]=integer -R[ESUME] -S[ELECT]=global-name-list -T[RUNCATE][=percentage] -UP[GRADE] -REG[ION]=region-list ]
注意 | |
---|---|
REORG はデータベースファイルのGDS構造を最適化しますが、ネイティブ・ファイル・システムのファイル断片化は処理しません。ほとんどの場合、ネイティブファイルシステムレベルでの断片化は、GDS構造レベルでの断片化よりも起こりやすいでしょう。したがって、FISでは、ユーザーが連続した空きスペースが大量にあるディスク上に、適切な割り当てと拡張子を持つファイルを作成することを推奨しています。ネイティブユーティリティとMUPIPユーティリティ(操作手順に応じて)を使用して、データベースファイルを12回以上拡張した場合のファイルの断片化を解消します。 |
通常のデータベース・アクセスと同時にREORGを使用すると、通常の操作のパフォーマンスに影響します。この影響を減らすには、REORGを実行するプロセスの優先順位を下げます。
MUPIP REORG はデータベースの論理的な内容を変更せず、オリジナルのインスタンスまたはLMSアプリケーションの複製インスタンスのいずれかで実行できます。そのような場合、プロセス中のREORGを再開することは、バッチ再始動の一部でなければなりません。デュアル・サイト・アプリケーションでREORGを実行する方法の詳細は、「GT.Mデータベース・レプリケーション」の章を参照してください。
進行中のMUPIP REORGプロセスに対してMUPIP STOPを実行すると、データベースブロックが矛盾した状態になることがあります。この状況では、GT.Mは進行中のKILLフラグを放棄されたKILLフラグに変換します。もし後続のMUPIP REORGがこれらの放棄されたKILLフラグに遭遇すると、メッセージを出してREORGアクションを開始します。
<CTRL-C>でREORGを終了します。 REORGがオペレータのアクションによって異常終了したか、または、エラーが不完全ですが、kill -9 で終了しない限り、データベース構造に悪影響を与えません。
注意 | |
---|---|
REORGは最適な隣接関係に重点を置いており、単一のブロックに変更を加えても、限界便益(marginal benefit) のみで多数の更新を実行する可能性があります。したがって、データベースとジャーナルのアクティビティの大幅な増加に対して最小限の便益をもたらすことができるので、FISは、連続したREORGを時間的に近接して一緒に実行しないことを推奨します。同じ理由で、FISは、-RESUME 修飾子を使用する前に、慎重に研究と計画を立てるか、-EXCLUDEと-SELECTの複合使用を推奨します。 |
^x(1) の値を ^x(10000) に入れるという2つのシナリオを想定します。最初のシナリオでは、値をシーケンシャルな方法で入力します。2番目のシナリオでは、奇数のサブスクリプトの値を入力し、偶数のサブスクリプトの値を入力します。
シナリオ 1:
GT.Mプロンプトで、次のコマンドシーケンスを実行します:
GTM>for i=1:1:10000 set ^x(i)=$justify(i,200)
次に、以下のMUPIP INTEGコマンドを実行してください。
$ mupip integ -region "*"
このコマンドは、以下の出力を生成します:
Integ of region DEFAULT No errors detected by integ. Type Blocks Records % Used Adjacent Directory 2 2 2.490 NA Index 29 2528 95.999 1 Data 2500 10000 82.811 2499 Free 69 NA NA NA Total 2600 12530 NA 2500
レポートの索引およびデータ・ブロックの高密度(使用率)に注意してください。
シナリオ 2:
GT.Mプロンプトで、次のコマンドシーケンスを実行します:
GTM>for i=1:2:10000 s ^x(i)=$justify(i,200) GTM>for i=2:2:10000 set ^x(i)=$justify(i,200)
次に、次のコマンドを実行します:
$ mupip integ -region "*"
このコマンドは、以下の出力を生成します:
Integ of region DEFAULT No errors detected by integ. Type Blocks Records % Used Adjacent Directory 2 2 2.490 NA Index 153 3902 29.211 57 Data 3750 10000 55.856 1250 Free 95 NA NA NA Total 4000 13904 NA 1307
シナリオ1よりも使用されるインデックスブロックとデータブロックがますます密集していることに注意してください。MUPIP REORG は、このような問題に対処し、データベースを(FILL_FACTORに応じて)よりコンパクトにします。
MUPIP REORG のオプション修飾子は次のとおりです:
関連するリスト内のグローバルに関する情報を含むブロックをREORGが処理しないように指定します。つまり、他のグローバルを再編成する際に再編成もスワップもされません。 -EXCLUDEは、隣接関係を改善しようとするブロックスワップ動作を複雑にし、妨げるため、REORGの効率を低下させる可能性があります。
EXCLUDE修飾子の形式は次のとおりです:
-E[XCLUDE]=global-name-list
1つのMUPIPコマンドが、データベースまたは領域内のグローバルのサブセットを編成しているとします。もし2番目のMUPIP REORGコマンドが残りのグローバルを選択すると、以前に編成されたブロックを最適化解除することによって、最初のREORGの結果を中断させる傾向があります。これは、以前のMUPIP REORGコマンドから次のコマンドに渡された情報がないためです。EXCLUDE修飾子を使用すると、MUPIP REORGがこれらのグローバルを含むGDSブロックをバイパスするように、以前にREORGされたグローバルの名前をリストすることができます。
もし global-name-list に存在しないグローバルが含まれている場合、REORGは端末にメッセージを発行し、存在する指定された任意のグローバルを処理し続けます。REORGがどのグローバルを処理することができない場合は、エラーで終了します。
Global-name-listには、個々のグローバル名、グローバル名の範囲、またはワイルドカード記号が後に続く名前と接頭辞のリストを指定できます。 例:
ACNのようなグローバル名
A7:B7 のようなグローバル名の範囲
A,B,Cのようなリスト
TMP*のように、同じ接頭辞をもつグローバル名
最初のケースで、REORGは、グローバル ^ACN のみ除外します。2番目のケースで、REORGは、A7からB7までの照合シーケンスの中のすべてのグローバル名を除外します。3番目のケースで、REORGは、A,B,Cを除外します。最後のケースで、REORGは、接頭辞がTMPのすべてのグローバルを除外します。
シェルによって不適切な拡大を防止するために、ワイルドカードを二重引用符("")で囲みます。グローバルの仕様では、キャレット記号(^)は、オプションです。
デフォルトでは、REORGは、任意のグローバルを除外しません。
-SELECTと-EXCLUDEの両方の引数リストにグローバルがある場合、REORGはエラーで終了します。
各データベースブロックを、どのようにフルにするべきかを指定します。これは、ターゲットの数です。個々のブロックは、フィルファクターよりも、多かれ少なかれフルになることがあります。FILL_FACTOR 修飾子の形式は次のとおりです:
F[ILL_FACTOR]=integer
FILL_FACTOR修飾子の引数は、30から100までの整数でなければなりません。これらの整数は、REORGがフィル可能なデータブロックの割合(パーセンテージ)を表します。デフォルトでは、最大データ密度で、FILL_FACTORの値は100です。
データベースのパフォーマンスの問題やデータベースの更新頻度が高いユーザーは、定義されたFILL_FACTORを調べる必要があります。均一なレコードを使用するアプリケーションではない限り、典型的なほとんどのアプリケーションの場合を除き、FILL_FACTORsは、正確に動作しません。
データにおけるFILL_FACTORは、それは相対的に静的で、または、新しいノードを加えることによって成長し、それは既存のノード前、または、後に照合し、100%になる必要があります。データにおけるFILL_FACTORは、それは既存のノードへの追加を増大させ、いくつかの期間のために、予想成長のために、典型的なノードで、余地を残すために選択される可能性があります。一般に、これは、LOADと最初のREORGとの間、または、2つのREORGsとの間の時間です。また、これは、既存の照合順序の内部にあるノードの追加にも当てはまります。
インデックスブロック内に、将来のアップデートのための空き領域を残すためにREORGを指示します。この修飾子に対する引数は、REORGがフィル可能なインデックスブロックの割合(パーセンテージ)を表す30から100までの整数でなければなりません。REORGは、インデックスブロック内の詳細情報を配置したり、別のブロックヘデータを移動することによってスペースを作成したりするかどうかを決定し、この番号を使用します。INDEX_FILL_FACTOR修飾子の形式は次のとおりです:
-I[NDEX_FILL_FACTOR]=integer
一定の条件の下で、特に大規模なデータベースのブロックサイズの場合は、データ用ブロックに比べてインデックス用ブロックがより小さなフィルファクタを使用することによって、高速なスループットを実現する可能性があります。デフォルトでは、その値が明示的に指定されているか、または、デフォルトで暗黙的に取得されたかのどちらにかかわらず、INDEX_FILL_FACTORはFILL_FACTORの値です。
中断されたREORG操作の場合、-RESUMEを使用すると、操作が停止した時点からREORG操作を再開できます。REORGは、データベースファイルのヘッダーに、最後のキー値を格納します。RESUME修飾子の形式は次のとおりです:
-R[ESUME]
RESUMEを指定すると、プログラムはデータベースファイルヘッダーから最後のキー値を取得し、そのキーから操作を再開します。
REORGが関連リスト内の領域(Region)内で操作されるように指定し、REORGを現在のグローバル・ディレクトリーでマップされている領域(Region)内のグローバルに制限します。 -EXCLUDEと-SELECTと同じインタラクションはありませんが、しかし、結合されたときにそれらのインタラクションを緩和しません。
REGION修飾子の形式は次のとおりです:
-R[EGION]=region-list
region-list
は、リスト内の現在のグローバルディレクトリの複数の領域を指定することができます。領域(Region)は大文字小文字を区別せず、カンマで区切り、ワイルドカードを使用して指定できます。どの領域(Region)名でもワイルドカード文字 * と % を含めることができます(シェルによる不適切な拡張からそれらを保護するためにエスケープしてください)。領域(Region)名の展開は、M(ASCII)の照合順序で行われます。
REORG は関連リスト内のグローバルのみを再編成することを指定します。リストにないグローバルは、-EXCLUDEで指定されていない限り、選択されたグローバルとのブロック・スワップによって変更される可能性があります。 -SELECTは、-EXCLUDEリストの名前でなければ選択されていないグローバルを非最適化する傾向があるため、効率的に使用するのが難しい場合があります(これは非効率的です)。
SELECT修飾子の形式は次のとおりです:
-S[ELECT]=global-name-list
デフォルトでは、REORGは、MUPIPコマンドの実行プロセスのために、現在のグローバルディレクトリで、識別されたすべてのデータベースファイル内の、すべてのグローバル上で。操作します。
REORGにより実行される1つの機能は、ファイル内でそれが操作するグローバルの論理的順序となります。EXCLUDEとSELECT修飾子が正しく組み合わされていないかぎり、同じファイル内の異なる選択肢でコマンドを繰り返し実行すると、最後の選択だけが整理されたままになります。
もしREORG -SELECT=global-name-list コマンドを入力し、指定されたグローバル変数が存在しな場合は、REORGは、画面にメッセージを発行し、任意の指定された存在するグローバル変数のプロセスを続行します。REORGがどのグローバルを処理することができない場合は、エラーで終了します。
この修飾子の引数は、個々のグローバル名、グローバル名の範囲、または、ワイルドカード記号に続くリスト名と接頭辞である必要があります。グローバルの仕様では、キャレット記号(^)は、オプションです。
グローバル名です:
ACNのようなグローバル名
A7:B7 のようなグローバル名の範囲
A,B,Cのようなリスト
TMP*のように、同じ接頭辞をもつグローバル名
最初のケースでは、REORGにはグローバル ^ACNのみが含まれています。2番目のケースでは、REORGは照合順序A7からB7のすべてのグローバル名を含みます。3番目のケースでは、REORGにはA、B、Cが含まれます。最後のケースでは、REORGにはすべてのグローバルにTMPが前置されています。
デフォルトでは、REORGは、すべてのグローバル変数を選択します。
REORGが、領域(Region)の内容の一部または全部を再配置した後に、データベース・ファイルのサイズを縮小し、空きスペースをファイル・システムに戻そうとすることを指定します。TRUNCATE修飾子の形式は次のとおりです:
-T[RUNCATE][=percentage]
オプションのパーセンテージ(0〜99)は、再生利用(reclamation)の最小量を提供します。言い換えれば、REORGは、少なくともファイルのこのパーセンテージを戻すことができない限り、ファイルの切り詰めを実行するのを邪魔することはありません。デフォルト(0)は、できる限り何かを戻します。TRUNCATEは、ビットマップ境界に合わせたスペースを常に返します。これは512データベースブロックの間隔になります。TRUNCATEはビットマップを解析し、必要に応じてリサイクルされた(以前に使用された)ブロックの必要に応じてイメージジャーナルレコードの前に生成します。切り詰められたデータベースファイルのジャーナル抽出には、特定のブロックが切り捨てによってリサイクルされてマークされたことを示す inctn オペコード値 9 を有するINCTNレコードを含むことができます。
注意 | |
---|---|
同時のオンラインBACKUPがある場合、またはINTEGなどのスナップショット・メカニズムを使用している場合、TRUNCATEは完了しません。 |
例:
$ mupip reorg -exclude="^b2a,^A4gsEQ2e:^A93"
この例では、^b2a を 除くすべてのグローバルおよび ^A4gsEQ2e から^A93 まで範囲のすべてのグローバルに対してMUPIP REORG操作を実行します。
例:
もし比較的均等に分散された更新によってグローバルの予測成長率が月5%で、REORGが四半期ごとにスケジュールされる場合、オリジナルのLOADとそれに続くREORGのFILL_FACTORは、80% 100-((3か月 + 1か月の "安全 "マージン) * 5%/月) となります。上記の仮定に基づくREORGコマンドは、次のとおりです:
$ mupip reorg -fill_factor=80
GT.Mの論理マルチサイト動作を制御します。 MUPIP REPLICATEコマンドの修飾子の詳細については、第7章: “データベース複製” を参照してください。
1つ以上のBACKUP -INCREMENTALファイルを対応するデータベースに統合します。最初のインクリメンタルバックアップのトランザクション数は、データベースの現在のトランザクション数が1より大きい必要があります。そうでない場合、MUPIP RESTOREはエラーで終了します。
RESTOREコマンドのフォーマット:
RE[STORE] [-[NO]E[XTEND]] file-name file-list
file-name
は、RESTOREが開始点として使用するデータベースファイルの名前を示します。
file-list
は、BACKUP -INCREMENTALによって生成された1つ以上のファイルを、データベースにRESTOREするように指定します。file-name はコンマ(,)で区切られており、最も古いトランザクション番号から最新のトランザクション番号までの順番でなければなりません。RESTOREは、そのようなファイルをサポートする任意のデバイス上のUNIXファイルからの入力を受け取ります。
データベース内の現在のトランザクション番号は、RESTOREへの各連続入力の開始トランザクション番号と一致していなければなりません。
もし -TRANSACTION=1を使用してBACKUP -INCREMENTALを作成した場合は、MUPIP CREATEを使用して新しいデータベースを作成し、RESTOREを開始する前にスタンドアロンのMUPIPコマンドINTEG -FILE、EXTEND、およびSETを除いてアクセスしないでください。
データのロードに必要なサイズよりも小さい場合、MUPIP RESTORE操作でデータベースファイルを自動的に拡張するかどうかを指定します。
EXTEND修飾子の形式は次のとおりです:
-[NO]E[XTEND]
バックアップ間のMのアクティビティは、自動的にデータベースファイルを拡張することがあります。したがって、RESTOREのために出発点として指定されたデータベースファイルは、復元する前に、拡張を必要とする可能性があります。もしデータベースに拡張子が必要で、コマンドで -NOEXTENDが指定されている場合、MUPIPはメッセージを表示して終了します。メッセージは、データベースファイルの入力と出力のサイズと、データベースが拡張されたブロック数を提供します。もしRESTOREがファイルリストをもつ1つ以上のインクリメンタルバックアップを指定するならば、データベースファイルは拡張を1つ以上である必要があります。
デフォルトでは、RESTOREは自動的にデータベースファイルを拡張します。
$ mupip restore backup.dat $backup_dir/backup.bk1, $backup_dir/backup.bk2, $backup_dir/backup.bk3
このコマンドは、backup.dat を、環境変数 backup_dir で指定されたディレクトリに格納されている増分バックアップからリストアします。
$ mupip restore gtm.dat '"gzip -d -c online5pipe.inc.gz |"'
このコマンドは、pipeを使用して、online5pipe.inc.gzに格納されているバイトストリームバックアップからの最後のDATABASEバックアップ以降にgtm.datをリストアします。
データベースアクセスが正しく終了していない場合、RUNDOWNは現在の非アクティブデータベースを適切に閉じ、放棄されたGT.Mデータベース・セマフォを削除し、使用されているIPCリソースをすべて解放します。通常の操作では、データベースファイルをクローズする最後のプロセスは、RUNDOWNアクションを実行し、そして、MUPIP RUNDOWNは必要ありません。データベースファイルがすでに正しくランダウン(rundown)されている場合、MUPIP RUNDOWNは効果がありません。疑しい場合は、常に安全にrundownを実行することです。FISは、GT.Mアプリケーションまたはシステムをシャットダウンする以下の方法を推奨しています。
すべてのGT.Mプロセスを終了、そして
アクティブになる可能性がある任意およびすべてのデータベースファイルをRundownします。
MUPIP RUNDOWNは、バージョンの不一致をチェックします。もしそれらがはミスマッチならば、それは、領域をスキップして、次の領域へと続きます。これは、同じマシン上に共存する複数(非相互作用)のGT.Mバージョンを容易に作ります。Note : GT.Mはソフトウェアの複数のバージョンでは、同じデータベースファイルへの同時アクセスをサポートしていません。
MUPIP RUNDOWNコマンドの形式は次のとおりです:
RU[NDOWN] {-FILE file-name|-REGION region-list|-RELINKCTL [dir]|-OVERRIDE}
MUPIP RUNDOWNは、すでに閉じているファイル内の特定フィールドをクリアします。これにより、システムがクラッシュしたり他の動作異常からの回復を促進します。
システムがクラッシュした後、または、データベースへアクセスする最後のプロセスが異常終了した後、RUNDOWNを使用してください。RUNDOWNは、開いているデータベースが適切に閉じられ、そして、その後に使用する準備を、確実にします。RUNDOWNは、RUNDOWNが発行されているその時に、積極的にアクセスされている任意のデータベースに影響を与えません。
データベース領域のMUPIP RUNDOWNが正常に終了すると、現在のMUPIP FREEZEが削除されます。
データベースの整合性を確保するため、すべてのシステムのシャットダウンアルゴリズムは、GT.Mのプロセスを停止し全てのデータベースファイルにRUNDOWNを実行するスクリプトを、インクルードする必要があります。
RUNDWONコマンドは、1つの修飾子を含める必要があります:
-F[ile] -R[egion]=region-list -RELinkctl [dir1] -Override
もしRUNDOWNコマンドで -File または -Region が指定されていない場合は、システム上のすべてのIPCリソース(共有メモリ)がチェックされ、GT.Mデータベースに関連付けられている場合は、そのファイルを停止しようとします。
引数が単一のデータベースファイルのファイル名であることを指定します。-FILE修飾子はREGION修飾子と同時利用できません。もしRUNDOWNパラメータがファイルのリストで構成するならば、コマンドはリスト内の最初の項目でのみ動作します。
次の修飾子とは同時利用できません: -REGION
MUPIP RUNDOWNが、複製が有効な(BEFORE_IMAGEの)データベースまたは異常終了した非複製NOBEFOREジャーナルデータベースの停止を防止する保護を無効にします。保護には、以前にクラッシュしたレプリケーション対応(BEFORE IMAGEジャーナリングを使用)データベースのMUUSERLBKエラーと、非レプリケートまたはNOBEFOREジャーナリング・データベースのMUUSERECOVエラーの発行が含まれます。これらの両方のエラーは、ジャーナル・ファイルまたはレプリケーション可能なデータベースからのデータ・リカバリーに関連する複雑さを防ぎます。
region-listは、RUNDOWNのターゲットを識別します。region-listは、リスト内の現在のグローバルディレクトリの複数の領域(Region)を指定することができます。領域(Region)は大文字小文字を区別せず、カンマで区切り、ワイルドカードを使用して指定できます。どの領域(Region)名でもワイルドカード文字 * と % を含めることができます(シェルによる不適切な拡張からそれらを保護するためにエスケープしてください)。領域(Region)名の展開は、M(ASCII)の照合順序で行われます。
ワイルドカード "*" を使用して、グローバルディレクトリ内のすべての非アクティブ領域を停止します。
次の修飾子とは同時利用できません:-FILE
MUPIP RUNDOWNに修飾子がない場合、ノード上のすべての非アクティブなデータベース・メモリー・セクションについての停止が実行されます。このフォームはデータベースの明示的なリストを持たないため、破棄されたメモリセグメントを持たない領域ではクリーンアップを実行しませんが、クラッシュ時にはシャットダウンしていない可能性があります。
孤立したRelinkctlファイルをクリーンアップします。FISは、GT.Mプロセスの kill -9 やアクティブなRelinkctlやRtnobj共有メモリセグメントの ipcrm -m など、必要なクリーンアップが必要なアクションを避けることを強く推奨しています。
もしオプションの dir1 が指定されていない場合、MUPIP RUNDOWN -RELINKCTLは環境変数 $gtmroutines を調べ、接続カウントの確認と修正を試み、すべての非アクティブな自動再リンク対応ディレクトリ(*接尾辞付き)を実行します。別の方法として、パラメータ dir1 のディレクトリパスを指定することもできます。また、MUPIP RUNDOWN -RELINKCTL は、自動再リンク対応ディレクトリとして扱い、この1つのディレクトリに関連するリソースを停止します。正常終了時にはRLNKCTLRNDWNSUCメッセージが表示され、失敗時にはRLNKCTLRNDWNFLメッセージが出力されます(通常、ライブプロセスは依然としてRelinkctlファイルにアクセスしているため)。
特定のデータベース特性を変更します。 MUPIP SETは領域またはファイルのいずれかで動作します。
SETコマンドのフォーマットは:
SE[T] {-FI[LE] file-name|-JN[LFILE] journal-file-name|-REG[ION] region-list|-REP[LICATION]={ON|OFF}} -A[CCESS_METHOD]={BG|MM} -[NO]DE[FER_TIME][=seconds] -E[XTENSION_COUNT]=integer(no of blocks) -F[LUSH_TIME]=integer -G[LOBAL_BUFFERS]=integer -[NO]INST[_FREEZE_ON_ERROR] -JN[LFILE]journal-file-name -K[EY_SIZE]=bytes -L[OCK_SPACE]=integer -M[UTEX_SLOTS]=integer -PA[RTIAL_RECOV_BYPASS] -[NO]Q[DBRUNDOWN] -REC[ORD_SIZE]=bytes -REG[ION] region-list -REP[LICATION]={ON|OFF} -RES[ERVED_BYTES]=integer] -S[TANDALONENOT] -V[ERSION]={V4|V6} -W[AIT_DISK]=integer
MUPIP SETコマンドで-ACCESS_METHOD、-GLOBAL_BUFFERS、-LOCK_SPACEまたは-NOJOURNALが指定されている場合、または、-JOURNALオプションのいずれか(ENABLE、DISABLE、または、BUFFER_SIZE)が指定されている場合は、データベースへの排他的アクセスが必要です。
file-name、journal_file_name、region-list または -REPLICATION修飾子は、SETのターゲットを識別します。
SETコマンドには、SETへの引数がファイル名であるか地域リストであるかを判別する次のターゲット修飾子のいずれかが含まれていなければなりません。
引数が単一のデータベースファイルのファイル名であることを指定します。FILE修飾子の形式は次のとおりです:
-F[ILE]
次の修飾子とは同時利用できません: -JNLFILE、-REGIONおよび-REPLICATION
引数がジャーナル・ファイル名(journal-file-name)であることを指定します。JNLFILE修飾子のフォーマットは次のとおりです:
-JNLF[ILE] journal-file-name
次の修飾子とは同時利用できません: -FILE, -REGION and -REPLICATION
現在のグローバルディレクトリでマップされたデータベースファイルを識別する領域リストとなる引数を指定します。REGION修飾子の形式は次のとおりです:
-R[EGION] region-list
領域(REGION)リスト(region-list)は、SETの対象を識別します。region-listは、リスト内の現在のグローバルディレクトリの複数の領域(Region)を指定することができます。領域(Region)は大文字と小文字を区別せず、カンマで区切り、ワイルドカードを使用して指定できます。どの領域名(region-name)にもワイルドカード文字 * と % を含めることができます(シェルによる不適切な拡張からそれらを保護するためにエスケープすることを忘れないでください)。領域(Region)名の展開は、M(ASCII)の照合順序で行われます。
次の修飾子とは同時利用できません: -FILE、-JNLFILE および -REPLICATION。
複製がオンかオフかを指定します。REPLICATION 修飾子の形式は次のとおりです:
-REP[LICATION]={ON|OFF}
次の修飾子とは同時利用できません:-FILE、-JNLFILE、および -REGION。
次のセクションでは、第6章: “GT.M ジャーナリング” および 第7章:“データベース複製” で説明されている、ジャーナリングとレプリケーションに関連する詳細を除いたMUPIP SETコマンドのアクション修飾子について説明します。 これらの修飾子はすべて、-JNLFILE および -REPLICATION修飾子と同時利用できません。
グローバルデータベースファイルからのデータの格納および取得のためのアクセス方法(GT.Mバッファリング戦略)を指定します。ACCESS_METHOD修飾子の形式は次のとおりです:
-A[CCESS_METHOD]=code
ACCESS_METHODの指定の詳細については、 “セグメント修飾子” を参照してください。
MMアクセスモードで、ジャーナルバッファのディスクへの書き込みを保証する前に、更新後に待機を生成するためにフラッシュ時間に適用される倍率を指定します。デフォルトは1です。値 2 は、フラッシュ時間の2倍の待機を生成します。 -NODEFER_TIME または -1 の値を指定すると、定期的なジャーナル書き込みがオフになり、軽い更新条件の下で、エポック時間と同じくらい古い時間が得られます。sync_ioオプションが設定されていないMMモードでは、アプリケーションからのVIEW( "JNLFLUSH")がないと、GT.Mはエポックでジャーナルをfsyncします。DEFER_TIME修飾子の形式は次のとおりです:
-[NO]D[efer_time][=seconds]
既存のデータベースファイルを拡張するGDSブロックの数を指定します。ファイルまたは領域の名前が必要です。この修飾子はスタンドアロンアクセスが必要です。EXTENSION_COUNTコマンドのフォーマットは次のとおりです:
-E[XTENSION_COUNT]=integer
EXTENSION_COUNT の指定の詳細については、 “セグメント修飾子” を参照してください。
古いキャッシュバッファの書き込みを引き延ばす間の時間量を指定します。デフォルト値は1秒で、最大値は1時間です。-FLUSH_TIMEには、スタンドアロンアクセスが必要です。FLUSH_TIME修飾子のフォーマットです:
-F[LUSH_TIME]=[[[HOURS:]MINUTES:]SECONDS:]CENTISECONDS
BGデータベースに対するキャッシュバッファ数を指定します。この修飾子はスタンドアロンアクセスが必要です。GLOBAL_BUFFERS修飾子の形式は次のとおりです:
-G[LOBAL_BUFFERS]=integer
GLOBAL_BUFFERSの有効な作業サイズを決定する方法の詳細については、 “セグメント修飾子” を参照してください。
一般的に、グローバルバッファ数の増加は、システム上のI/O負荷のピークを平滑化することにより、パフォーマンスを改善します。しかし、グローバルバッファの数を増やすと、システムのメモリ要件も増加し、メモリが制約されたシステム上のグローバルバッファの数が増えると、バッファがスワップアウトされる確率が高くなります。もしグローバルバッファがスワップアウトされるならば、グローバルバッファ数の増加から任意のパフォーマンスを得ること以上に、グローバルバッファのスワップのパフォーマンスへの影響により相殺されることでしょう。ほとんどのアプリケーションは頻繁に使用されるデータベース領域では1000から4000のグローバルバッファを使用します。特殊な状況を除いて、FISは 256以下のバッファを使用することは推奨しません。
最小は64バッファで、最大は65536バッファです。デフォルトでは、MUPIP CREATEはGLOBAL_BUFFERSはグローバルディレクトリに入った情報を使用して確立されます。
多くのUNIXシステムでは、デフォルトのカーネルパラメータではGT.Mのグローバルバッファにとっては不十分な可能性があり、システム管理者によって調整される必要があるでしょう。
ある領域内のカスタムエラーを有効または無効にして、インスタンスフリーズを自動的に発生させます。このフラグは、 "Inst Freeze on Error" ファイルヘッダーフラグを変更します。INST_FREEZE_ON_ERROR修飾子の形式は次のとおりです:
-[NO]INST[_FREEZE_ON_ERROR]
インスタンスフリーズを自動的に引き起こすカスタムエラーのリストの作成の詳細については、“インスタンスフリーズ” を参照してください。
どのインスタンスでインスタンスが使用可能になっているかにかかわらず、インスタント・フリーズを即座に設定またはクリアする方法の詳細は、「データベース・レプリケーション」の章の “ソース・サーバーの起動” を参照してください。
データベースがジャーナリングを許可するかどうかを指定し、そして、もしなるならば、ジャーナルファイルの特性を許可するかどうかを指定します。
注意 | |
---|---|
ジャーナリングを有効または無効にしている領域(Region)では、スタンドアロン・アクセスまたは更新のフリーズを必要とせずにジャーナルファイルを切り替えることができます。 |
JOURNAL修飾子の形式は次のとおりです:
-[NO]J[OURNAL][=journal-option-list]
-NOJOURNALは、データベースがジャーナリングを許可しないことを指定します。そして、また、引数の割り当ては受け付けてません。
-JOURNALは、ジャーナリングが許可されていることを指定します。それは、ジャーナルオプションリストの1つ以上の引数をとります。
すべてのJOURNAL修飾子とそのキーワードの詳細については、 “SET -JOURNALオプション ” を参照してください。
グローバル・データベース・ファイルからデータを格納および取得するための最大キーサイズをバイト単位で指定します。サポートされる最大サイズは 1019 バイトです。KEY_SIZE修飾子の形式は次のとおりです:
-K[EY_SIZE=bytes
KEY_SIZEの詳細については、“領域(Region)修飾子” を参照してください。
Mの管理に割り当てられているページ数はデータベースに関連付けられたロックを指定します。ページのサイズは常に512バイトです。LOCK_SPACE修飾子のフォーマットです:
-L[OCK]_SPACE=integer
最大のLOCK_SPACEは、65,536ページです。
最小のLOCK_SPACEは、10ページです。
デフォルトのLOCK_SPACEは40ページです。
LOCK_SPACEの詳細は、 “セグメント修飾子” を参照してください。
この修飾子はスタンドアロンアクセスが必要です。
GT.Mがデータベースの主要クリティカルセクションの競合を管理するために使用する構造体のサイズを設定します。パフォーマンスの問題は、データベースアクセスを競合するプロセスが多数ある場合、および、この構造が待機中のすべてのプロセスに対応できない場合に発生する可能性があります。したがって、FISでは、データベースにアクセスすると予想される同時プロセスの最大数よりもわずかに多い値にこの値を設定することを推奨しています。
最小値は64、最大値は32768です。デフォルト値は 1024 です。MUTEX_SLOTS修飾子の形式は次のとおりです:
-M[UTEX_SLOTS]=integer
例えばベンチマークシナリオなど、ほぼ同時にシャットダウンするためにデータベースファイルにアクセスする多数のプロセスが必要な場合、通常のプロセス・シャットダウンを迅速化します。QDBRUNDOWN修飾子の形式は次のとおりです:
-[NO]Q[DBRUNDOWN]
終了するGT.Mプロセスが、多数のプロセスがデータベース・ファイルに接続されていて、かつ、QDBRUNDOWNが使用可能になっていることを確認すると、そのプロセスがデータベースにアクセスしている最後のプロセスかどうかのチェックをバイパスします。このようなチェックはクリティカル・セクションで行われ、バイパスは通常のRUNDOWNアクションをバイパスし、プロセスのシャットダウンを加速し、プロセス起動の障害を取り除きます。デフォルトでは、QDBRUNDOWNは無効です。
QDBRUNDOWNでは、データベースファイルのヘッダーとIPCリソースをクリーンアップする必要がある競合状態が発生する可能性があることに注意してください。QDBRUNDOWNは競合状態の可能性を最小限に抑えますが、それを排除することはできません。QDBRUNDOWNを使用する場合、FISは、データベースファイルのヘッダーおよびIPCリソースのクリーンアップを確実にするために、最後のプロセスが終了した後にデータベースファイルの明示的なMUPIP RUNDOWNを推奨します。
データベース・ファイル・ヘッダーの CORRUPT_FILE フラグをFALSEに設定します。CORRUPT_FILE フラグは、領域(Region)が正常にリカバリーを完了したかどうかを示します。PARTIAL_RECOV_BYPASS修飾子の形式は次のとおりです:
-PA[RTIAL_RECOV_BYPASS]
詳細は、 “CHANGE -CHANGE-FIleheader修飾子” のCORRUPT_FILE修飾子を参照してください。
グローバル・データベース・ファイルからデータを格納および検索するための最大レコード・サイズをバイト単位で指定します。サポートされる最大サイズは1MiBバイトです。RECORD_SIZE修飾子の形式は次のとおりです:
-REC[ORD_SIZE=bytes
KEY_SIZEの詳細については、“領域(Region)修飾子” を参照してください。
各データベースブロック内に確保されるサイズを指定します。RESERVED_BYTESは、一般的に、Mの通信プロトコルの制限を観察する他の実装、または互換性のための予備の部屋に使用されます。RESERVED_BYTES修飾子の形式は次のとおりです:
-RES[ERVED_BYTES]=size
RESERVED_BYTESは、また、フィルファクターのユーザ管理として使用されることがあります。
最小のRESERVED_BYTESは、ゼロバイトです。プラットフォームに応じて、RESERVED_BYTESの最大は、ブロックサイズから7または8のどちらかのブロックヘッダを引いた値です。現実的に決定するこの量は、最大サイズのうちの少なくとも1つのレコードの余地を残す必要があります。
後続のすべての新しいブロックの、ブロック・フォーマット・バージョン(ファイルヘッダの希望DBフォーマットフィールド)を設定します。VERSION修飾子の形式は次のとおりです:
-V[ERSION]={V4|V6}
MUPIP UPGRADEとMUPIP REORG -UPGRADEは、MUPIP REORG -DOWNGRADEがV4に設定している間に、データベースファイルヘッダーの中で希望のDBフォーマットフィールドをV6に設定します。
バージョンをV4に設定するには、データベースの現在のトランザクション番号(CTN)が最大32ビットの範囲内になければなりません。
V6ブロックフォーマットは、V5ブロックフォーマットと互換性があります。GT.M V5.* のバージョンで使用すると、V6フォーマットのより長いキーおよび長いレコード(スパニングノード)機能は自動的に無効になります。
データベースのアップグレードまたはダウングレードの詳細については、現在のGT.Mバージョンのリリースノートのドキュメントを参照してください。
データベースブロックの書き込みを断念するまでのディスク領域を待機する秒数を指定します、ここで、ゼロ(0)は待機せずにただちにエラーを出すことを意味します。WAIT_DISK 修飾子の形式は次のとおりです:
-W[AIT_DISK]=seconds
例:
$ mupip set -journal=on,nobefore -region "*"
この例では、NOBEFOREイメージジャーナリングを有効にし、すべての領域(Region)のジャーナリングをオンにします。
$ mupip set -version=V4 -file mumps.dat Database file mumps.dat now has desired DB format V4
この例では、ブロック・フォーマットをV6データベース・ファイルmumps.dat内のすべての後続の新規ブロックについてV4に設定します。
例:
$ mupip set -version=v6 -file mumps.dat Database file mumps.dat now has desired DB format V5
この例では、ブロック・フォーマットをV4データベース・ファイルmumps.dat内のすべての後続の新規ブロックについてV6に設定します。
例:
mupip set -flush_time=01:00:00:00 -region DEFAULT
この例では、フラッシュ時間を1時間に設定します。フラッシュ時間は、[[[時間:]分:]秒:]ミリ秒( [[[HOURS:]MINUTES:]SECONDS:]CENTISECONDS )の任意の組み合わせで指定することもできます。MUPIPは、-FLUSH_TIME=360000 または -FLUSH_TIME=00:60:00:00 を -FLUSH_TIME=01:00:00:00 と解釈します。
例:
$ mupip set -region REPTILES -inst_freeze_on_error
この例では、領域 REPTILES でカスタムエラーを有効にしてインスタンスフリーズを発生させます。
MUPIP INTEG -FULLレポートの最後に表示される形式と同様の形式を使用して、グローバル変数のサイズを見積もり報告します。MUPIP SIZE は、MUPIP INTEG -FAST -FULLと比較して、データベースファイル内のグローバル変数のサイズを推定する3つの推定手法のいずれかを選択するオプションを提供します。これらの技法は、測定速度と推定精度が異なります。MUPIP SIZEコマンドの形式は次のとおりです:
MUPIP SI[ZE] [-h[euristic]=estimation_technique] [-s[elect]=global-name-list] [-r[egion]=region-list] [-a[djacency]=integer]
MUPIP SIZEのオプションの修飾子は次のとおりです:
-Heuristic=estimation_technique
グローバル変数のサイズを推定するために MUPIP SIZEが使用する推定手法を指定します。-HEURISTIC 修飾子の形式は次のとおりです:
-h[euristic]={sc[an][,level=<lvl>] | a[rsample][,samples=<smpls>] | i[mpsample][,samples=<smpls>]}
smpls はサンプル数であり、0 より大きくなければなりません。
lvl は、正または負のツリーレベルの指定で、-(level of the root block) <= lvl <= (level of the root block) ( -( ルートブロックのレベル) <= lvl <= ( ルートブロックのレベル)
estimation-technique は、次のいずれかです:
scan,level=<lvl>
グローバル変数ツリーを走査し、ルートから lvl(デフォルトは0、データブロック)で指定されたレベルまでのレベルのレコードとブロックの実際の数をカウントします。もし与えられたレベルが負でない場合、それはカウントが要求されているグローバルの最低ブロックレベルです。したがって、0 はすべてのブロックを意味し、1 はすべてのインデックスブロックを意味し、2 はレベル2以上のすべてのインデックスブロックを意味します。SCANは、グローバル・ツリーのルートから負のレベルを数えます。ここで、-1はルートの子を意味します。
このテクニックでは、0 以外のレベルの結果は、次に低い(1つ少ない)レベルの隣接関係を示します。
arsample,samples=<smpls>
各レベルでのブロック数を推定するために、ランダム・ツリー・トラバーサルの受け入れ/拒否サンプリングを使用します。指定されたサンプル数(デフォルトは1,000)が受け入れられるまで続きます。
impsample,samples=<smpls>
各レベルでツリーのサイズを推定するために、指定された数のサンプル(デフォルトは1,000)の各サンプルを重み付けするためのランダムツリートラバーサルの重要度サンプリングを使用します。
もし -HEURISTICが指定されていない場合、MUPIP SIZEはARSAMPLE、SAMPLE = 1000推定手法を使用します。
重要 | |
---|---|
大きなデータベースの場合、MUPIP SIZE は MUPIP INTEG -FAST -FULLよりも高速です。IMPSAMPLE は、最も速い推定手法であると予想され、ARSAMPLE、SCANが続きます。 精度に関しては、MUPIP INTEG -FAST -FULL が最も正確です。 |
-Adjacency=integer
MUPIP SIZE が、推定時に想定するデータブロックの論理的な隣接関係を指定します。デフォルトでは、MUPIP SIZE は、 -ADJACENCY=10 とみなし、MUPIP SIZE レポート の [Adjacent] 列に論理的な隣接関係を報告します。隣接関係はデータベース構成のプロキシであり、その有用性はセカンダリストレージの技術と構成によって制限されることに注意してください。隣接に関する追加のコメントについては、この章のINTEGセクションを参照してください。
-Select
MUPIP SIZE が実行されるグローバル変数を指定します。もし -SELECT が指定されていない場合、MUPIP SIZEはすべてのグローバル変数を選択します。
SELECT修飾子の形式は次のとおりです:
-s[elect]=global-name-list
global-name-list には次のものがあります:
カンマで区切られたグローバル変数のリスト
start:end 構文で示される一連のグローバル変数たとえば、-select="g1:g4"
ワイルドカードを持つグローバル変数(例: "g*"(シェルのファイル拡張を避けるために名前をエスケープする必要があります)
"*" で、すべてのグローバル変数を選択します。
-Region
MUPIP SIZE が実行される領域を指定します。もし REGION が指定されていない場合、MUPIP SIZEはすべての領域を選択します。REGION修飾子の形式は次のとおりです:
-R[EGION]=region-list
例:
$ mupip size -heuristic="impsample,samples=2000" -select="y*" -region="AREG"
この例では、 "y"で始まるすべてのグローバル変数のサイズを見積もります。これは、領域 AREG で2000サンプルの重要度サンプリングを使用します。
$ mupip size -heuristic="scan,level=-1"
この例では、データベースツリーのルートの1レベル下のブロックとレコードの数をカウントします。
$ mupip size -heuristic="arsample" -select="g1:g3"
この例では、グローバル変数 g1、g2、g3 のサイズを、受入 / 拒否 サンプリングを使用して、それらが存在する地域に関係なくデフォルトのサンプル数で見積もります。
注意 | |
---|---|
サンプリングの経験則によって引き起こされるランダム性とは別に、MUPIP SIZEは、MUPIP INTEG が使用するスナップショット技術を使用しないため、同時更新によるランダム性も持ちます。 |
GT.Mの実行イメージを終了します。実行イメージは、プロセスによって現在開いているすべてのデータベースから正常に切断された後、終了します。MUPIP STOPは kill -15 を実行し、したがって、GT.M以外の実行イメージを停止するためにも使用できます。
STOPコマンドのフォーマット:
MUPIP ST[OP] process-id
アクティブなプロセス名とプロセス識別子(PID)のリストを表示するには、シェルコマンドpsを使用します。
自分のアカウントに属するプロセスを停止するために、プロセスは特権を全く必要としません。別のアカウントに属するプロセスを停止するために、MUPIP STOPはrootとして実行する必要があります。
注意 | |
---|---|
MUPIP STOP信号を受け取ると、GT.Mプロセスはシャットダウンする前にデータベースの管理に参加することをクリーンアップします。3つの MUPIP STOP信号を順番に連続して受信すると、GT.Mプロセスはクリーンアップせずにすぐにシャットダウンします。これは kill -9 シグナルに相当します。GT.Mは、あらゆる状況下でのデータベースの破損を防ぐために、プロセスの即時終了に応じて何が起こるのかを十分に制御していないため、構造的なデータベースの損傷を招く可能性があります。 いずれの場合でも、MUPIP STOPの受信時に、クリーンアップに必要なリソースを取得すると、プロセスは最終的に終了します。最後の手段として3つのMUPIP STOPを連続して使用するときは、できるだけ早くMUPIP INTEGを実行し、データベースの構造的損傷をチェックし、第11章(データベース整合性の維持)の手順に従って損傷を修復します。 アプリケーションがトランザクションの最終的な試行でプロセスが取得される可能性を低減または排除するように設計されている場合は、MUPIP STOPを実行する必要はありません。詳細については、「プログラマーズガイド」を参照してください。 |
トリガー定義を検査またはロードします。MUPIP TRIGGER コマンドの形式は次のとおりです:
TRIGGER {-TRIG[GERFILE]=<trigger_definitions_file> [-NOPR[OMPT]]|[-SELE[CT][=name-list|*][<select-output-file>]|-UPGRADE}
MUPIP TRIGGERコマンドを実行する前に:
環境変数 gtmgbldir
:の値を設定して、現在のグローバルディレクトリの値を指定します。
データベースのキー・サイズ、レコード・サイズ、ブロック・サイズが、トリガー定義を格納するのに十分であることを確認してください。それ以外の場合に必要となるデータベースのコンテンツよりも大きなキーとレコードのサイズを設定する必要があります。
MUPIP TRIGGER コマンドの修飾子は次のとおりです:
TRIGgerfile=<trigger_definitions_file>
トリガー定義ファイルをデータベースにロードします。TRIGGERFILE修飾子の形式は次のとおりです:
-TRIG[GERFILE]=<trigger_definitions_file> [-NOPR[OMPT]]
トリガ定義ファイルの構文と使用法については、「トリガ」の章とGT.Mプログラマーズガイド の「関数」の章の$ZTRIGGER() を参照してください。
MUPIP TRIGGER-TRIGGERFILE操作はトランザクション境界内で発生するため、トリガー定義ファイルからの1つのトリガでも正しく解析できない場合、MUPIP TRIGGERはトリガ定義ファイルのロード全体をロールバックします。トリガー・メンテナンス操作は、トランザクションがコミットするまでその出力を予約し、その時点で一貫した方法で出力全体を配信します。MUPIP TRIGGER 操作の暗黙のタイムアウトはゼロ(0)です。つまり、最初の試行で読み取りが成功する必要があります。そうでない場合と同じように動作します。
MUPIP TRIGGER -TRIGGERFILE は空白行と行内の余分な空白を無視します。最初の位置にあるセミコロンの行をコメントとして扱い、その内容を無視します。
MUPIP TRIGGERは、XECUTEアクション文字列をコンパイルし、コンパイルにエラーがある場合はロードを拒否します。
トリガの読み込みと実行中に、常に環境変数 gtm_chset
に同じ値を指定してください。もしトリガのロードと実行中に異なるgtm_chsetの値を指定すると、MUPIP TRIGGERは実行時エラー(TRIGINVCHSET)を生成します。GT.Mはプロセスが異なるキャラクタセットを使用するトリガで異なるノードを更新するのを妨げませんが、GT.Mはプロセスが異なるキャラクタセットを持つ同じトリガノードを更新するのを防ぎます。すべてのデータベースの更新に関するコーディングの練習は、ロードコンパイルとランタイムコンパイル時にgtm_chsetに同じ値を指定するようにする必要があります。
MUPIP TRIGGERはトリガー定義を、オリジナル/プライマリ・インスタンスからLGTRIGジャーナル・レコードに基づく複製/セカンダリ・インスタンスへの論理アクションとしてレプリケートします。これにより、インスタンスに異なるトリガーセットと異なるデータベースレイアウト(たとえば、異なる領域数、異なるブロックサイズ、異なる最大レコードサイズなど)を持つことができます。
トリガーのロードに関連するMUPIP TRIGGERエラーメッセージは、トリガー式のソース行を末尾の省略記号を含む80文字に制限し、テキストの数が多いことを示し、ドット以外の文字をドット(.)で置き換えます。
GT.Mトリガーはスパニング領域に適用されます。$ZTRIGGER() または MUPIP TRIGGER が複数の領域にまたがるグローバルに適用されるトリガを定義すると、各スパン領域が定義をインストールします。
次の修飾子とは同時利用できません: -SELECT
注意 | |
---|---|
トリガ更新サマリーレポートは、名前とオプションの変更を「変更済み」としてカウントするだけでなく、-COMMANDSリストが機能的に追加または削除されている場合でもカウントされます。 |
現在のトリガー定義を調べる機能を提供します。SELECT は、グローバル変数またはトリガ名のカンマ区切りリストの現在のトリガのリストを生成します。SELECT修飾子の形式は次のとおりです:
-SELE[CT][=name-list*][ <select-output-file>]
名前リスト(name-list) には、先頭のキャレット(^)で区切られたグローバル名、および/または、先頭にキャレットのないトリガー名(ユーザー定義または自動生成)を含めることができます。いずれかを使用して末尾のアスタリスク(*)を指定することができます。
引数が指定されていない場合、GT.Mは -SELECT を -SELECT="*" として扱い、現在のすべてのトリガのリストを抽出します。
オプションで、ファイル名を指定してコマンドの出力をリダイレクトすることができます。もしファイル名を指定しない場合、MUPIP TRIGGERはファイル名の入力を要求します。もし空の文字列(RETURN)で応答すると、MUPIP TRIGGERは出力をSTDOUTに指示します。
MUPIP TRIGGER -SELECTは、STDOUT上のエラーを含むすべての出力を表示します。
トリガ定義レポート操作 $ZTRIGGER("SELECT") および MUPIP TRIGGER -ELECTの場合、選択の基準で select にエラーが発生すると、非ゼロ終了ステータスが返されます。
MUPIP TRIGGER -SELECT は、複数行のXECUTE文字列が改行文字で終了しない場合でも機能します。複数行のXECUTE文字列の詳細については、「トリガ」の章の「トリガ定義ファイル」の -xecute="|<<strlit1"|>> セクションと、GT.Mプログラマーズガイド の「関数」の章の $ZTRIGGER() セクションを参照してください。
「プログラマーズガイド」を参照してください。注意 | |
---|---|
MUPIP TRIGGER -SELECTコマンドの出力は、トリガー定義ファイルと異なる場合があります。これは、GT.Mが意味的に同じ構文を単一の内部表現に変換するためです。 -SELECT出力は-TRIGGERFILE入力と同じではない場合もありますが、同じ意味です。さらに、MUPIP TRIGGER -SELECTは、コメントの一部として "Cycle"というフィールドを表示します。Cycleは、グローバル・ノードで実行されるトリガー定義の更新(追加、変更、または削除)の回数です。 |
重要 | |
---|---|
MUPIP TRIGGERは、存在しないトリガの削除を成功として扱います。 それが唯一の操作または一連の正常な操作の1つであれば、成功 0 をシェルに返します。また、MUPIP TRIGGER は、ポンド記号(#)の後の数字が0(自動生成された不可能なトリガ名)で始まるトリガ名を使用して、トリガ選択の場合に失敗を返します。 |
古いトリガー定義を現在の形式にアップグレードします。
UPGRADE修飾子の形式は次のとおりです:
-UPGRADE
もしGT.Mが古いトリガ定義に遭遇すると、NEEDTRIGUPGRDメッセージが生成されます。以前のバージョンに簡単にダウングレードできるようにするには、MUPIP TRIGGER(または $ZTRIGGER() )を使用して選択した "*" アクションを実行し、結果を保存します。TRIGGER -UPGRADEは、既存のトリガ定義が適切に定義されていることを前提としています。 以前のリリースで不良トリガーが発生した場合は、ワイルドカード(「*」)で削除してください.MUPIP TRIGGER -UPGRADEを実行し、新しいリリースでトリガーを再定義してください。ダウングレードの場合は、ダウングレード前に "*" をすべて削除し、アップグレード前に保存したバージョンを挿入します。データベースに対する書き込み許可なしでデータベースに対してMUPIP TRIGGER-UPGRADEを実行しようとすると、TRIGMODREGNOTRWエラーが発生します。-UPGRADE修飾子は、他のMUPIP TRIGGER 修飾子とは同時利用できません:。
このセクションでは、トリガーの作成、変更、および削除の手順を段階的に説明します。トリガは、プロセス単位で動作する $gtmututines などの環境変数とは異なり、データベースを更新するすべてのプロセスに影響します。したがって、本番環境ではトリガを変更するための慎重に計画された手順を常に実行することをお勧めします。
グローバルノード ^Acct("ID") の新しいトリガーを作成するには:
エディタを使用して、次のエントリを使用して triggers.trg というトリガ定義ファイルを作成します。
+^Acct("ID") -name=ValidateAccount -commands=S -xecute="Write ""Hello Earth!"""
$ mupip trigger -triggerfile=triggers.trg
このコマンドは、 ^Acct("ID")
のトリガーを追加します。トリガが正常にロードされると、このコマンドは次のような出力を表示します:
File triggers.trg, Line 1: ^Acct trigger added with index 1 ========================================= 1 triggers added 0 triggers deleted 0 trigger file entries not changed 0 triggers modified =========================================
ここで、グローバルノード ^Acct("ID") 上のすべての S[et] 操作がトリガーを実行します。
次のようなコマンドを実行します:
$ mupip trigger -select="^Acct*"
このコマンドは、トリガーを表示します。サンプル出力は次のようになります:
;trigger name: ValidateAccount# cycle: 1+^Acct("ID") -name=ValidateAccount -commands=S -xecute="Write ""Hello Earth!"""
グローバルノード ^Acct("ID") の既存のトリガを変更するには:
既存のトリガー定義を新しいものに直接置き換えることはできません。-NAME および -OPTIONS を除き、既存のトリガーを変更するには、既存のトリガー定義を削除し、変更されたトリガー定義を新しいトリガーとして追加する必要があります。GT.Mは、S[ET] がトリガー呼び出しコマンドであるかどうかによって、トリガー定義と一致する2つの異なるトリガー比較を実行することに注意してください。もし S[ET] がある場合、比較はグローバル名と添字、PIECES、[Z]DELIM、および、XECUTEに基づいて行われます。もしSETがない場合、GT.Mはグローバルノードのみを添字と -XECUTEコードの値と比較します。
最初に、次のコマンドを実行します。
$ mupip trigger -select="^Acct*"Output file:
trigger_mod.trg
を出力ファイルとして指定します。このファイルには、次のようなエントリが含まれています:
;trigger name: ValidateAccount# cycle: 1 +^Acct("ID") -name=ValidateAccount -commands=S -xecute="Write ""Hello Earth!"""
エディタを使用して、trigger_mod.trgを開き、ValidateAccount のトリガ定義エントリの+(プラス)を - (マイナス)に変更し、^ Acct( "ID")の新しいトリガ定義を追加します。一貫性のないアプリケーションの動作を避けるためには、古いトランザクションを同じトランザクション(アトミック)内の新しいトランザクションに置き換えることが重要です。trigger_mod.trg ファイルには次のようなエントリが必要です:
;trigger name: ValidateAccount# cycle: 1 -^Acct("ID") -name=ValidateAccount -commands=Set -xecute="Write ""Hello Earth!""" ;trigger name: ValidateAccount#+^Acct("ID") -name=ValidateAccount -commands=Set -xecute="Write ""Hello Mars!"""
次のようなコマンドを実行します:
$ mupip trigger -triggerfile=trigger_mod.trg
このコマンドは、次のような出力を表示します:
File trigger_mod.trg, Line 1: ^Acct trigger deleted File trigger_mod.trg, Line 3: ^Acct trigger added with index 1 ========================================= 1 triggers added 1 triggers deleted 0 trigger file entries not changed 0 triggers modified =========================================
おめでとう!ValidateAccount の xecute文字列を新しいものに変更しました。
グローバルノード ^Acct("ID") の既存のトリガーを削除するには:
最初に、次のコマンドを実行します。
$ mupip trigger -select="^Acct*"Output file:
trigger_delete.trg
を出力ファイルとして指定します。 このファイルには、次のようなエントリが含まれています:
;trigger name: ValidateAccount# cycle: 3 +^Acct("ID") -name=ValidateAccount -commands=S -xecute="Write ""Hello Mars!"""
エディタを使用して、ValidateAccount
のトリガ定義エントリの+(プラス)を - (マイナス)に変更します。あるいは、-ValidateAccount
のようなエントリを持つファイルを作成することもできます。
次に、以下のようなコマンドを実行します:
$ mupip trigger -triggerfile=trigger_delete.trg
このコマンドは、次のような出力を表示します:
File trigger_delete.trg, Line 2: ^Acct trigger deleted ========================================= 0 triggers added 1 triggers deleted 0 trigger file entries not changed 0 triggers modified =========================================
トリガー "ValidateAccount" を正常に削除しました。
グローバルノード ^Acct("ID") のトリガー名を変更するには:
エディタを使用して、 trigger_rename.trg
という名前の新しいファイルを作成し、ValidateAcct
と同じトリガーシグネチャを持つ ValidateAccount
のトリガ定義エントリを追加します。トリガーの定義は次のようになります:
+^Acct("ID") -name=ValidateAcct -commands=S -xecute="Write ""Hello Mars!"""
Verify that the ValidateAccount
trigger exists by executing the following command:
次のコマンドを実行して、 ValidateAccount
トリガーが存在することを確認します:
$ mupip trigger -select="^Acct*"Output file:
空の文字列で応答します(Enterキーを押します)。トリガー要約レポートに次のようなエントリが含まれていることを確認します:
;trigger name: ValidateAccount# cycle: 3 +^Acct("ID") -name=ValidateAccount -commands=S -xecute="Write ""Hello Mars!"""
次に、以下のようなコマンドを実行します:
$ mupip trigger -triggerfile=trigger_rename.trg
このコマンドは、次のような出力を表示します:
========================================= 0 triggers added 0 triggers deleted 0 trigger file entries not changed 1 triggers modified =========================================
トリガ名 ValidateAccount
を ValidateAcct
に変更しました。
データベースのファイルヘッダをアップグレードします。MUPIP UPGRADE コマンドの形式は次のとおりです:
UP[GRADE]
現在のトランザクション番号(CTN)、最大TN、トランザクション番号を含むその他のファイルヘッダーフィールドのサイズを4バイトから8バイトに増やします。
これは、さまざまなトレースカウンタをリセットし、データベース形式をV5に変更します。この変更は個々のデータベースブロックをアップグレードするのではなく、データベースフォーマットフラグをV5に設定します。
また、V4形式の現在のブロックのカウンタを初期化します。このカウンタは、既存のV4フォーマットブロックがV5フォーマットに変換されるたびに減少します。カウンタが 0 の場合、データベース全体が変換されます。