Resource Manager Verbeteringen in Oracle Database 10g
Resource manager lijkt de vergeten tool in de gereedschapskist van de DBA. Als je het er over hebt kijken de meesten alsof ze er nog nooit van hebben gehoord. Oracle is de resource manager blijven verbeteren bij elk versie en 10g is daarin geen uitzondering

 

  • Zetten van de Consumer Group Switch Times Per Call
  • Zetten van de Consumer Group Idle Time-outs
  • Automatisch Resource Consumer Groups aan sessies toewijzen

Zetten van de Consumer Group Switch Times Per Call

Oracle9i introduceerde het concept van switch times om het mogelijk te maken om van consumer group te wisselen als de executie tijd een bepaalde threshold heeft bereikt. Dit werkte goed voor basic sessies zoals jobs, maar was bijna zinloos voor multie-tier systemen die gebruik maken van connectie.

De nieuwe SWITCH_TIME_IN_CALL parameter van de CREATE_PLAN_DIRECTIVE procedure lost dit probleem op zodat het resource gebruik van 1 client, de toekomstige clients in dezelfde sessie niet beïnvloed. De default waarde van deze parameter is NULL wat Unlimited time vertegenwoordigd.

De waarde van dit attribuut kan geüpdate worden met de NEW_SWITCH_TIME_IN_CALL parameter van de UPDATE_PLAN_DIRECTIVE procedure.

The SWITCH_TIME_IN_CALL en SWITCH_TIME parameters zijn wederzijds exclusief.

Zetten van de Consumer Group Idle Timeouts

De MAX_IDLE_TIME en MAX_IDLE_BLOCKER_TIME parameters van de CREATE_PLAN_DIRECTIVE procedure maakt het mogelijk om de time-out thresholds voor de consumer groups te zetten. The MAX_IDLE_TIME parameter definieert de maximum tijd dat een sessie in een idle staat aan deze consumer group gekoppeld kan zijn. De MAX_IDLE_BLOCKER_TIME parameter definieert de maximum tijd dat een sessie, in een idle staat, gekoppeld kan zijn aan deze consumer Group, terwijl andere sessie resources geblokkeerd zijn. PMON checkt iedere minuut op sessies die deze thresholds overschrijden en killt ze om andere resources vrij te geven. De default waarde van deze parameter is NULL wat Unlimited time vertegenwoordigd


De waarden van de attributen kunnen geüpdate worden met de NEW_MAX_IDLE_TIME en NEW_MAX_IDLE_BLOCKER_TIME parameters van de UPDATE_PLAN_DIRECTIVE procedure.

Automatisch Resource Consumer Groups aan sessies toewijzen

Oracle 10g introduceert een methode om sessie attributen aan consumer groups te koppelen, om het gebruik van de resource manager makkelijker en meer flexibel te maken. Een aantal logon en runtime attributen kunnen gebruikt worden om te beslissen welke consumer group aan welke sessie gekoppeld moet worden. De Volgende constanten zijn toegevoegd aan de DBMS_RESOURCE_MANAGER package.

-- Login Attributes
oracle_user             CONSTANT VARCHAR2(30) := 'ORACLE_USER'
service_name            CONSTANT VARCHAR2(30) := 'SERVICE_NAME';
client_os_user          CONSTANT VARCHAR2(30) := 'CLIENT_OS_USER';
client_program          CONSTANT VARCHAR2(30) := 'CLIENT_PROGRAM';
client_machine          CONSTANT VARCHAR2(30) := 'CLIENT_MACHINE';

-- Runtime Attributes
module_name             CONSTANT VARCHAR2(30) := 'MODULE_NAME';
module_name_action      CONSTANT VARCHAR2(30) := 'MODULE_NAME_ACTION';
service_module          CONSTANT VARCHAR2(30) := 'SERVICE_MODULE';
service_module_action   CONSTANT VARCHAR2(30) := 'SERVICE_MODULE_ACTION';

Deze constanten worden gebruikt door de SET_CONSUMER_GROUP_MAPPING procedure om de consumer group koppelingen te definiëren.

DBMS_RESOURCE_MANAGER.set_consumer_group_mapping (
  attribute       IN  VARCHAR2,
  value           IN  VARCHAR2,
  consumer_group  IN  VARCHAR2 DEFAULT NULL)

Aangenomen dat we 3 consumer hebben (OLTP_CONSUMER_GROUP, BATCH_CONSUMER_GROUP en OTHER_GROUPS) zouden we het als volgt kunnen invullen..

BEGIN
  DBMS_RESOURCE_MANAGER.set_consumer_group_mapping (
    attribute      => DBMS_RESOURCE_MANAGER.oracle_user,
    value          => 'OLTP_USER',
    consumer_group => 'OLTP_CONSUMER_GROUP');

  DBMS_RESOURCE_MANAGER.set_consumer_group_mapping (
    attribute      => DBMS_RESOURCE_MANAGER.oracle_user,
    value          => 'BATCH_USER',
    consumer_group => 'BATCH_CONSUMER_GROUP');

  DBMS_RESOURCE_MANAGER.set_consumer_group_mapping (
    attribute      => DBMS_RESOURCE_MANAGER.module_name,
    value          => 'REPORT',
    consumer_group => 'BATCH_CONSUMER_GROUP');
END;
/

De combinatie van meerdere koppelingen en expliciete switch requests kan resulteren in een grote keuze van consumer group welke lijken te conflicteren. Gebruik makend van bovenstaand voorbeeld, zouden we een reporting sessie (met zijn module op "REPORT" gezet) welke gekoppeld is aan het OLTP_USER schema. Welke consumer group zouden we in de volgende situatie selecteren?

DE SET_CONSUMER_GROUP_MAPPING_PRI procedure maakt de beslissing, welke consumer group te selecteren, eenvoudiger door voor ieder attribuut een prioriteit te zetten.

DBMS_RESOURCE_MANAGER.set_consumer_group_mapping_pri (
  explicit               IN  NUMBER,
  oracle_user            IN  NUMBER,
  service_name           IN  NUMBER,
  client_os_user         IN  NUMBER,
  client_program         IN  NUMBER,
  client_machine         IN  NUMBER,
  module_name            IN  NUMBER,
  module_name_action     IN  NUMBER,
  service_module         IN  NUMBER,
  service_module_action  IN  NUMBER)

De parameters worden aan de constanten gekoppeld met uitzondering van de EXPLICIT parameter welke "explicit calls to switch consumer groups “ representeerd met de SWITCH_CURRENT_CONSUMER_GROUP, SWITCH_CONSUMER_GROUP_FOR_SESS en SWITCH_CONSUMER_GROUP_FOR_USER procedures. De prioriteiten die aangewezen worden, moeten unieke integers zijn van 1-10, met 1 als de hoogste prioriteit.

BEGIN
  DBMS_RESOURCE_MANAGER.set_consumer_group_mapping_pri (
    explicit              => 1,
    oracle_user           => 2,
    service_name          => 3,
    client_os_user        => 4,
    client_program        => 5,
    client_machine        => 6,
    module_name           => 7,
    module_name_action    => 8,
    service_module        => 9,
    service_module_action => 10);
END;
/

Bij bovenstaand voorbeeld heeft de ORACLE_USER een prioriteit dan de MODULE_NAME.


 

 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 164 gasten online