IBM Support

[Db2] su コマンドから CLP スクリプトを実行する方法

Question & Answer


Question

su コマンドでユーザーを変更して複数の db2 コマンドを実行しようとすると SQL1024N エラーになることがあります。

Cause

コマンド行プロセッサー (CLP) は、インターフェースとして機能するフロントエンド・プロセス (db2 プロセス) と、データベースとの接続を保持するバックエンド・プロセス (db2bp プロセス) で構成されます。
以下のように同じシェルから複数回呼び出された db2 プロセスは、いずれも単一の db2bp プロセスが保持する同じ接続を利用します。
$ db2 connect to SAMPLE
$ db2 list tablespaces
$ db2 "select * from org"
ただし、以下のようにひとつの su コマンドの中で複数の db2 コマンドを実行する場合、同一のシェルが使われるかどうかはオペレーティング・システムや呼び出されるシェル (ksh, bash など) によって異なります。このため CLP が期待通りに動かないことがあります。
$ su - db2inst1 -c "db2 -v connect to sample; db2 -v list tablespaces"
connect to sample

   データベース接続情報

 データベース・サーバー                = DB2/AIX64 9.5.5
 SQL 許可 ID                           = DB2INST1
 ローカル・データベース別名            = SAMPLE

list tablespaces
SQL1024N  データベース接続が存在しません。  SQLSTATE=08003

 

Answer

su コマンドの中で db2 コマンドを利用する場合には、以下のように別途スクリプトをファイルとして用意して実行してください。
$ cat /home/db2inst1/SCRIPT.sh
db2 -v connect to SAMPLE
db2 -v list tablespaces

$ su - db2inst1 -c /home/db2inst1/SCRIPT.sh
connect to SAMPLE

   データベース接続情報

 データベース・サーバー                = DB2/AIX64 9.5.5
 SQL 許可 ID                           = DB2INST1
 ローカル・データベース別名            = SAMPLE


list tablespaces

           現在のデータベースの表スペース

 表スペース ID                      = 0
 名前                               = SYSCATSPACE
 タイプ                             = データベース管理スペース
 内容                               = すべての永続データ。REGULAR 表スペース。
 状態                               = 0x0000
   詳しい説明:
     正常

 
[Db2] CLP から DB21016E、DB21018E、SQL1024N、SQL0204N など様々なエラーが返ることがある
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PmFAAU","label":"Operating System or Hardware-\u003EOS Configuration"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"All Versions"}]

Document Information

Modified date:
25 August 2023

UID

swg21574467