IBM Support

[Db2] インスタンス起動時に SQL5043N が発生する場合の対処方法

Question & Answer


Question

インスタンス起動時に SQL5043N のエラーが出力されます。原因と対処方法を教えて下さい。

Cause

インスタンスで構成された通信プロトコルが正常に利用できない場合、以下のように db2start 実行時に SQL5043N が発生します。
$ db2start
08/21/2012 09:15:37     0   0   SQL5043N  1 つ以上の通信プロトコルに対するサポートを正常に開始できませんでした。ただし、コアのデータベース・マネージャーの機能は正常に開始されました。
SQL1063N  DB2START の処理が正常に終了しました。
このエラーには複数の原因が考えられます。

A) TCP/IP 接続に関する設定

リモート・クライアントからの TCP/IP 接続を有効にするための設定に問題がある場合、ソケットをオープンできず、SQL5043N のエラーが出力されます。

B) ポートの競合

Db2 が LISTEN しようとしたポートを他のプロセスが既に利用している場合、ポートをバインドできず、SQL5043N のエラーが出力されます。
db2start 時に以下のようなエラー・メッセージが db2diag.log へ記録されます。
2012-08-23-18.45.59.164914+540 E9138A737          LEVEL: Error
PID     : 2711702              TID  : 258         PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000
EDUID   : 258                  EDUNAME: db2sysc 0
FUNCTION: DB2 UDB, common communication, sqlcctcpconnmgr, probe:46
MESSAGE : ADM7007E  The SVCENAME DBM configuration parameter, "50000", is
          configured with a port or a service name.  When it is configured with
          a service name, the TCP/IP services files is used to map the service
          name to a port number.  The port specified in this field is being
          used by another process.  Resolve this problem by either deleting the
          process using the port or use another port.
または
2012-10-12-23.15.30.047000+540 I70203F367         LEVEL: Error
PID     : 1092                 TID  : 3548        PROC : db2syscs.exe
INSTANCE: DB2                  NODE : 000
EDUID   : 3548                 EDUNAME: db2sysc 0
FUNCTION: DB2 UDB, common communication, sqlcctcpconnmgr, probe:47
MESSAGE : DIA3202C The TCP/IP call "bind" returned an errno="10013".

C) IPv6 が未構成

OS で IPv6 が使用不可になっており、hosts ファイルに IPv6 のループバック・アドレスが記述されている場合、一部の OS では socket (AF_INET) 関数が EAFNOSUPPORT を返すことがあります。
このようなシステムでは ソケットをオープンできず、SQL5043N のエラーが出力されます。
db2start 時に以下のようなエラー・メッセージが db2diag.log に記録されます。(OS のエラーに起因しているため、環境によってメッセージは異なる可能性があります。)
2012-05-15-10.52.49.066341+540 I203835E356           LEVEL: Error
PID     : 6175                 TID  : 46998430411072 PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000
EDUID   : 1                    EDUNAME: db2sysc 0
FUNCTION: DB2 UDB, common communication, sqlcctcpconnmgr, probe:15
MESSAGE : DIA3202C The TCP/IP call "socket" returned an errno="97".
D) SPM (同期点マネージャー) の起動失敗

SPM のログの破損等が原因で、同期点マネージャーが正しく起動できなかった場合、インスタンス起動時に SQL5043N のエラーが出力されます。

Answer

それぞれの原因について、以下の点をご確認ください。

A) TCP/IP 接続に関する設定

コマンドは、UNIX/Linux ではインスタンス・オーナーでログインして実行してください。
Windows では Administrator でログオンし「DB2 コマンド・ウインドウ - 管理者」から実行してください。また、grep コマンドは findstr コマンドに置き換えて実行してください。
 
  1. Db2 レジストリー変数の DB2COMM に TCPIP が設定されているか確認してください。設定されていない場合、設定変更後にインスタンスを再起動してください。
    • [確認方法]
      $ db2set -all | grep DB2COMM
      [i] DB2COMM=TCPIP
      [設定変更方法]
      $ db2set DB2COMM=TCPIP
      $ db2stop
      $ db2start
  2. データベース・マネージャー構成パラメーターの SVCENAME に、サービス名もしくはポート番号が設定されているか確認してください。設定されていない場合、リモート・クライアントからの接続要求を LISTEN するためのサービス名もしくはポート番号を設定し、インスタンスを再起動してください。
    • [確認方法]
      $ db2 get dbm cfg | grep SVCENAME
       TCP/IP サービス名                (SVCENAME) = db2c_db2inst1
      [設定変更方法]
      $ db2 update dbm cfg using SVCENAME [サービス名もしくはポート番号]
      $ db2stop
      $ db2start
  3. 2.の手順で SVCENAME にポート番号ではなくサービス名が設定されている場合、services ファイル内に該当のサービス名と対応する TCP ポート番号が定義されていることを確認してください。services ファイルは UNIX/Linux では /etc/services、Windows では %SystemRoot%\system32\drivers\etc\services にあります。該当のサービス名が定義されていない場合、ファイルにサービス名とポート番号を追加してください。追加した行には必ず改行を含めてください。
    • [確認方法]
      $ grep db2c_db2inst1 /etc/services
      db2c_db2inst1     50000/tcp
