統合データ・ソースでは、ニックネームはデータ・ソース表、別名、および視点の識別子です。 分散要求は普通、データ・ソース表または視点ではなく、ニックネームを参照します。
ニックネームは、DB2 が位置の透過性を提供するための手段の一部です。 ニックネームはサーバー定義に依存してデータ・ソースの位置情報を検出し、 データ・ソースへ効率的にアクセスします。 たとえば、ALTER SERVER ステートメントは、 すべてのユーザーおよびアプリケーションに関してサーバー・パフォーマンス・データとバージョン情報を透過的に更新し、 新しいニックネームやアプリケーション・コードへの変更を必要としません。
ニックネームはコントロール・センターで作成することも、 コマンド行プロセッサーから作成することもできます。 同じデータ・ソース表または視点には、複数のニックネームを定義することができます。
ニックネームを静的 SQL ステートメントで使用することはできません。
ニックネームを作成する前に、データ・ソースで RUNSTATS コマンドに相当するコマンドを実行し、 データ・ソース・オブジェクト用の統計を更新します。 統計情報は、統合データベース・カタログにニックネームが作成され保管されるときに、 データ・ソースから収集されます。 このカタログ・データには、表と列の定義、 また可能な場合には、索引の定義と統計が含まれます。
次の SQL ステートメントは CUSTOMER というニックネームを作成します。
CREATE NICKNAME CUSTOMER for OS390A.SHAWNB.CUSTLIST
このステートメントを使用するには、 統合データベースで SYSADM または DBADM 権限の 1 つか、あるいは、 データベース特権 IMPLICIT_SCHEMA とスキーマ特権 CREATEIN (現行スキーマ用) のいずれかを持っていなければなりません。
CREATE NICKNAME ステートメントの使用に関するさらに詳しい説明は、 SQL 解説書 を参照してください。
データ・ソース・オブジェクトの参照では普通、定義されたニックネームを使用します。 1 つの例外として、 パススルー・セッション内での参照 (詳しくは サーバーでのパススルー・セッションの使用を参照) があります。 たとえば、データ・ソース表 DB2MVS1.PERSON.DEPT にニックネーム DEPT を定義すると、 ステートメント SELECT * FROM DEPT を使用できますが、 ステートメント SELECT * FROM DB2MVS1.PERSON.DEPT は使用できません。
大半のユーティリティー・コマンド (LOAD、IMPORT、EXPORT、 REORGCHK、REORGANIZE TABLE) はニックネームをサポートします。
COMMENT ON はサポートされ、統合データベースでシステム・カタログを更新します。
INSERT、UPDATE、および DELETE 操作は、ニックネームに対してはサポートされません。
いくつかのニックネームを作成したら、以下の情報を使用して、特定のニックネームが対応するデータ・ソース、 あるいは特定データ・ソースのニックネームすべてを識別したいと思うかもしれません。
この例では、ニックネーム (PAYROLL) とその作成者 (ACCTG) は分かるものの、 データ・ソースに関する追加情報が必要であると仮定します。 以下の SQL ステートメントを使って、最初に、 そのデータ・ソース (SERVER) で PAYROLL として知られているものに関する情報を取得します。
select option, setting from syscat.taboptions where tabname = 'PAYROLL' and tabschema = 'ACCTG' and option in ('SERVER','REMOTE_SCHEMA','REMOTE_TABLE');
このステートメントからの応答セットは DB2_MVS, FINANCE, DEPTJ35_PAYROLL です。 PAYROLL は、 DB2_MVS という名前のサーバーで FINANCE が所有する DEPTJ35_PAYROLL という表のニックネームであることが分かっています。 この情報を後続の SELECT ステートメントで次のように使用することができます。
select option,setting from syscat.serveroptions where servername = 'DB2_MVS' and option in ('NODE','DBNAME');
このステートメントからの応答セットは REGIONW および DB2MVSDB3 です。 表 DEPTJ35_PAYROLL は、 REGIONW というノード上の DB2MVSDB3 という名前のデータベースにあることが分かりました。
この情報があれば、LIST NODE DIRECTORY コマンドを使って、 使用される通信プロトコルと機密保護タイプなど、 REGIONW ノードについての情報を取得することができます。 ノードが DB2 ファミリー以外のデータ・ソース用のものであれば、 そのデータ・ソースの構成ファイルを調べて同様の情報を検索する必要があります。 たとえば、ノードが Oracle データ・ソースであれば、 Oracle tnsnames.ora ファイルから同様の情報を取得します。
システム・カタログ視点についての詳細は、SQL 解説書 を参照してください。
以下の SQL ステートメントは、 統合データ・ソースに認識されているニックネームすべてのリストを提供します。 その中には、ニックネームごとのスキーマ名とリモート・サーバーが含まれます。
select tabname,tabschema, setting as remote_server from syscat.taboptions where option = 'SERVER';