Question & Answer
Question
インスタンス起動時に SQL5043N のエラーが出力されます。原因と対処方法を教えて下さい。
Cause
インスタンスで構成された通信プロトコルが正常に利用できない場合、以下のように db2start 実行時に SQL5043N が発生します。
このエラーには複数の原因が考えられます。
A) TCP/IP 接続に関する設定
リモート・クライアントからの TCP/IP 接続を有効にするための設定に問題がある場合、ソケットをオープンできず、SQL5043N のエラーが出力されます。
B) ポートの競合
Db2 が LISTEN しようとしたポートを他のプロセスが既に利用している場合、ポートをバインドできず、SQL5043N のエラーが出力されます。
db2start 時に以下のようなエラー・メッセージが db2diag.log へ記録されます。
C) IPv6 が未構成
OS で IPv6 が使用不可になっており、hosts ファイルに IPv6 のループバック・アドレスが記述されている場合、一部の OS では socket (AF_INET) 関数が EAFNOSUPPORT を返すことがあります。
このようなシステムでは ソケットをオープンできず、SQL5043N のエラーが出力されます。
db2start 時に以下のようなエラー・メッセージが db2diag.log に記録されます。(OS のエラーに起因しているため、環境によってメッセージは異なる可能性があります。)
D) SPM (同期点マネージャー) の起動失敗
SPM のログの破損等が原因で、同期点マネージャーが正しく起動できなかった場合、インスタンス起動時に 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".
SPM のログの破損等が原因で、同期点マネージャーが正しく起動できなかった場合、インスタンス起動時に SQL5043N のエラーが出力されます。
Answer
それぞれの原因について、以下の点をご確認ください。
A) TCP/IP 接続に関する設定
コマンドは、UNIX/Linux ではインスタンス・オーナーでログインして実行してください。
Windows では Administrator でログオンし「DB2 コマンド・ウインドウ - 管理者」から実行してください。また、grep コマンドは findstr コマンドに置き換えて実行してください。
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 でログインして実行してください。
netstat コマンドでソケットの PCB のアドレス (出力の最初の列の値) を確認し、rmsock コマンドでそのソケットをオープンしているプロセスを確認します。
コマンドは root でログインして実行してください。
netstat コマンドでソケットをオープンしているプロセスの PID (出力の最後の列の値) を確認し、tasklist コマンドでその PID のプロセス名を確認します。
コマンドはコマンド・プロンプトから実行してください。
OS で正しく IPv6 を構成するか、/etc/hosts ファイルから IPv6 のエントリーを除去した後に、OS を再起動してください。IPv6 のループバック・アドレスは以下のようなエントリーです。
D) SPM の起動失敗
SPM の起動時のエラーによって SQL5043N が発生しているか確認するため、データベース・マネージャー構成パラメーターの SPM_NAME を NULL に変更した後にインスタンスを再起動し、エラーが発生するかご確認ください。
コマンドは、UNIX/Linux ではインスタンス・オーナーでログインして実行してください。
Windows では Administrator でログオンし「DB2 コマンド・ウインドウ - 管理者」から実行してください。
A) TCP/IP 接続に関する設定
コマンドは、UNIX/Linux ではインスタンス・オーナーでログインして実行してください。
Windows では Administrator でログオンし「DB2 コマンド・ウインドウ - 管理者」から実行してください。また、grep コマンドは findstr コマンドに置き換えて実行してください。
- Db2 レジストリー変数の DB2COMM に TCPIP が設定されているか確認してください。設定されていない場合、設定変更後にインスタンスを再起動してください。
- [確認方法]
$ db2set -all | grep DB2COMM [i] DB2COMM=TCPIP
$ db2set DB2COMM=TCPIP $ db2stop $ db2start
- [確認方法]
- データベース・マネージャー構成パラメーターの SVCENAME に、サービス名もしくはポート番号が設定されているか確認してください。設定されていない場合、リモート・クライアントからの接続要求を LISTEN するためのサービス名もしくはポート番号を設定し、インスタンスを再起動してください。
- [確認方法]
$ db2 get dbm cfg | grep SVCENAME TCP/IP サービス名 (SVCENAME) = db2c_db2inst1
$ db2 update dbm cfg using SVCENAME [サービス名もしくはポート番号] $ db2stop $ db2start
- [確認方法]
- 2.の手順で SVCENAME にポート番号ではなくサービス名が設定されている場合、services ファイル内に該当のサービス名と対応する TCP ポート番号が定義されていることを確認してください。services ファイルは UNIX/Linux では /etc/services、Windows では %SystemRoot%\system32\drivers\etc\services にあります。該当のサービス名が定義されていない場合、ファイルにサービス名とポート番号を追加してください。追加した行には必ず改行を含めてください。
- [確認方法]
$ grep db2c_db2inst1 /etc/services db2c_db2inst1 50000/tcp
- [確認方法]
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)
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).
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
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
[Db2] Db2 のサービス・ポートをエフェメラル・ポート範囲から除外する方法
[Db2] Db2 が使用する TCP/IP ポート番号
Db2 インスタンスの通信プロトコルの設定
svcename - TCP/IP サービス名構成パラメーター
spm_name - 同期点マネージャー名構成パラメーター
Who's using my port? (AIX, Linux, Windows example)
IC88244 ADD RETRY WHEN DB2 RECEIVES WSAEACCESS WHEN BINDING TCP SERVICE PORT IN WINDOWS.
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[Db2] Db2 が使用する TCP/IP ポート番号
Db2 インスタンスの通信プロトコルの設定
svcename - TCP/IP サービス名構成パラメーター
spm_name - 同期点マネージャー名構成パラメーター
Who's using my port? (AIX, Linux, Windows example)
IC88244 ADD RETRY WHEN DB2 RECEIVES WSAEACCESS WHEN BINDING TCP SERVICE PORT IN WINDOWS.
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート
[{"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"}}]
Was this topic helpful?
Document Information
Modified date:
27 November 2023
UID
swg21609837