Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


11.18.4 システム表の再編成と排他制御

ここでは,adbreorgsystemdataコマンドと排他制御の関係,およびadbreorgsystemdataコマンドの待ち状態について説明します。

〈この項の構成〉

(1) adbreorgsystemdataコマンドと排他制御の関係

adbreorgsystemdataコマンドを実行すると,HADBサーバは「2.10.5 確保される排他資源と排他制御モード」に従って,排他資源を確保します。

adbreorgsystemdataコマンドの実行中は,排他資源の「システム表用DBエリア」を占有モード(EX)で確保します。そのため,adbimportコマンドやadbmergechunkコマンドなどは実行できません。

また,次に示すSQL文やコマンドを実行している場合,adbreorgsystemdataコマンドは待ち状態になります(KFAA80257-Iメッセージが出力されたあとで,再編成の処理が中断します)。実行しているSQL文やコマンドが終了したあとで,adbreorgsystemdataコマンドの処理が再開されます。

adbreorgsystemdataコマンドを待ち状態にするSQL文とコマンド
  • 検索系SQL(システム表(実表),またはアーカイブマルチチャンク表に実行する場合)

  • 更新系SQL(アーカイブマルチチャンク表に実行する場合)

  • adbexportコマンド(システム表(実表),またはアーカイブマルチチャンク表に実行する場合)

  • --shared-lockオプションを指定したadbdbstatusコマンド(システム表用DBエリアに実行する場合)

  • --shared-lockオプションを指定したadbdbstatusコマンド(adbreorgsystemdataコマンドの処理対象であるシステム表(実表)に実行する場合)

  • --shared-lockオプションを指定したadbdbstatusコマンド(adbreorgsystemdataコマンドの処理対象であるシステム表(実表)のインデクスに実行する場合)

注※

adbreorgsystemdataコマンドを,システム表(実表)のSTATUS_CHUNKS表に実行するときが該当します。STATUS_CHUNKS表以外のシステム表(実表)に対してadbreorgsystemdataコマンドを実行するときは,アーカイブマルチチャンク表に対象のSQL文とコマンドを実行していても,adbreorgsystemdataコマンドは待ち状態にはなりません。

SQL文やコマンドの終了を待たないで,adbreorgsystemdataコマンドの待ち状態を解消したい場合は,「11.18.4 システム表の再編成と排他制御」の「(2) adbreorgsystemdataコマンドの待ち状態を解消する方法」を参照してください。

(2) adbreorgsystemdataコマンドの待ち状態を解消する方法

待ち状態の原因となっているSQL文やコマンドの終了を待たないで,adbreorgsystemdataコマンドの待ち状態を解消したい場合は,対象のSQL文やコマンドを終了する必要があります。

adbreorgsystemdataコマンドが待ち状態の原因となっているSQL文やコマンドを終了したい場合は,次に示す手順を実施してください。

手順

  1. adbls -d lockコマンドを実行する

    次の条件に該当する項目「CID」を確認してください。

    • 項目「RESOURCEID」に,adbreorgsystemdataコマンドの処理対象表の表IDが出力されている行

    adbreorgsystemdataコマンドの処理対象表であるシステム表(実表)の表IDについては,「付録C.1 システム表の概要」の「(1) システム表の一覧」を参照してください。

  2. adbls -d cnctコマンドを実行する

    次のどちらかの条件に該当する項目「CID」を確認してください。

    • 項目「CLIENT_TYPE」にcommandが出力されている行,かつ項目「CONNECT_TIME」に出力されている時刻が,前回実施したadbreorgsystemdataコマンドで出力されたKFAA80256-Iメッセージの出力時刻よりも前である行

    • 項目「CLIENT_TYPE」にcommandが出力されていない行,かつ項目「SQL_ELAPSED_TIME」に出力されているマイクロ秒から求めたSQL文の経過時間が,前回実施したadbreorgsystemdataコマンドで出力されたKFAA80256-Iメッセージの出力時刻よりも前である行

  3. adbcancelコマンドを実行する

    手順1.および手順2.の両方で確認した項目「CID」が,adbreorgsystemdataコマンドが待ち状態の原因となっているSQL文またはコマンドのコネクションIDです。adbcancelコマンドにコネクションIDを指定して実行すると,adbreorgsystemdataコマンドの待ち状態が解消されます。

各コマンドについては,マニュアルHADB コマンドリファレンスを参照してください。