ルーチンの共有ライブラリーの再構築

データベース・マネージャーは、いったんロードされると、ストアード・プロシージャーおよびユーザー定義関数に使用される共有ライブラリーを キャッシュに入れます。 ルーチンを開発する場合、同じ共有ライブラリーのロードを何度もテストする場合もあります。 そのキャッシングの際に、最新バージョンの共有ライブラリーを取得できないこともあります。 キャッシングに関連する問題を回避するには、ルーチンのタイプによって方法が異なります。
  1. fenced された、スレッド・セーフではないルーチン。 データベース・マネージャー構成キーワード keepfenced のデフォルト値は YESです。 そのため、fenced モード・プロセスは存続し続けます。 このデフォルト設定によって、ライブラリーの再ロードが妨げられることがあります。 fenced された、スレッド・セーフではないルーチンの開発中はこのキーワードの値を NO に変更しておいて、 最終バージョンの共有ライブラリーをロードする準備ができたら、この値を YES に戻すのが最善の方法です。 詳しくは、 データベース・マネージャー構成パラメーターの更新を参照してください。

  2. 信頼できる、またはスレッド・セーフのルーチン。 SQL ルーチン (SQL プロシージャーを含む) を除き、ルーチン・ライブラリーがトラステッド・ルーチンまたはスレッド・セーフ・ルーチンに使用されるときに、更新されたバージョンのルーチン・ライブラリーが確実に取得されるようにする唯一の方法は、コマンド行で db2stop の後に db2start を入力して、 データベース ・インスタンスをリサイクルすることです。 SQL ルーチンではこれは必要ありません。 SQL ルーチンが再作成される際には、コンパイラーは新しいユニークなライブラリー名を使用して、 競合の可能性を回避するからです。

また SQL ルーチン以外のルーチンの場合、ライブラリーに別の名前 (例えば、 foo.a を foo.1.a にする) を付けて新規バージョンのルーチンを作成し、 その新しいライブラリーで ALTER PROCEDURE または ALTER FUNCTION SQL ステートメントのいずれかを使用すると、 キャッシングの問題を避けることができます。