この節では、DB2 コネクトの使用時に接続問題が生じたときの最も一般的な症状をリストします。どの場合でも、以下の形式で示されます。
注:
システム・ログを見ていくと、SNA センス・コードを見られます。これが当てはまるかどうかは、使用する SNA サブシステムによって異なります。状況によっては、SNA トレースをアクティブにして問題を再現し、センス・コード情報を入手しなければならないこともあります。
DB2 ユニバーサル・データベース (AS/400 版)、DB2 ユニバーサル・データベース (OS/390 版)、DB2 (MVS/ESA 版)、および DB2 (VM および VSE 版) からのさまざまな異なる戻りコードとともに、メッセージ SQL0965 および SQL0969 が発行されます。
いずれかのメッセージが出された場合、そのメッセージを発行したデータベース・サーバー製品の資料で、元の SQL コードを調べる必要があります。
ホスト・データベースから受信された SQL コードを変換できません。そのエラー・コードに基づいて問題を訂正してから、失敗したコマンドを再発信してください。
記号宛先名が定義されていないか、適切に定義されていません。
たとえば、これは APPC ノードを使用していて、 DB2 ノード・ディレクトリーに指定した記号宛先名がローカル APPC 通信サブシステム構成の CPI-C 項目と一致しない場合に、生じることがあります。
別の原因として、複数の SNA スタックをマシンにインストールしてあることもあります。 PATH と LIBPATH を検査して、使用したいスタックがまず最初に参照されることを確認する必要があるかもしれません。
SQL1403N 指定されたユーザー名とパスワードのいずれか、またはその両方が正しくありません。
認証されるようになっている場合、必要であれば CONNECT ステートメントに正しいパスワードを指定してあるか確認してください。
認証されるようになっていない場合、システム・データベース・ディレクトリー項目は、 AUTHENTICATION SERVER (AUTHENTICATION を明示的に指定していない場合は、これが省略時値) を使用して不正にカタログ化されています。この場合、AUTHENTICATION DCS または CLIENT を使用して、項目を再カタログ化してください。
1 つまたは複数の通信プロトコルに対するサポートが正常に開始できませんでした。ただし、コアとなるデータベース・マネージャーの機能は正常に開始されました。
おそらく、TCP/IP プロトコルが DB2 コネクト・ゲートウェイで開始されていません。以前に成功したクライアント接続がまだ残っている可能性があります。
diaglevel = 4 の場合、 db2diag.log に同様の項目が含まれている可能性があります。たとえば次のようになります。
1997-05-30-14.09.55.321092 Instance:svtdbm5 Node:000 PID:10296(db2tcpcm) Appid:none common_communication sqlcctcpconnmgr_child Probe:46 DIA3205E Socket address "30090" configured in the TCP/IP services file and required by the TCP/IP server support is being used by another process.
この警告は、DB2 コネクト (リモート・クライアントのゲートウェイとして動作している) が 1 つまたは複数のクライアント通信プロトコルを処理する際に問題が発生していることを示しています。これらのプロトコルは TCP/IP、 APPC その他のものであり、このメッセージは通常、 DB2 コネクトに定義されているこれらの通信プロトコルのいずれかが正しく構成されていないことを示しています。
DB2COMM プロファイル変数が定義されていないか、不正に定義されていることが原因かもしれません。一般に、問題は DB2COMM 変数と、データベース・マネージャー構成で定義した名前 (たとえば、 svcename、nname、または tpname) との間のミスマッチの結果です。
可能性のあるシナリオとして 1 つあげられるのは、以前に成功した接続がそのままになっており、構成が変更されていないのに、SQL5043 エラー・メッセージを受け取ってしまったというものです。これは、TCP/IP プロトコルの使用時にリモート・システムが何らかの理由で接続を異常終了したときに発生する可能性があります。異常終了する場合、接続をクライアント上に残しておくことができるので、下記のコマンドを発行して介入しなくても、接続を復元することができます。
一番多いのは、ゲートウェイに接続しているクライアントの 1 つが TCP/IP ポート上でハンドルを持ったままになるというケースです。ゲートウェイに接続している各クライアント・マシン上で、以下を発行します。
SQL30020N 後続のコマンドまたは SQL ステートメントの正常な実行に影響を与える分散プロトコル・エラーのために、実行が失敗しました。
このエラーが発生したら、サービス担当者に連絡してください。
db2dump ディレクトリーに ffdc ダンプ (pid.000) があるかどうか調べてください。ある場合は、このダンプ・ファイルを db2fdump によってフォーマットし、結果ファイルで "ERROR" を調べてください。そこに MVS ABEND がリストされている可能性があります。その場合、MVS コンソールで詳細を調べ、 DB2 for MVS Messages and Codes の資料で異常終了コードを調べてください。
SQL30060N "<authorization-ID>" が、処理 "<operation>" を実行する権限を持っていません。
DB2 (MVS 版) または DB2 (OS/390 版) への接続時に、通信データベース (CDB) 表が正しく更新されていません。次を参照してください。
誤ったホストまたは AS/400 データベース・サーバー・ロケーションに接続しています。ターゲット・データベースが見つかりません。
DCS ディレクトリー項目に誤ったサーバー・データベース名を指定した可能性があります。これが生じた場合、SQLCODE -30061 がアプリケーションに戻されます。
DB2 ノード、データベース、および DCS ディレクトリー項目を調べてください。 DCS ディレクトリー項目の宛先データベース名のフィールドは、プラットフォームに基づいたデータベースの名前に対応していなければなりません。たとえば、DB2 ユニバーサル・データベース (OS/390 版) データベースの場合、使用する名前はブートストラップ・データ・セット (BSDS) の "LOCATION=locname" フィールドで使用した名前と同じでなければなりません。これは、分散データ機能 (DDF) を開始するときの DSNL004I メッセージにも示されています (LOCATION=location)。
ご使用の DB2 コネクト 概説およびインストール の資料には、 DB2 カタログの更新方法を示す例が収められています。 SNA 構成を説明する各章の『DB2 ディレクトリーの更新』を参照するか、『ホストおよび AS/400 データベースでの DB2 コネクトの構成』の章の『TCP/IP 接続の構成』を参照してください。
APPC または APPN ノードへの正しいコマンドは次のとおりです。
db2 catalog appc node <node_name> remote <sym_dest_name> security program db2 catalog dcs database <local_name> as <real_db_name> db2 catalog database <local_name> as <alias> at node <node_name> authentication dcs
TCP/IP ノードへの正しいコマンドは次のとおりです。
db2 catalog tcpip node <node_name> remote <host_name_or_address> server <port_no_or_service_name> db2 catalog dcs database <local_name> as <real_db_name> db2 catalog database <local_name> as <alias> at node <node_name> authentication dcs
その後にデータベースへ接続するには、次のコマンドを発行します。
db2 connect to <alias> user <user_name> using <password>
メッセージ SQL30073 は戻りコード 119C とともに発行されます。これが発行されるのは、ターゲット・サーバー・データベースが DB2 クライアント (DB2 コネクトを使用する) のコード・ページをサポートしていない場合です。このコード・ページは、DB2 クライアントが実行されている操作環境の構成から派生します。
詳しくは、管理の手引き を参照してください。
この問題は、ターゲット・サーバー・データベース・システムに修正ファイルをインストールすることにより、解決できることもあります。適切なサービス部門に連絡して、この症状に適した修正ファイルを入手し、それを適用してください。
一時的な作業環境として、ユーザーは DB2CODEPAGE 環境変数を設定することにより、省略時のコード・ページをオーバーライドすることができます。ロケールを調べるか、DB2CODEPAGE=850 を設定してください。
UNIX プラットフォームでは、LANG 環境変数を別の値に設定することにより、別のコード・ページに切り替えることができます。
症状は、次のメッセージと SNA センス・コードです。
db2 connect to <database name> user <userid> Enter password for <userid>: SQL30081N A communication error has been detected. Communication protocol being used: "APPC". Communication API being used: "CPI-C". Location where the error was detected: "". Communication function detecting the error: "cmallc". Protocol specific error code(s): "1", "*", "0x10030021". SQLSTATE=08001
この例では、センス・コードは 10030021 です。
このエラー・メッセージと関連する最も一般的なセンス・コード、およびそれぞれの場合の提案されている解決方法は、以下のとおりです。
SQL30081N with return code 1 and sna sense code 0877002C
正しくないネットワーク名を指定しています。
SQL30081N with return code 1 and SNA sense code ffff0003
正しくない MAC アドレスを指定しているか、SNA リンクがアクティブではありません。
SQL30081N with return code 1 and SNA sense code 10030021
LU タイプのミスマッチがあります。
SQL30081N with return code 1 and SNA sense code 084B6031
DSNZPARM の MAXDBAT (DB2 (MVS 版) または DB2 (OS/390 版) ホスト) は、0 に設定されます。
他の提案:
戻りコード 2 および SNA センス・コード 08120022 であるメッセージ SQL30081N を受け取ります。
NCP (リンクのホスト端) の NUMILU パラメーターは、省略時値 (0) に設定されている可能性があります。このことを確認してください。再試行前、あるいは変更を有効にした後、必要であれば NCP 定義を変更します。
症状は次のメッセージです (この場合は、SNA センス・コードは必要ありません)。
db2 connect to <database> user <userid> SQL30081N A communication error has been detected. Communication protocol being used: "APPC". Communication API being used: "CPI-C". Location where the error was detected: "". Communication function detecting the error: "cmsend". Protocol specific error code(s): "9", "*", "0x10086021". SQLSTATE=08001
問題は、 DB2 コネクト・システム上でトランザクション・プログラム名 (TPNAME) が正しく定義されていないことにあります。たとえば、ご使用の SNA 構成は更新してあっても、 DB2 コネクト・ゲートウェイで検証されていない場合があります。詳細は、DB2 コネクト エンタープライズ・エディション (OS/2 および Windows NT 版) 概説およびインストール、または DB2 コネクト パーソナル・エディション 概説およびインストール の資料を参照してください。
症状は次のメッセージです (SNA センス・コードは必要ありません)。
SQL30081N A communication error has been detected. Communication protocol being used: "APPC". Communication API being used: "CPI-C". Location where the error was detected: "". Communication function detecting the error: "cmrcv". Protocol specific error code(s): "10", "*", "*". SQLSTATE=08001
DB2 を正しくインストールしたことを確認してください。
DB2 コネクト (OS/2 版) ゲートウェイを使用している場合は、 TP 名が正しく定義されていないと次のように表示されます。
Protocol specific error code(s): "10", "*", "0x084C0000". SQLSTATE=08001
たとえば CM/2 では、この場合次のように定義する必要があります。
Transaction program name = 'tpname' (user defined) OS/2 program path and file name = notused
および (次の CM/2 構成画面)
Presentation type - background Operation type - Queued, operator preloaded
SQL30081N A communication error has been detected. Communication protocol being used: "APPC". Communication API being used: "CPI-C". Location where the error was detected: "". Communication function detecting the error: "xcstp". Protocol specific error code(s): "20", "*", "*". SQLSTATE=08001
DB2 コネクト・システムで SNA サブシステムが開始していることを確認します。
戻りコード 27 および SNA センス・コード 800Axxxx であるメッセージ SQL30081N を受け取ります。
VTAM パス情報単位 (PIU) が大きすぎます。
SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "". Communication function detecting the error: "connect". Protocol specific error code(s): "79", "*", "*". SQLSTATE=08001
このエラーは、リモート・クライアントが DB2 コネクト・ゲートウェイへの接続に失敗した場合に発生する可能性があります。さらに、DB2 コネクト・ゲートウェイからホストへの接続時にも発生することがあります。
db2 update dbm cfg using diaglevel 4DB2 を停止して再始動したら、 db2diag.log ファイルを参照して、 DB2 TCP/IP 通信が開始していることをチェックします。次のような出力が含まれているはずです。
1998-02-03-12.41.04.861119 Instance:svtdbm2 Node:00 PID:86496(db2sysc) Appid:none common_communication sqlcctcp_start_listen Probe:80 DIA3000I "TCPIP" protocol support was successfully started.
SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "9.21.85.159". Communication function detecting the error: "send". Protocol specific error code(s): "10032", "*", "*". SQLSTATE=08001
このエラー・メッセージは、 TCP/IP 通信に失敗したマシンから切断しようとするときに受け取ることがあります。 TCP/IP サブシステムの問題を修正してください。
問題を修正する方法は、ほとんどのマシンでは、そのマシンの TCP/IP プロトコルを再始動することになります。マシン全体を再生しなければならないこともあります。