IBM Support

[Db2] コマンド行プロセッサー (CLP) によって db2diag.log に EINVAL エラーが記録される (IM-10-00R)

Question & Answer


Question

db2diag.log に出力された以下のエラーの意味と対応方法を教えてください。
OSERR : EINVAL (22) "システム・コールが、無効なパラメーターを受け取りました。"

Answer

コマンド行プロセッサー (CLP) のプロセス (db2 および db2bp) によって、db2diag.log に EINVAL (22) "システム・コールが、無効なパラメーターを受け取りました" のメッセージが記録されることがあります。

このエラーメッセージの発生条件は 2 つのケースがあります。

  1. db2bp (CLP バックエンド) プロセスからエラーが報告される
  2. db2 (CLP フロントエンド) プロセスからエラーが報告される
2 つのプロセスは、コマンド行プロセッサー (CLP) に関連するプロセスです。
CLP はユーザー・インターフェースとして機能するフロントエンド・プロセス (db2 コマンド) と、データベース接続を維持するバックエンド・プロセス (db2bp) で構成されています。
db2 コマンドが呼び出されるたびに、新しいフロントエンド・プロセスが開始されます。
db2bp プロセスは最初の db2 (CLP フロントエンド) 呼び出しのときに開始し、TERMINATE によって明示的に終了します。
注: CLP 以外も db2diag.log に EINVAL を記録することはありますが、この FAQ では CLP からのケースのみを扱います。
  1. db2bp (CLP バックエンド) プロセスから出力されるケース
    db2bp が CLP の出力としてパイプ ( | ) に渡す処理を実行中、パイプへの出力が完了する前にパイプの先のプロセスが終了すると db2bp が上記のエラーを報告します。
    どのプロセスがエラーを返したかは db2diag.log のメッセージの PROC : db2bp から確認できます。

    以下のようなSQLを実行しているときに発生することがあります。
    (例)
    db2 "list tablespaces show detail" | head -81
    db2 "select * from employee" | head -10
    パイプの先のプロセス終了と CLP からの出力完了のタイミングに依存するため、CLP からの出力結果が大きい場合に出やすい傾向があります。
    2022-08-01-09.46.05.746899-300 E267366031E630      LEVEL: Error (OS) 
    PID     : 19385                TID  : 47033525566016PROC : db2bp 
    INSTANCE: db2inst1             NODE : 000 
    FUNCTION: DB2 UDB, oper system services, sqlowqueInternal, probe:40 
    MESSAGE : ZRC=0x870F003E=-2029060034=SQLO_QUE_BAD_HANDLE "Bad Queue Handle" 
              DIA8555C An invalid message queue handle was encountered. 
    CALLED  : OS, -, msgsnd                           OSERR: EINVAL (22) 
    DATA #1 : system V message queue identifier., PD_TYPE_SYSV_QUEUE_ID, 4 bytes 
    0x4E6980FE 
    DATA #2 : Pointer, 8 bytes 
    0x00000000007da7b0 
    DATA #3 : unsigned integer, 8 bytes 
    76 
    エラーメッセージへの対応は必要ありません。
    メッセージを出力させない設定方法はありませんが、以下のように awk コマンドで head と同様の処理を行うことで、メッセージの出力を抑えることができます。
    db2 "select * from employee" | awk 'NR<81{print}'
  2. db2 (CLP フロントエンド) プロセスから出力されるケース
    下記のように SQL エラーコードの詳細を確認したとき、db2 プロセスがエラーを返します。
    どのプロセスがエラーを返したかは db2diag.log のメッセージの PROC : db2 から確認できます。
    $ db2 " ? SQL0911N"
    
    [db2diag.log の出力]
    2010-08-20-13.49.14.789975+540 E180407A491        LEVEL: Error (OS)
    PID     : 5054496              TID  : 1           PROC : db2
    INSTANCE: db2inst1             NODE : 000
    EDUID   : 1
    FUNCTION: DB2 UDB, oper system services, sqlodque, probe:7
    MESSAGE : ZRC=0x870F003E=-2029060034=SQLO_QUE_BAD_HANDLE "Bad Queue Handle"
              DIA8555C An invalid message queue handle was encountered.
    CALLED  : OS, -, semctl
    OSERR   : EINVAL (22) "システム・コールが、無効なパラメーターを受け取りました。"
    
    db2diag.log にエラーメッセージが出力されますが、SQL エラーコードの情報は正しく出力されます。
    メッセージを出力させないようにするには、下記の APAR が含まれている Fix Pack を適用してください。
    APAR の詳細情報は 【関連情報】 に記載しているリンクからご確認ください。
    IC62078 (V9.1 FP9で修正済み)
    IC62059 (V9.5 FP5で修正済み)
    IC68164 (V9.7 FP3で修正予定)
     
運用上の考慮点
  • 大量にメッセージが出力されている場合、db2diag.log のサイズが膨大になることがあります。
    db2diag.log のサイズが大きくなることでインスタンス・ディレクトリの空き容量に影響が及ぶ場合、インスタンスユーザーで下記コマンドを実行し、db2diag.log をアーカイブしてください。
    その後、別のディレクトリへの移動や圧縮で空き容量を増やすことが可能です。
    $ db2diag -A
  • プロセス名 db2 もしくは db2bp 以外から EINVAL が出力された場合、何らかの問題が発生した可能性がありますので、IBM テクニカル・サポートにお問い合わせください。

関連情報
[Db2] パスポート・アドバンテージによく寄せられる質問
コマンド行プロセッサーのフィーチャー
db2diag - db2diag ログ分析ツール・コマンド

db2bp から出力されるケースの詳細情報
When piping the output of a DB2 command to the head operating system command ("| head"), an operating system error is logged to the db2diag.log

db2 から出力されるケースの詳細情報
MESSAGES ABOUT SQLO_QUE_BAD_HANDLE WHEN ONE DOES "DB2 ? SQL<X>". NO NEED FOR AN INSTANCE.
IC62078 (v9.1)
IC62059 (v9.5)
IC68164 (v9.7)

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PmTAAU","label":"Programming Interface-\u003ECLP"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"All Versions"}]

Historical Number

C9A9316E6D1B4899492577A8001DDCF6

Document Information

Modified date:
15 August 2023

UID

jpn1J1000934