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 the processed DBQueue tasks. The database schedule does not have an active schedule, but is started through the database schedule QBM_PWatchDog on <database>.
IMPORTANT: Select a user that you use for migrating the database to execute the SQL queries.
You must execute the procedure QBM_PDBQueuePrepare once manually when the server hardware has been extended and when custom DBQueue Processor tasks have been created.
You must execute the procedures QBM_PDBQueuePrepare and QBM_PWatchDogPrepare once when you set up a reference database for test and development.
Use a suitable program for executing SQL queries to run the following procedures in the reference database just once.
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. However, at least five 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
NOTE: The number of available slots can still be influenced by the QBM | DBQueue | CountSlotsMax configuration parameter. If the number of available slots, according to calculation, is more than the value in the configuration parameter, the configuration parameter value is taken. For more information, see Configuring the DBQueue Processor for test and development environments.
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 43: 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.
If a process has processed its tasks and no other tasks are pending, the slot number in the QBMDBQueueCurrent table is set to 0 by the process itself. 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 QBMDBQueueCurrent table at 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.