|
|||||||||||||||||||||||||||||||||||||||||||||||||
DB2 Universal Databaseコマンド行プロセッサー |
|||||||||||||||||||||||||||||||||||||||||||||||||
|
2003年6月 |
|||||||||||||||||||||||||||||||||||||||||||||||||
はじめに 図1を参照してください。対話モードで稼動しているDB2 UDB CLPにSELECT *... ステートメントを入力しました。この特定テーブル(STAFF)はどのデータベースまたはインスタンスに格納されているかおわかりでしょうか。(この場合は予想がつくかもしれませんが)普通は多分わからないと思います。しかし、DB2 UDBにはわかります。 図1.デフォルトのCLPビューには、現在接続しているインスタンスは表示されません 次に、図2を見てください。照会はまったく同じです。今度は先ほどの質問に答えられますか。違っているところがありますか。 図2. CLPは現在接続しているインスタンスとデータベースを表示するようにカスタマイズされています DB2 UDB V8.1 with Fix Pack 1(FP1)は、対話モードで稼動しているときにDB2 UDB CLPのプロンプトをカスタマイズできるスマートな新機能を備えています(この記事で、以下、DB2 UDB CLPというときは、対話モードで稼動しているこのユーティリティーを意味します)。 この新しいカスタマイズ機能を使えば、現在のインスタンス接続またはデータベース接続あるいはその両方のコンテキストを反映した独自のテキストや変数を画面に表示することができます。今回の記事では、この新しいカスタマイズ機能を紹介します。
図3.ハードコーディングされたCLPプロンプト 先に進むまえに:DB2 UDBレジストリー変数に関する20秒間のレッスン DB2 UDB V8.1は、環境をコントロールするためのDB2 プロファイル・レジストリーを備えています。これまでのリリースでは、環境レベル(変数)を変更したときに、リブートが要求されました。少数の例外はありますが、DB2 UDB V8.1環境では、DB2プロファイル・レジストリーに格納されたレジストリー変数を使って、環境を排他的にコントロールすることができます。 DB2 UDBレジストリー変数を更新するには、db2setコマンドを使用します。この情報は、プロファイル・レジストリーに即時に書き込まれます。DB2プロファイル・レジストリーは、更新された情報を、変更後に起動されたDB2 UDBサーバー・インスタンスとアプリケーションに適用します。 setコマンドを使って、一時セッション用に環境レベルの変数を割り当てることもできます(このように設定された変数の大部分はDB2 UDBレジストリーに表示されます。ただし、DB2INSTANCEのように、表示されないものもあります)。 環境変数を永続的に設定したい場合は、db2setコマンドを使って、ワークステーションのスタートアップ・プロファイルで変数を設定する必要があります。setコマンドで設定した変数はコマンド行セッションの間だけ有効ですが、db2setコマンド行はDB2プロファイル・レジストリーの変数を永続的に設定します。 サポートされているすべてのレジストリー変数のリストを表示するには、次のコマンドを入力します。
DB2 UDBレジストリー変数の値を変更するには、次のコマンドを入力します。
設定されたすべてのDB2 UDBレジストリー変数の値を表示するには、次のコマンドを入力します。
このコマンドの出力は、図4のようになります。 図4.db2 set -allコマンドの出力 環境レベル変数の前には [e]、インスタンス変数とグローバル変数の前にはそれぞれ [i] と [g] が付いていることに注目してください。 DB2_CLPPROMPTレジストリー変数の設定 DB2_CLPPROMPTは、100文字以下の文字列に設定できます。このカスタマイズ文字列には、任意で、実行時に置換されるトークンを含めることができます。DB2 UDB CLPセッション内でこのレジストリー変数を変更した場合、 ユーザーがこのプロセッサーを終了し再起動するまで、新しい値は有効になりません。 最も基本的な形態として、文字列を単に表示するようにDB2 UDB CLPをカスタマイズすることができます。図5は、DB2_CLPPROMPTレジストリー変数の設定、図6はそのあとでDB2 UDB CLPを呼び出した結果です。 図5.コマンド・プロンプト・レジストリー変数の設定 図6結果 この例は興味深いのですが、それほど役に立つものではありません。DB2_CLPPROMPTレジストリー変数には対応する変数があり、この変数を使って、現在またはデフォルトのインスタンス接続と現在接続している(またはデフォルトの)データベースに関する情報をDB2 UDB CLPに返すことができます。 サポートされている変数は、表1のとおりです。
たとえば、次のように解決するようにDB2 UDB CLPを設定するとします。
このためには、次のコマンドを入力します。
DB2 UDBプロファイル・レジストリーでのこの設定を確認するには、db2set allコマンドを入力します。 図7は、このコマンド・シーケンスです。対話モードでCLPセッションを起動したあとの画面の表示も示されています。 図7.DB2_CLPPROMPTの設定、およびその確認 この場合では、対話モードではないモードでDB2 UDB CLPを使用し、そのために同じウィンドウで対話モードが起動されたことに着目してください(そうしたのは、DB2 UDB CLPの呼び出し方が1つでないことを理解してもらうためです)。 図7で、変数の値がないことに留意してください。データベース接続はなくデフォルト・データベースもこの環境では定義されていないため、この変数は空白になっています。 データベースに接続すると、図8のように変数が更新されます。 図8.プロンプトにインスタンスとデータベース名が表示されます このデータベースを切断する場合には、カスタマイズ文字列にこの操作が反映されます。そのあと別のインスタンスに接続すると、図9に示すように、やはり動的にDB2 UDB CLPに反映されます。 図9.新しいDB2 UDBインスタンスに接続するとCLPは動的に更新されます DB2_CLPPROMPT小テスト その前に、ちょっとした「巻末」テストにトライしましょう。 次のコマンドが前提です。
次の状況のとき、結果はどうなるでしょうか。
IBM、DB2およびDB2 Universal Databaseは、米国、その他の国またはその両方におけるIBM
Corporationの商標または登録商標です。
|