Question & Answer
Question
db2diag.log に出力された以下のエラーの意味と対応方法を教えてください。
OSERR : EINVAL (22) "システム・コールが、無効なパラメーターを受け取りました。"
Answer
コマンド行プロセッサー (CLP) のプロセス (db2 および db2bp) によって、db2diag.log に EINVAL (22) "システム・コールが、無効なパラメーターを受け取りました" のメッセージが記録されることがあります。
関連情報
このエラーメッセージの発生条件は 2 つのケースがあります。
- db2bp (CLP バックエンド) プロセスからエラーが報告される
- db2 (CLP フロントエンド) プロセスからエラーが報告される
2 つのプロセスは、コマンド行プロセッサー (CLP) に関連するプロセスです。
CLP はユーザー・インターフェースとして機能するフロントエンド・プロセス (db2 コマンド) と、データベース接続を維持するバックエンド・プロセス (db2bp) で構成されています。
db2 コマンドが呼び出されるたびに、新しいフロントエンド・プロセスが開始されます。
db2bp プロセスは最初の db2 (CLP フロントエンド) 呼び出しのときに開始し、TERMINATE によって明示的に終了します。
注: CLP 以外も db2diag.log に EINVAL を記録することはありますが、この FAQ では CLP からのケースのみを扱います。
CLP はユーザー・インターフェースとして機能するフロントエンド・プロセス (db2 コマンド) と、データベース接続を維持するバックエンド・プロセス (db2bp) で構成されています。
db2 コマンドが呼び出されるたびに、新しいフロントエンド・プロセスが開始されます。
db2bp プロセスは最初の db2 (CLP フロントエンド) 呼び出しのときに開始し、TERMINATE によって明示的に終了します。
注: CLP 以外も db2diag.log に EINVAL を記録することはありますが、この FAQ では CLP からのケースのみを扱います。
- db2bp (CLP バックエンド) プロセスから出力されるケース
db2bp が CLP の出力としてパイプ ( | ) に渡す処理を実行中、パイプへの出力が完了する前にパイプの先のプロセスが終了すると db2bp が上記のエラーを報告します。
どのプロセスがエラーを返したかは db2diag.log のメッセージの PROC : db2bp から確認できます。
以下のようなSQLを実行しているときに発生することがあります。
(例)db2 "list tablespaces show detail" | head -81 db2 "select * from employee" | head -10
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}'
- 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) "システム・コールが、無効なパラメーターを受け取りました。"
メッセージを出力させないようにするには、下記の 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 テクニカル・サポート
コマンド行プロセッサーのフィーチャー
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
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
jpn1J1000934