データ共用環境での管理タスク・スケジューラー間の同期

データ共用グループの管理タスク・スケジューラー間の同期は、タスク・リストを介して行われます。

タスクが追加されると、ADMIN_TASK_ADD ストアード・プロシージャーはDb2メンバーによって呼び出されます。 このDb2メンバーに関連付けられている管理タスク・スケジューラーは、共通タスク・リストにタスクを追加します。 このタスク・リストは、データ共用グループ・メンバーに関連付けられているすべての管理タスク・スケジューラーによって共用されます。 次回管理タスク・スケジューラーがこのリストにアクセスするときに、新規タスクが検出されます。

データ共用グループのすべての管理タスク・スケジューラーは、1 分ごとにこのタスク・リストにアクセスし、新規タスクがあるかどうかを確認します。 タスクを追加した管理タスク・スケジューラーはリストを確認する必要はありません。追加したタスクを即時に実行できます。 その他の管理タスク・スケジューラーは、更新後のタスク・リストで新規タスクを検出した後でのみ、この新規タスクを実行できます。 すべての管理タスク・スケジューラーは待機せずにタスクを除去できます。

タスクを除去するために、ADMIN_TASK_REMOVE ストアード・プロシージャーは、Db2メンバーによって呼び出されます。 このDb2メンバーに関連付けられている管理タスク・スケジューラーは、共通タスク・リストからタスクを除去します。 管理タスク・スケジューラーがリストを次に確認する時点がタスクの除去後 1 分以内の場合、削除されたタスクが検出されます。

管理タスク・スケジューラーは、タスクを実行する前にタスク・リストでそのタスクをロックする必要があります。 タスクをロックすることで、削除済みのタスクが実行される状況を防ぐことができます。これは、リストには削除済みタスクがなく、ロックできないためです。 タスクをロックできないと、実行できません。 ロックにより、二重実行も防止されます。 ある管理タスク・スケジューラーにより実行中のタスクは既にロックされているため、他のスケジューラーがこのタスクをロックして実行することができません。