本文へジャンプ

データベース/データ管理  >  DB2 Developer Domain  >  ライブラリー  >  技術白書-DB2ファミリー関連  >  
   
 

DB2 Universal Databaseコマンド行プロセッサー

 


Paul C. Zikopoulos

IBMカナダ

2003年6月

 
 コンテンツ
はじめに
対話モードでのDB2 UDB CLPのカスタマイズ

DB2_CLPPROMPTレジストリー変数の設定

DB2_CLPPROMPT小テスト
著者について
 

はじめに
IBM® DB2® Universal DatabaseTM for Linux、UNIX® 、Windows® (以下DB2 UDB)では、コマンド行インタフェースからのコマンド入力に2つの方法があります。対話モードでDB2 UDBコマンド行プロセッサー(DB2 UDB CLP)を使用するときは、DB2 UDBまたはSQL照会の接頭部としてdb2キーワードを使用する必要はありません。DB2 UDB CLPの各種動作モードについての知識がない方は、『DB2 Planning: DB2 V8.1 Family Fundamentals Certification Preparation: Part 1 of 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というときは、対話モードで稼動しているこのユーティリティーを意味します)。

この新しいカスタマイズ機能を使えば、現在のインスタンス接続またはデータベース接続あるいはその両方のコンテキストを反映した独自のテキストや変数を画面に表示することができます。今回の記事では、この新しいカスタマイズ機能を紹介します。


対話モードでのDB2 UDB CLPのカスタマイズ
DB2 V8.1 with FP1は、カスタマイズ可能なDB2 UDB CLP対話式プロンプトの機能が追加されています。このバージョンのDB2 UDB CLPのプロンプトは、現在のインスタンス接続とデータベース接続のコンテキストを反映させることができ、特定の文字メッセージも追加することができます。 この機能なしで、対話モードでDB2 UDB CLPを使用する場合は、図3に示すハードコーディングされたプロンプトが表示されます。

図3.ハードコーディングされたCLPプロンプト

先に進むまえに:DB2 UDBレジストリー変数に関する20秒間のレッスン
DB2 UDBレジストリー変数を使って環境を変更することができます。基本的に動的となるように変数を設定して、システム・スタートアップ・プロファイルに組み込まなくても現在のランタイム環境に適用することができます。システム・スタートアップの一部としてのみ設定できるレジストリー変数もいくつかあります。

DB2 UDB V8.1は、環境をコントロールするためのDB2 プロファイル・レジストリーを備えています。これまでのリリースでは、環境レベル(変数)を変更したときに、リブートが要求されました。少数の例外はありますが、DB2 UDB V8.1環境では、DB2プロファイル・レジストリーに格納されたレジストリー変数を使って、環境を排他的にコントロールすることができます。

DB2 UDBレジストリー変数を更新するには、db2setコマンドを使用します。この情報は、プロファイル・レジストリーに即時に書き込まれます。DB2プロファイル・レジストリーは、更新された情報を、変更後に起動されたDB2 UDBサーバー・インスタンスとアプリケーションに適用します。

setコマンドを使って、一時セッション用に環境レベルの変数を割り当てることもできます(このように設定された変数の大部分はDB2 UDBレジストリーに表示されます。ただし、DB2INSTANCEのように、表示されないものもあります)。

環境変数を永続的に設定したい場合は、db2setコマンドを使って、ワークステーションのスタートアップ・プロファイルで変数を設定する必要があります。setコマンドで設定した変数はコマンド行セッションの間だけ有効ですが、db2setコマンド行はDB2プロファイル・レジストリーの変数を永続的に設定します。

サポートされているすべてのレジストリー変数のリストを表示するには、次のコマンドを入力します。

 
db2set -lr 

DB2 UDBレジストリー変数の値を変更するには、次のコマンドを入力します。

 
db2set registry_variable_name=new_value 

設定されたすべてのDB2 UDBレジストリー変数の値を表示するには、次のコマンドを入力します。

 
db2set -all 

このコマンドの出力は、図4のようになります。

図4.db2 set -allコマンドの出力

環境レベル変数の前には [e]、インスタンス変数とグローバル変数の前にはそれぞれ [i] [g] が付いていることに注目してください。

DB2_CLPPROMPTレジストリー変数の設定
DB2 UDB CLPコマンド・プロンプトをカスタマイズするには、新しいDB2 UDBレジストリー変数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のとおりです。

変数 実行時の値
%ia インスタンス接続が存在する場合、現在のインスタンス接続のauthid。そうでない場合はヌル文字列
%i インスタンス接続が存在する場合、現在接続されているインスタンスのローカル・エイリアス。ローカル・インスタンス接続が存在しない場合は、DB2INSTANCEまたはDB2INSTDEFレジストリー変数の値。それ以外の場合、ヌル文字列
%da データベース接続が存在する場合、現在のデータベース接続のアクセス許可ID。そうでない場合はヌル文字列
%d データベース接続が存在する場合、現在接続しているデータベースのローカル・エイリアス。存在しない場合は、DB2DBDFTレジストリー変数の値。さらに、それ以外の場合は、ヌル文字列
%n 改行文字

たとえば、次のように解決するようにDB2 UDB CLPを設定するとします。

 
(Instance , Database <database name>): 

このためには、次のコマンドを入力します。

 
db2set db2_clpprompt=" (Instance:%i, Database: %d):" 

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小テスト
DB2_CLPPROMPT変数には、さまざまな、変数の組み合わせ方があります。利用できるさまざまな変数について自分で試し、異なる環境設定それぞれの結果を確認してください。

その前に、ちょっとした「巻末」テストにトライしましょう。

次のコマンドが前提です。

 
db2set db2_clpprompt="db2 (%ia@%i, %da@%d):" 

次の状況のとき、結果はどうなるでしょうか。

  1. DB2INSTANCEはTESTINGに設定されています。DB2DBFTは設定されていません。インスタンス接続も、データベース接続も存在しません。正解は解答をクリックしてください。

  2. DB2INSTANCEはDB2に設定されています。DB2DBFTはSAMPLEに設定されています。DB2インスタンスへのインスタンス接続が1つ存在します。その認証IDはPAULZです。正解は解答をクリックしてください。

  3. DB2INSTANCEはDB2に設定されています。DB2DBFTはSAMPLEに設定されています。SAMPLEデータベースへのデータベース接続としては認証IDがPAULZの接続が1つだけ存在します。正解は解答をクリックしてください。

著者について

Paul C. Zikopoulosは、文学士号と経営学修士号を有し、IBM Global Sales SupportチームとともにIDUG基調講演での受賞経歴があります。7年を超えるDB2での経験があり、数多くの記事および書籍を執筆しており、たくさんの雑誌にDB2に関する記事を寄稿しています。彼はまた、『DB2: The Complete Reference』『DB2 Fundamentals Certification for Dummies』『DB2 for Dummies』『A DBA's Guide to Databases on Linux』の共著者であり、また、DB2認定上級テクニカル・エキスパート(DRDAとCluster/EEE)、DB2認定ソリューション・エキスパート(ビジネス・インテリジェンスおよびデータベース管理)です。
メールの宛先はpaulz_ibm@msn.comです。

IBM、DB2およびDB2 Universal Databaseは、米国、その他の国またはその両方におけるIBM Corporationの商標または登録商標です。
Microsoftは、米国、その他の国またはその両方においてMicrosoft Corporationの登録商標です。
UNIX は、米国およびその他の国においてThe Open Groupの登録商標です。
その他の会社名、製品およびサービス名は、一般に所有各社の商標です。
IBMの著作権および商標情報

原文はこちら

上に戻る