IBM Support

[Db2] Db2 診断ログに DIA8561C (shmctl の EINVAL) が記録される

Question & Answer


Question

Db2 診断ログ (db2diag.log) に、db2ipccm からの DIA8561C A invalid memory block was encountered がいくつも記録されます。 原因と対処方法を教えてください。

Cause

DB2 9.x AIX 版で、ローカル接続を行うと、DB2 診断ログ (db2diag.log) に以下のようなエラーが記録されることがあります。
  • 2012-12-06-10.00.14.177861+540 I3995099A630       LEVEL: Error (OS)
    PID     : 1970324              TID  : 1286        PROC : db2sysc
    INSTANCE: db2inst1             NODE : 000
    EDUID   : 1286                 EDUNAME: db2ipccm
    FUNCTION: DB2 UDB, SQO Memory Management, sqloMemSetPageSize, probe:100
    MESSAGE : ZRC=0x820F0002=-2112946174=SQLO_INV_MEM "Invalid memory addr"
              DIA8561C A invalid memory block was encountered.
    CALLED  : OS, -, shmctl
    OSERR   : EINVAL (22) "Invalid argument"
    DATA #1 : String, 44 bytes
    Failure enabling specified memory page size.
    DATA #2 : Logical page size, PD_TYPE_MEM_PAGE_SIZE, 8 bytes
    65536 (=64KB)

このエラーは、共有メモリーのページサイズを shmctl で 64KB に設定しようとしたところ EINVAL で失敗したことを示します。
AIX オペレーティング・システムの仕様により、拡張共有メモリー (EXTSHM) が有効な状態で作成された共有メモリーは複数ページ・サイズをサポートしないため、EINVAL が返ります。

DB2 は複数ページ・サイズ・サポートが有効な AIX システムでは、パフォーマンス上の理由で共有メモリーにミディアム・ページ・サイズを使おうとします。
このエラーが記録されている場合、DB2 はミディアム・ページ・サイズの共有メモリーを使えず、メモリー・アクセスのコストがあがるため、若干パフォーマンスが低下する可能性があります。

DB2 インスタンスが使用している共有メモリーのページサイズを確認するには、root ユーザーでログインし、svmon -P <db2sysc のプロセス ID> を実行します。PSize 列が s なら 4K ページ、m なら 64K ページが使われています。共有メモリーの判別方法や svmon の実行例は、以下の Technote を参照してください。

[DB2 LUW] DB2 のメモリー管理 - 1.概要

Answer

メッセージの記録を抑制したい場合、以下のいずれかの方法で設定を変更してください。
ただし、IPC コミュニケーション・マネージャー (db2ipccm) からのエラー・メッセージは、IZ53577 (V9.5 FP7)、IC75472 (V9.7 FP4) で抑制されています。修正が有効なフィックスパックではメッセージは記録されませんが、拡張共有メモリーが設定されているなら、やはりミディアム・ページは使用できていません。
ミディアム・ページを使用する場合は b) の設定を行う必要があります。

a) Db2 のミディアム・ページ・サポートを無効にする

Db2 のミディアム・ページ・サポートを無効にし、shmctl の発行自体を抑制します。
現在エラーが記録されている場合、すでにミディアム・ページは使用できていないため、設定変更によるパフォーマンス低下はありません。

1. インスタンス・オーナーでログインし、レジストリー変数 DB2_MEDIUM_PAGE_SUPPORT=OFF を設定します。
  • db2set DB2_MEDIUM_PAGE_SUPPORT=OFF

2. 設定を反映させるため、インスタンスを再起動します。
  • db2stop
    db2start

b) 拡張共有メモリーの使用を停止する

Db2 インスタンスが環境変数 EXTSHM を読み込む設定になっているため、これを解除します。

1. インスタンス・オーナーでログインし、環境変数 EXTSHM を除去します。
.profile や db2profile で設定されている場合は、その設定を削除します。
  • export EXTSHM=

2. レジストリー変数 DB2ENVLIST から EXTSHM を削除します。
DB2ENVLIST に EXTSHM 以外の変数があれば、それらは残します。
  • db2set DB2ENVLIST=
    db2stop
    db2start

拡張共有メモリーは、一つの 32 ビット・アプリケーション・プロセスから同時に多数のローカル接続を行う場合に設定されます。
そのような要件がある場合、TCP/IP ループバックに接続設定を変更することを検討してください。

SAMPLE データベースを TCP/IP ループバック・カタログする例
  • db2 catalog tcpip node loopnode remote localhost server db2c_db2inst1
    db2 catalog db sample as sampler at node loopnode

運用上の考慮点

全く同じ原因で、インスタンス起動時に db2star2 から、データベース活動化時に db2agent から同様のエラーが記録されます。
しかし、通常の運用では、このメッセージは頻繁に記録されないため、メッセージを抑制する APAR は作成されていません。

a) インスタンス起動時 (db2star2)
  • 2012-12-24-05.33.09.398456+540 I28945A594         LEVEL: Error (OS)
    PID     : 329344               TID  : 1           PROC : db2star2
    INSTANCE: db2inst1             NODE : 000
    EDUID   : 1
    FUNCTION: DB2 UDB, SQO Memory Management, sqloMemSetPageSize, probe:100
    MESSAGE : ZRC=0x820F0002=-2112946174=SQLO_INV_MEM "Invalid memory addr"
             DIA8561C A invalid memory block was encountered.
    CALLED  : OS, -, shmctl
    OSERR   : EINVAL (22) "Invalid argument"
    DATA #1 : String, 44 bytes
    Failure enabling specified memory page size.
    DATA #2 : Logical page size, PD_TYPE_MEM_PAGE_SIZE, 8 bytes
    65536


  •  
b) データベース活動化時 (db2agent)
  • 2012-05-08-04.24.01.278696+540 I9633127A749       LEVEL: Error (OS)
    PID     : 34340950             TID  : 3086        PROC : db2sysc
    INSTANCE: db2inst1             NODE : 000         DB   : SAMPLE
    APPHDL  : 0-34                 APPID: *LOCAL.db2inst1.120508042401
    AUTHID  : DB2INST1
    EDUID   : 3086                 EDUNAME: db2agent (SAMPLE)
    FUNCTION: DB2 UDB, SQO Memory Management, sqloMemSetPageSize, probe:100
    MESSAGE : ZRC=0x820F0002=-2112946174=SQLO_INV_MEM "Invalid memory addr"
              DIA8561C A invalid memory block was encountered.
    CALLED  : OS, -, shmctl
    OSERR   : EINVAL (22) "Invalid argument"
    DATA #1 : String, 44 bytes
    Failure enabling specified memory page size.
    DATA #2 : Logical page size, PD_TYPE_MEM_PAGE_SIZE, 8 bytes
    65536


関連情報
パスポート・アドバンテージによく寄せられる質問
IC75472 THE DB2DIAG.LOG IS FILLING WITH INVALID MEMORY ADDR ERROR MESSAGES. WHEN EXTSHM = ON AND USING MEDIUM PAGE SIZE.

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"OTHER - Uncategorised","Platform":[{"code":"PF002","label":"AIX"}],"Version":"9.7;9.5;9.1","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
31 August 2023

UID

swg21625201