Voorkom dat één database je hele server verstoort met Instance caging

De meeste organisatie draaien meerdere Oracle databases op één enkele machine. In veel gevallen wordt dit ingegeven door het licentie model van Oracle. Het risico dat hieruit naar voren komt ligt in het feit dat een enkele database zoveel concurrent sessies heeft met een dure query, dat effectief de volledige CPU capaciteit van de machine wordt geconsumeerd door deze ene database.

In het uiterste geval kan hiermee het geheel databaselandschap van een organisatie effectief onbereikbaar worden doordat geen van de databases nog CPU tijd krijgt. Dit is een situatie de je wil voorkomen als je wilt garanderen dat de business continuïteit gewaarborgd is.
De enige manier waarop dit mogelijk is, is het partitioneren van de bestaande CPU capaciteit. Dit is in Oracle mogelijk door resource management te enablen. Dit kan met de volgende 2 settings in de parameter file

resource_manager_plan=default_plan
cpu_count=n

Hier is <n> het aantal CPU’s dat je maximaal beschikbaar wil stellen aan de geconfigureerde database. Als je deze op een quadcore processor op 1 instelt zullen er 3 processoren beschikbaar blijven voor de andere databases. Maar bij tijdelijke drukte zal er geen gebruik gemaakt kunnen worden van de 3 processoren. Dit zal dan tot queueing in de specifieke database leiden,

In Oracle Enterprise Manager is deze queueing te zien als een licht groen vlak. Zie de bovenstaande grafiek.
Als je het volgende commando intypt

Select event from v$session

zal je wait event resmgr:cpu quantum zien waarmee aangegeven is dat resource manager heeft ingegrepen.

Deze feature heet Instance caging en is zowel in Oracle database EE als SE2 beschikbaar.