Oracle 19c: parameters max_idle_time en max_idle_blocker_time

Iedere release is Oracle bezig de configuratie parameters.  Er zijn parameters de ‘deprecated’ worden verklaard, of verdwijnen. Maar ook zijn er regelmatig nieuwe parameters, en niet altijd krijgen die de aandacht die ze verdienen.

In Oracle 19 zijn de init.ora parameters max_idle_time en max_idle_blocker_time geïntroduceerd. Dit zijn in en historisch perspectief opvallende parameters. Opvallend omdat Oracle de bijbehorende functionaliteit in het verleden ook op andere plekken heeft geïntroduceerd.

Als we naar de definitie van profile (gebruikt om resource beperkingen en password management te definiëren. Zien we dat we op dit niveau ook de parameter idle_time. Deze breekt volgens de documentatie de sessie af als de sessie lager dan deze idle time niet actief is.

select profile
	, resource_name
from dba_profiles
 where PROFILE = 'DEFAULT'
	 and RESOURCE_TYPE = 'KERNEL'

…
DEFAULT				IDLE_TIME
…

Later in de ontwikkeling van Oracle is Resource Manager aan de database toegevoegd.  Dit stelt de DBA instaat het resource gebruik van een gebruikersgroepen of een bepaald statement te beperken.

SQL> desc DBA_RSRC_PLAN_directives
…
 MAX_IDLE_TIME			NUMBER
 MAX_IDLE_BLOCKER_TIME		NUMBER
…

De documentatie geeft aan dat hiermee een sessie beëindigd kan worden na een bepaalde idle tijd, of als het een periode idle is maar wel een resource vasthoudt waar een andere sessie op zit te wachten.

In Oracle 19 zijn de parameters max_idle_time en max_idle_blocker_time waarmee op instance of PDB niveau ingesteld kan worden wanneer een sessie wordt afgebroken na een idle periode zonder dat resource manager geconfigureerd hoeft te worden.  Hierbij moet rekening gehouden dat dit (natuurlijk) niet werkt voor SYS-sessies. Deze worden niet beëindigd.

De getermineerde sessie krijgt niet een hele mooie informatieve foutmelding maar ervaart op een redelijke botte wijze dat zijn sessie is verdwenen bij de volgende activiteit.

SQL> alter system set max_idle_time=5 scope=memory;

System altered.

…

SQL> select * from dual;
select * from dual
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 6136
Session ID: 397 Serial number: 36508

Vraag is waarom heeft Oracle verschillende manieren  en welke is het meest zinnig om te gebruiken.  De ervaringen om idle time te beheersen via het profile zijn niet positief, de timing lijkt onnauwkeurig.  Als je de idle time probeert te beheersen via resource manager zullen de settings per consumer group worden toegekend.  Dat betekent dat de settings kunnen verschillen per sessie.  Dit is mogelijk maar vereist wel onderhoud aan de directives. Door het zetten van de init.ora parameters is er een maximale idle time gedefinieerd in alle sessies van de database.

Het beperken van idle sessies in de database wordt gezien als een manier om resource management toe te passen: het aantal sessies met bijbehorende resourcegebruik wordt beperkt. Het is echter ook een belangrijke manier om security te versterken. Zodra een sessie onbeheerd open blijft staan, is er ook de mogelijkheid tot misbruik.

Het configureren van idle time is een aspect waar veel DBA’s veel weg bij blijven.  Mede omdat het gedeeltelijk op het taakgebied van technisch applicatiebeheer.  Het feit dat in Oracle 19 een extra mogelijkheid is gekomen de idle time te beperken geeft aan dat dit een punt is waaraan serieus aandacht besteed moet worden.

Wil je dat we je helpen? Neem contact met ons op.

Scroll to Top