IBM Support

[Db2] バージョンアップやフィックスパック適用で、データベース・オブジェクトが無効化される

Question & Answer


Question

Db2 をバージョンアップして upgrade database コマンドを実行したり、新しいフィックスパックを適用して db2updvxx コマンドを実行すると、複数のデータベース・オブジェクトが無効化されたり、作動不能になります。
無効化されたオブジェクトにアクセスすると、データベース構成パラメーターや、アクセスする許可 ID によってはオブジェクトが自動的に再有効化されます。しかし、このときシステム・カタログ表が更新されるため、予期しないロック・タイムアウトやデッドロック (SQL0911N) またはログフル (SQL0964C) が発生することがあります。 また、オブジェクトが無効化されているため、再バインドを施行すると SQL2453N で失敗することがあります。 これはなぜでしょう。どうすれば回復できますか?

Cause

データベースをアップグレードすると、ユーザー・アプリケーションおよびルーチンに関するパッケージはすべて無効としてマークされます。
アップグレードしたデータベース中のパッケージの再バインド

また、新しいバージョンや、新しいフィックスパックでは、システム・モニター用の表関数などが変更されることがあります。基礎となる表関数が変更されると、依存関係を持つシステム管理ビューが作動不能とマークされたり、依存関係を持つモジュールに含まれるパッケージが無効としてマークされます。

例 

  1. フィックスパック適用後、db2updvxx コマンドを実行します。
    $ db2updv105 -d sample
  2. 複数の管理ビューが作動不能になり、複数のパッケージが無効化されます。
    $ db2 connect to sample
    $ db2 "select char(viewschema,10)schema, char(viewname,30)view, valid from syscat.views where viewschema like 'SYSIBMADM%' and valid = 'N'"
    
    SCHEMA     VIEW                           VALID
    ---------- ------------------------------ -----
    SYSIBMADM  AUTHORIZATIONIDS               N    
    SYSIBMADM  MON_LOCKWAITS                  N    
    SYSIBMADM  PRIVILEGES                     N    
    SYSIBMADM  TBSP_UTILIZATION               N    
    
    $ db2 "select char(pkgschema,15)schame, char(pkgname, 30)pkgname, valid from syscat.packages where pkgschema like 'SYS%' and valid = 'X'"
    
    SCHAME          PKGNAME                        VALID
    --------------- ------------------------------ -----
    SYSIBMADM       P1011255957                    X    
    SYSIBMADM       P1017589920                    X    
    SYSIBMADM       P823918357                     X    
    SYSIBMADM       P759004751                     X    
    SYSIBMADM       P461683333                     X
    注:無効化されるビューやパッケージは移行前および移行後のバージョンとフィックスパックに依存します。
    また上記の手順はすべての無効化オブジェクトを一覧することを目的にしていません。表を除く無効化オブジェクトの一覧は SYSCAT.INVALIDOBJECTS を参照してください。

Answer

バージョンアップ後やフィックスパック適用後に、複数のデータベース・オブジェクトが作動不能とマークされたり、無効とマークされる結果は予期されています。

以下のように ADMIN_REVALIDATE_DB_OBJECTS プロシージャーおよび db2rbind を利用して、これらのオブジェクトを有効化してください。

  1. データベースに DBADM 権限のユーザーで接続します。
    $ db2 connect to <dbname>
  2. ADMIN_REVALIDATE_DB_OBJECTS を実行します。
    $ db2 "CALL SYSPROC.ADMIN_REVALIDATE_DB_OBJECTS()"
  3. db2rbind でパッケージを再バインドします。
    $ db2rbind <dbname> -l db2rbind.log all -r any
    注:db2updv* も実行しておらず、データベース・オブジェクトが無効化されない場合でも、Db2 11.5 Mod 1 以前からそれ以降にアップグレードした場合、既存のパッケージを実行すると SQL0901N を返す以下の障害が報告されています。この場合も db2rbind all でパッケージを再バインドして回避できます。
    DT244336 Execution of static package fails with ‘cdeStaticSettings != __null’ AssertionFailedException
運用上の考慮点
  • ADMIN_REVALIDATE_DB_OBJECTS 実行中に以下のようなエントリーが db2diag.log に記録されることがあります。
    内部的に発生したデッドロックなどのためにリトライが行われたことを示しており、ADMIN_REVALIDATE_DB_OBJECTS が正常終了した場合は無視できます。
    2020-07-14-13.00.09.345568+540 I159750E1076          LEVEL: Severe
    PID     : 23125                TID : 1973250987      PROC : db2sysc 0
    INSTANCE: db2inst1             NODE : 000            DB   : SAMPLE
    APPHDL  : 0-14                 APPID: *LOCAL.db2inst1.200714055728
    UOWID   : 1                    ACTID: 1
    AUTHID  : DB2INST1             HOSTNAME: db2serv
    EDUID   : 14                   EDUNAME: db2agent (SAMPLE) 0
    FUNCTION: DB2 UDB, base sys utilities, sqeIcoordCB::DispatchIndependentDBAgent, probe:125
    RETCODE : ZRC=0x8005006D=-2147155859=SQLE_CA_BUILT
              "SQLCA has been built and saved in component specific control block."
    
    202-07-14-13.00.15.357766+540 I405888E1106          LEVEL: Error
    PID     : 23125                TID : 1973250987     PROC : db2sysc 0
    INSTANCE: db2inst1             NODE : 000           DB   : SAMPLE
    APPHDL  : 0-14                 APPID: *LOCAL.db2inst1.200714055728
    UOWID   : 1                    ACTID: 1
    AUTHID  : DB2INST1             HOSTNAME: db2serv
    EDUID   : 14                   EDUNAME: db2agent (SAMPLE) 0
    FUNCTION: DB2 UDB, SW- common services, sqlnn_regen_procedure, probe:300
    MESSAGE : Revalidation icoord failed; retrying without

[{"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":"a8m500000008PknAAE","label":"Install\/Migrate\/Upgrade"},{"code":"a8m500000008Pm7AAE","label":"Install\/Migrate\/Upgrade-\u003EFixpak"},{"code":"a8m500000008PmRAAU","label":"Programming Interface-\u003EBind and Packages"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
07 November 2023

UID

swg22010188