管理の手引き
次の考慮事項が、ログ・ファイルの保存と検索のためのユーザー出口プログラムの呼び出しに適用されます。
- データベース構成ファイル・パラメーター userexit は、
データベース・マネージャーがユーザー出口プログラムを呼び出して、ファイルを保存するか、
またはデータベースのロールフォワード回復時にログ・ファイルを検索するかを指定します。
ログ・ファイルの検索要求は、ロールフォワード・データベース回復ユーティリティーで、
ログ・パス・ディレクトリーにないログ・ファイルが必要となるときに行われます。
注:
- Windows NT の場合、REXX ユーザー出口を使用してログを保存することはできません。
- 保存の際、ログ・ファイルがまだ活動状態で通常の処理に必要な場合でも、
ログ・ファイルがいっぱいになると、ユーザー出口に渡されます。
このことにより、揮発性媒体からできるだけ速くデータのコピーを移動させることができます。
ユーザー出口に渡されたログ・ファイルは、通常の処理に必要でなくなるまで、
ログ・パス・ディレクトリーに保持されます。
必要なくなった時点で、ディスク・スペースは再使用されます。
- DB2 は、ユーザー出口が開始してログ・ファイルを保存すると、
読み取りモードでファイルをオープンします。
したがって、ユーザー出口は、ファイルが活動状態にある時には、
そのファイルを削除できないようにしなければなりません。
DB2 は、そのファイルが非活動状態になったときにクローズします。
ファイルが非活動状態になったときにユーザー出口が完了する場合は、
ログ・ファイルは削除できますが、
それを実行することはパフォーマンスを犠牲にすることになります。
- ログ・ファイルが保存されて非活動状態になると DB2 はファイルを削除しませんが、
そのファイルが必要とされるとき、次のログ・ファイルとして名前を変更します。
(ファイルの名前を変更する代わりに) 新しいログ・ファイルを作成すると、
ディスク・スペースを保証するためにすべてのページを書き出さねばならないので、
これはパフォーマンスの向上になります。
ディスク上の必要なページを再使用する方が、それを解放して再取得するよりも優っています。
- DB2 は、破損回復またはロールバックの両方の場合、
ログ・ファイルの検索をするために、ユーザー出口を呼び出しません。
- ユーザー出口プログラムは障害の時点までロールフォワード回復することを保証しませんが、
障害ウィンドウを小さくしようとすることだけはします。
ログ・ファイルがいっぱいになると、ユーザー出口ルーチン用に待ち行列化されます。
ログ・ファイルがいっぱいになる前にログを含むディスクに障害が起きた場合は、
そのログ・ファイル内のデータは失われます。
また、ファイルは保存用に待ち行列化されるので、
すべてのファイルがコピーされる前にディスクに障害が起こることがあります。
待ち行列内のすべてのログ・ファイルが失われます。
- 個々のログ・ファイルの構成サイズは、ユーザー出口に直接影響します。
個々のログ・ファイルが非常に大きい場合、ディスクに障害が起こると、
大量のデータが失われることがあります。
小さいログ・ファイルで構成されたログ・ファイルは、
より頻繁にデータをユーザー出口ルーチンに渡させます。
しかし、テープなど比較的低速の装置にデータを移動している場合は、
比較的大型のログ・ファイルを使用して、
待ち行列が作成されないようにすることもできます。
待ち行列がいっぱいになると、保存と検索の要求は処理されません。
待ち行列に余地があれば、処理が再開します。
処理されない要求が自動的に再び待ち行列化されることはありません。
- ユーザー出口プログラムに対する保存要求は、
userexit が構成されたときに限り、
アクティブ・ログ・ファイルがいっぱいになるたびに発生します。
データベースからの最後の切断が生じたときにアーカイブ・ログ・ファイルがいっぱいになっていないことがあります。
また、いっぱいになっていないアクティブ・ログ・ファイルに対してユーザー出口プログラムが呼ばれることもあります。
注: | 未使用のログ・スペースを解放するために、
ログ・ファイルは未使用の部分が切り捨てられてから保存されます。
|
- ログ・ファイルを含む装置に媒体障害がある場合に、
ロールフォワード回復でオフライン・ログ・ファイルを使用できるように、
別の物理装置に対してログのコピーが行われる必要があります。
この装置は、データベース・データ・ファイルのある装置と同じであってはなりません。
- 場合によっては、
保存要求に対する肯定応答をユーザー出口プログラムから受け取る前にデータベースがクローズすると、
データベース・マネージャーはデータベースがオープンするときに別の要求を送信します。
したがって、ログ・ファイルが複数回保存されることがあります。
複数回の保存をしたくない場合は、
ユーザー出口プログラムが同じファイルの後続の保存要求を認めないようにしなければなりません。
- ユーザー出口プログラムが、
存在しないファイルの保存要求を受け取ったり (保存要求が複数あり、
最初の保存が正常実行された後にそのファイルが削除されたため)、または、
存在しないファイルの検索要求を受け取ったり (別のディレクトリーにあるか、
またはログの末尾に達したため) すると、
この要求を無視して正常な戻りコードを戻す必要があります。
- リモート・クライアントが DB2 サーバーとの接続を失うと、
ユーザー出口には割り込みが生じます。
つまり、ユーザー出口を介してログの保存を処理している間に、
もう一方の SNA 接続のクライアントが停止するか電源がオフになってしまい、
結果としてサーバーに信号 (SIGUSR1) が送られます。
そしてサーバーはその信号を、割り込みが生じているユーザー出口に渡します。
なお、割り込みがないかどうかを調べてから処理を続行するよう、
ユーザー出口プログラムを修正することができます。
- ユーザー出口プログラムは、特定の時点で回復した後で、
同じ名前の別のログ・ファイルが存在できるようにする必要があります。
その両方のログ・ファイルを保存し、正しい回復パスと関連付けるように作成する必要があります。
("ログ・ファイル管理についての考慮事項"を参照してください。)
- 2 つ以上のデータベースが同時に 1 つの装置を使用しており、
その操作の 1 つがロールフォワード操作に関係している場合、
ロールフォワード回復に必要なログ・ファイルは、
現在ドライブにある媒体に入っている必要はありません。
次の 2 つの条件が起きる可能性があります。
- ユーザー出口プログラムがゼロ (正常実行) の戻りコードをデータベース・マネージャーに戻し、
要求されたログ・ファイルが検索されていない場合、データベース・マネージャーは、
ロールフォワード操作がログの末尾まで完了し、停止したものとみなします。
しかし、ロールフォワード処理は、ログの末尾に達していないこともあります。
- ゼロ以外の戻りコードが戻される場合、データベースはロールフォワード操作保留状態となり、
ユーザーはロールフォワード処理の再開または停止のいずれかを行う必要があります。
上記のいずれかの状態が生じないようにするために、
ユーザー出口プログラムを呼び出すノード上の他のデータベースが、
ロールフォワード操作中にオープンしていないようにするか、
またはこの状態を処理するようにユーザー出口プログラムを作成することができます。
次の考慮事項は、
BACKUP DATABASE および RESTORE DATABASE ユーティリティーから呼び出されるユーザー出口プログラムを作成しようとしている場合に適用されます。
- ゼロ以外の戻りコードがユーザー出口プログラムから戻された場合は、
ユーティリティーは失敗し、再試行は行われません。
- 完全修飾ファイル名のファイル名でワイルドカードがサポートされる必要があります。
たとえば、
C:\SQL00001\*.* と C:\*.MH* はどちらも受け入れることのできる検索基準です。
- ユーザー出口プログラムは、1 行あたり 1 つの完全修飾ファイル名があり、
各行が復帰および改行により終了する応答ファイル形式を扱う必要があります。
ファイルにはファイル終わり文字はありません。
- 同一データベースの複数のバックアップが 1 つの媒体に置かれる場合には、
ユーザー出口プログラムは、
正しいバージョンのバックアップが復元操作時に選択されるように設計する必要があります。
(OS/2 用のユーザー出口プログラムの例に記述されている db2uexit.ex2 の例を参照してください。)
- 1 つのバックアップ装置を共用している 2 つの並行稼働バックアップ処理は、
直列化される必要があります。
- バックアップ・イメージが複数の媒体にまたがる場合は、媒体を求めるプロンプトが、
ユーザー出口プログラムまたはそのプログラムが呼び出すことのできるアプリケーションによって扱われる必要があります。
この機能をサポートする場合には、
BACKUP DATABASE および RESTORE DATABASE がオペレーティング・システムの前景セッションをオープンして、
ユーザー出口プログラムを呼び出します。
- ユーザー出口プログラムは、
データベース・ディレクトリー内のサブディレクトリーのバックアップを行う必要はありません。
- ユーザー出口プログラムを使用するデータベースを復元するときには、
RESTORE DATABASE ではそのデータベースに関する完全な制御が必要です。
しかし、ワークステーションは、復元中でないデータベースに対して、
活動接続を行うことができます。
- データベースがユーザー出口プログラムによってバックアップまたは復元されており、
別の操作が同じテープ装置を使用している場合、
バックアップまたは復元操作は失敗する可能性があります。
この場合、バックアップまたは復元操作は、再始動する必要があります。
この状況を避けるには、
ロギングするためにユーザー出口プログラムを呼び出すワークステーション上の他のデータベースが、
バックアップか復元の操作の進行中に使用されていないことを確認するか、
または装置が作動可能状態でない場合は、あとで、
バックアップか復元の操作をユーザー出口プログラムが再試行するようにできます。
- 復元操作時に、
ドライブ文字とパスがバックアップ操作時に指定されたものと違っていてもかまいません。
たとえば、ファイル dbname.MH1 が C:\SQLUTIL からバックアップされる場合、
それを d:\xxx に復元することができます。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]