IMPORTANT: Do no change or delete predefined database schedules as it may lead to unexpected errors.
DBQueue Processor initialization takes place once during schema installation. The following database schedules are generated during the initialization phase:
This database schedule assumes several functions in the One Identity Manager.
This database schedule has an active schedule with a 1 minute interval.
This database schedule is the DBQueue Processor's central dispatcher. The central dispatcher assumes control of processing and distributes DBQueue tasks to individual slots. Each time the central dispatcher is executed, the number of currently available slots required for the current run is found. The central dispatcher starts database schedules for the currently available slots just once.
Only one database schedule at most is started for the central dispatcher. The central dispatcher's database schedule does not have an active schedule, but is started by the database schedule QBM_PWatchDog on <database>.
The maximum number of available slots is determined during the DBQueue Processor initialization phase. The maximum number of slots depends on the number of processors on the database server. An associated database schedule QBM_PDBQueueProcess<SlotNumber> on <database> is set up for each slot. Each database schedule is set up with a process which executes the DBQueue tasks for exactly this slot. The database schedules associated to each slot do not have any active schedules. They are started by the central dispatcher.
This database schedule removes processed DBQueue tasks. The database schedule does not have an active schedule, but is started through the database schedule QBM_PWatchDog on <database>.
Run the following procedures once in the reference database using a suitable query tool.
exec QBM_PDBQueuePrepare 0,1
The database schedule for the central dispatcher is started with the database schedule QBM_PWatchDog on <database> . The central dispatcher assumes control of processing and distributes DBQueue tasks to individual slots.
Each time the central dispatcher is executed, the number of currently available slots required for the current run is found first. The more load there is on the database, the less slots there are to use. At least two slots are used.
The number of currently available slots results from:
The number of currently available slots = maximum number of available slots - sum of all own database processes - sum of processes of other databases on the server
The central dispatcher starts database schedules for the currently available slots just once. Each database schedule is set up with a process , which executes tasks for exactly this slot.
Once tasks in the DBQueue are entered, the central dispatcher is notified. The central dispatcher distributes tasks to individual slots and notifies the slot processes that there are tasks are waiting to be processed. Each process processes the tasks queued for its slot. Once the task is complete, each process sends a message to the central dispatcher and waits for new tasks.
The central dispatcher checks at defined intervals whether the slots are still active and distributes new tasks to them. If there are no more tasks in the DBQueue, the central dispatcher goes into a wait state and waits for new task notifications.
Tasks on slots currently in use are still processed when the timeout expires. Then the slot database schedules are stopped and the central dispatches exits. For more information, see How the Central Dispatcher Communicates with Individual Slots.
Figure 66: Controlling Processing
The central dispatcher finds entries in the DBQueue (table DialogDBQueue) and moves the tasks into the table QBMDBQueueCurrent with the assignment tasks per slot.
|Slot number||Task name||Object|
Each process processes tasks queued for its own slot in the table QBMDBQueueCurrent. Subsequent tasks resulting from processing are queued in the table DialogDBQueue.
When a process has handled its tasks and no new task are pending, process sets the slot number itself to "0" in the table QBMDBQueueCurrent. The entry initially remains in the table QBMDBQueueCurrent but is no longer taken into account (because slot 0 is not active).
The database schedule QBM_PDBQueueProcess_Del on <database> deletes all entries with slot number "0" from the table QBMDBQueueCurrent in regular intervals.
|001 - n||Number of slot to be processed by the task.|
|0||State after the task is completed correctly.|
An error occurred during task processing or processing was deferred, for example, because synchronization is running. The central dispatcher re-enables the task.
An error occurred during task processing or processing was deferred, for example, because of blocking. The central dispatcher re-enables the task.
An error occurred during task processing or processing was deferred, for example, because there are still entries in the Job queue. The central dispatcher re-enables the task.