B) ポートの競合

SQL5043N が一時的に発生する場合は、そのタイミングで他のプロセスがエフェメラル・ポートを利用していたためにポート番号が競合した可能性があります。
OS のエフェメラル・ポートの範囲、もしくは services ファイルに定義された Db2 のサービス・ポート番号を変更することで、Db2 のポート番号がエフェメラル・ポート範囲に入らないようにしてください。ただし、Db2 のサービス・ポート番号を変更すると、すべての Db2 リモート・クライアントの設定も変更が必要な点に注意してください。オペレーティングシステムのエフェメラル・ポート範囲の変更方法は以下のページを参照してください。
[Db2] Db2 のサービス・ポートをエフェメラル・ポート範囲から除外する方法

注:歴史的に Db2 のデフォルト・ポートは 50000 番ですが、最近の OS は 50000 を含む範囲をデフォルトのエフェメラル・ポートに設定していることがあります。なお、エフェメラル・ポートとの競合を避けるため、Db2 のデフォルト・ポートは V11.5.6 以降 25000 に変更されています。

SQL5043N が db2start の都度発生する場合、Db2 と同じポート番号で他のプロセスがポートを LISTEN している可能性があります。
該当のポートが一時的ではなく常時他のプロセスに利用されており、すぐにそのプロセスを停止したい場合は、該当のポート番号を利用しているプロセスを確認し、停止してください。
以下は、50000 のポートを利用しているプロセスの PID とプロセス名を確認する方法です。

[lsof が導入されている UNIX/Linux]
lsof コマンドでソケットをオープンしているプロセスを確認します。
コマンドは root でログインして実行してください。
  • # lsof -i :50000
    COMMAND   PID   USER   FD   TYPE  DEVICE SIZE NODE NAME
    java    30783 appusr    8u  IPv6 2453379       TCP *:db2c_db2inst1 (LISTEN)
[AIX]
netstat コマンドでソケットの PCB のアドレス (出力の最初の列の値) を確認し、rmsock コマンドでそのソケットをオープンしているプロセスを確認します。
コマンドは root でログインして実行してください。
  • # netstat -Aan | grep 50000
    f10002000204b398 tcp        0      0  *.50000            *.*            LISTEN
    # rmsock f10002000204b398 tcpcb
    The socket 0x204b008 is being held by proccess 2793648 (java).
[Windows]
netstat コマンドでソケットをオープンしているプロセスの PID (出力の最後の列の値) を確認し、tasklist コマンドでその PID のプロセス名を確認します。
コマンドはコマンド・プロンプトから実行してください。
  • C:\>netstat -ano | findstr 50000
      TCP    0.0.0.0:50000          0.0.0.0:0          LISTENING       4748
    
    C:\>tasklist | findstr 4748
    java.exe                    4748 Console            0     18,980 K
C) IPv6 が未構成

OS で正しく IPv6 を構成するか、/etc/hosts ファイルから IPv6 のエントリーを除去した後に、OS を再起動してください。IPv6 のループバック・アドレスは以下のようなエントリーです。
  • ::1 <hostname>

D) SPM の起動失敗

SPM の起動時のエラーによって SQL5043N が発生しているか確認するため、データベース・マネージャー構成パラメーターの SPM_NAME を NULL に変更した後にインスタンスを再起動し、エラーが発生するかご確認ください。
コマンドは、UNIX/Linux ではインスタンス・オーナーでログインして実行してください。
Windows では Administrator でログオンし「DB2 コマンド・ウインドウ - 管理者」から実行してください。
  • $ db2 update dbm cfg using SPM_NAME NULL
    $ db2stop
    $ db2start

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Component":"OTHER - Uncategorised","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"9.5;9.7;10.1;10.5;11.1;11.5","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
27 November 2023

UID

swg21609837