Package CS_RESOURCE_MANAGER

Le package CS_RESOURCE_MANAGER fournit une interface permettant de répertorier et de mettre à jour les paramètres de groupe de consommateurs de ressources, et de rétablir les valeurs par défaut des paramètres.

Procédure CLEAR_PENDING_AREA

Cette procédure efface les modifications en attente pour le gestionnaire de ressources.

Syntaxe


CS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;

Procédure CREATE_CONSUMER_GROUP

Cette procédure définit les groupes de consommateurs de ressources.

Syntaxe

CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
   consumer_group  IN VARCHAR2,
   comment         IN VARCHAR2 DEFAULT NULL);

Paramètres

Paramètre Description

consumer_group

Nom du groupe de consommateurs de ressources

comment

Commentaire de l'utilisateur

Notes d'utilisation

Vous pouvez déterminer la façon dont les sessions sont placées dans les groupes de consommateurs de ressources via :

  • Attribution de chaîne de connexion : indiquez CONSUMER_GROUP dans la chaîne de connexion à la base de données, comme indiqué ci-dessous. Cette approche est prioritaire sur le mapping et remplacera tous les mappings définis.

    (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.us-ashburn-1.oraclecloud.com))(connect_data=(service_name=my_database_low.adb.oraclecloud.com)(CONSUMER_GROUP=OLTP_LOW))(security=(ssl_server_dn_match=yes)))
  • Règles de mise en correspondance : utilisez les sous-programmes set_consumer_group_mapping et set_consumer_group_mapping_pri pour affecter des sessions ou des applications à des groupes de consommateurs de ressources en fonction d'attributs tels que le nom utilisateur ou le nom d'application.

Exemples

BEGIN
  CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    consumer_group => 'OLTP_HIGH',
    comment        => 'Priority OLTP sessions');

  CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    consumer_group => 'OLTP_LOW',
    comment        => 'Background/low-priority OLTP');

  CS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    consumer_group => 'LH_BATCH',
    comment        => 'Batch / reporting workloads');  
END;
/

Procédure CREATE_PENDING_AREA

Cette procédure crée une zone d'attente pour apporter des modifications aux objets du gestionnaire de ressources.

La zone d'attente peut être considérée comme une zone de travail pour les modifications de schéma de plan. L'administrateur crée cette zone d'attente, apporte les modifications nécessaires, valide éventuellement ces modifications, et ce n'est que lorsque la soumission est terminée que ces modifications deviennent actives.

Syntaxe

CS_RESOURCE_MANAGER.CREATE_PENDING_AREA;

Notes d'utilisation

Vous pouvez, à tout moment pendant que la zone d'attente est active, afficher le schéma de plan en cours avec vos modifications en sélectionnant l'une des vues utilisateur appropriées. Pour plus d'informations, reportez-vous à Visualisation de la configuration et du statut de Database Resource Manager.

A tout moment, vous pouvez effacer la zone d'attente si vous souhaitez arrêter les modifications en cours. Vous pouvez également appeler la procédure VALIDATE pour vérifier que les modifications que vous avez apportées sont valides. Vous n'avez pas besoin d'effectuer vos modifications dans un ordre donné pour maintenir un groupe cohérent d'entrées. Ces contrôles sont également implicitement effectués lorsque la zone en attente est soumise.

Remarque

Oracle autorise les groupes de consommateurs de ressources "orphelins" (en d'autres termes, les groupes de consommateurs de ressources qui n'ont pas de directives de plan qui y font référence). Un administrateur peut alors vouloir créer un groupe de consommateurs de ressources qui n'est pas en cours d'utilisation, mais qui sera utilisé ultérieurement.
Pour les plans d'allocation de ressources, les règles suivantes doivent être respectées et vérifiées chaque fois que les procédures de validation ou de soumission sont exécutées :
  • Aucun schéma de plan ne peut contenir de boucles.
  • Tous les plans et groupes de consommateurs de ressources auxquels les directives de plan font référence doivent exister.
  • Tous les plans doivent avoir des directives de plan qui font référence à des plans ou à des groupes de consommateurs de ressources.
  • Tous les pourcentages d'un niveau donné ne doivent pas être supérieurs à 100 pour la méthode d'allocation des ressources de mise en évidence.
  • Aucun plan en cours d'utilisation en tant que plan principal par une instance active ne peut être supprimé.
  • Il ne peut y avoir plus de 28 directives de régime provenant d'un régime donné (c'est-à-dire qu'aucun régime ne peut avoir plus de 28 enfants).
  • Il ne peut y avoir plus de 28 groupes de consommateurs de ressources dans aucun schéma de plan actif.
  • Les plans et les groupes de consommateurs de ressources utilisent le même espace de noms. Par conséquent, aucun plan ne peut porter le même nom qu'un groupe de consommateurs de ressources.
  • Une directive de plan doit exister pour OTHER_GROUPS dans n'importe quel schéma de plan actif. Cela garantit qu'une session qui n'est pas couverte par le plan actuellement actif reçoit les ressources spécifiées par la directive OTHER_GROUPS.

Si l'une des règles précédentes est rompue lorsque la vérification est effectuée par les procédures VALIDATE ou SUBMIT, un message d'erreur informatif est renvoyé. Vous pouvez ensuite apporter des modifications pour résoudre un ou plusieurs problèmes et réémettre les procédures de validation ou de soumission.

Procédure CREATE_PLAN

Cette procédure crée des entrées qui définissent les plans d'allocation de ressources.

Syntaxe

CS_RESOURCE_MANAGER.CREATE_PLAN (
   plan                       IN   VARCHAR2, 
   comment                    IN   VARCHAR2 DEFAULT NULL);

Paramètres

Paramètre Description

plan

Nom du plan de ressources

comment

Commentaire de l'utilisateur

Exemple

BEGIN
  CS_RESOURCE_MANAGER.CREATE_PLAN(
    plan    => 'OLTP_LH_PLAN',
    comment => 'Split resources between OLTP and Lakehouse workload types');
END;
/

Procédure CREATE_PLAN_DIRECTIVE

Cette procédure crée des directives de plan d'allocation de ressources.

Syntaxe

CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE (
   plan                          IN VARCHAR2, 
   consumer_group                IN VARCHAR2, 
   comment                       IN VARCHAR2 DEFAULT NULL, 
   shares                        IN NUMBER   DEFAULT NULL,
   utilization_limit             IN NUMBER   DEFAULT NULL,
   switch_action                 IN VARCHAR2 DEFAULT NULL,
   cpu_time_limit                IN NUMBER   DEFAULT NULL,
   io_megabytes_limit            IN NUMBER   DEFAULT NULL,
   io_reqs_limit                 IN NUMBER   DEFAULT NULL,
   io_logical_limit              IN NUMBER   DEFAULT NULL,
   elapsed_time_limit            IN NUMBER   DEFAULT NULL,
   max_idle_time                 IN NUMBER   DEFAULT NULL,
   max_idle_blocker_time         IN NUMBER   DEFAULT NULL,    
   active_session_limit          IN NUMBER   DEFAULT NULL,
   active_session_timeout        IN NUMBER   DEFAULT NULL,
   parallel_degree_limit         IN NUMBER   DEFAULT NULL,
   concurrency_limit             IN NUMBER   DEFAULT NULL,
   session_pga_limit             IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout        IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout_action IN NUMBER   DEFAULT NULL);

Paramètres

Paramètre Description

plan

Nom du plan de ressources

consumer_group

Nom du groupe de consommateurs de ressources

comment

Commentaire pour la directive du plan

shares

Part de l'allocation des ressources pour le groupe de consommateurs. Les partages déterminent la quantité de ressources d'UC et d'E/S qu'un groupe de consommateurs obtient par rapport aux autres groupes de consommateurs. Par exemple, un groupe de consommateurs de ressources avec une part de 2 obtiendra deux fois plus de ressources d'UC et d'E/S qu'un groupe de consommateurs de ressources avec une part de 1.

Si vous ne spécifiez pas de partages pour un groupe de consommateurs de ressources dans votre plan, le partage de ce groupe de consommateurs de ressources sera défini sur 1.

utilization_limit

Limites de ressources qui déterminent le nombre maximal de ressources d'E/S et de CPU qu'un groupe de consommateurs de ressources peut obtenir.

switch_action

Mesures à prendre pour atteindre l'une des limites spécifiées dans les directives. Les valeurs valides sont cancel_sql, kill_session ou un nom de groupe de consommateurs de ressources vers lequel basculer.

cpu_time_limit

Temps sur l'UC (en secondes) qu'une session peut exécuter avant qu'une action ne soit effectuée. La valeur par défaut est NULL, ce qui signifie illimité.

io_megabytes_limit

Quantité d'E/S (en Mo) qu'une session peut émettre avant qu'une action ne soit entreprise. La valeur par défaut est NULL, ce qui signifie illimité.

io_reqs_limit

Nombre de demandes d'E/S qu'une session peut émettre avant qu'une action ne soit effectuée. La valeur par défaut est NULL, ce qui signifie illimité.

io_logical_limit

Nombre d'E/S logiques qui déclencheront l'action indiquée par switch_action.

elapsed_time_limit

Temps écoulé (en secondes) qui déclenche l'action indiquée par switch_action.

max_idle_time

Nombre de secondes pendant lesquelles une session peut être inactive avant la fin de la session. La valeur par défaut est NULL, ce qui signifie illimité.

max_idle_blocker_time

Durée maximale (en secondes) pendant laquelle une session peut être inactive avant la fin de la session, si la session contient un verrou ou une ressource nécessaire à d'autres sessions.

active_session_limit

Nombre maximal de sessions pouvant simultanément avoir un appel actif.

active_session_timeout

Délai spécifié (en secondes) après lequel un appel dans la file d'attente de session inactive (en attente d'exécution) expire. La valeur par défaut est NULL, ce qui signifie illimité.

parallel_degree_limit

Indique le degré de parallélisme maximal pour toute opération. La valeur par défaut est NULL, ce qui signifie illimité. Utilisez la valeur 1 pour qu'une opération soit en série.

concurrency_limit

Définit le niveau de simultanéité et donc le degré de parallélisme (DOP). Il peut faire le DOP 1.

session_pga_limit

Quantité maximale de mémoire PGA non réglable (en Mo) qu'une session de ce groupe de consommateurs de ressources peut allouer avant d'être arrêtée. NULL (valeur par défaut) n'indique aucune limite.

Les opérations SQL qui allouent la mémoire PGA réglable (opérations pouvant choisir d'utiliser l'espace temporaire) ne sont pas contrôlées par cette limite.

parallel_queue_timeout

Indique la durée (en secondes) pendant laquelle une instruction parallèle peut rester dans la file d'attente des instructions parallèles de son groupe de consommateurs de ressources avant qu'elle ne soit supprimée et interrompue par une erreur (ORA-07454).

parallel_queue_timeout_action

Indique l'action à effectuer lorsqu'une instruction parallèle est enlevée de la file d'attente en raison de parallel_queue_timeout.

Les valeurs disponibles sont les suivantes :
  • CANCEL : l'instruction parallèle se termine avec l'erreur ORA-7454
  • RUN : l'instruction SQL s'exécute immédiatement et peut être rétrogradée si des serveurs parallèles ne sont pas disponibles.

Notes d'utilisation

  • Vous ne pouvez pas créer de directives de plan sur les plans prédéfinis par défaut fournis avec la base de données Autonomous AI, à savoir DWCS_PLAN et OLTP_PLAN.
  • Tous les paramètres sauf les partages sont définis par défaut sur NULL.
  • Une erreur est générée si parallel_queue_timeout est indiqué, mais que parallel_queue_timeout_action n'est pas indiqué.

Exemples

BEGIN

  -- High-priority OLTP gets 8 CPU/IO shares and no parallelism
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                  => 'OLTP_LH_PLAN',
    consumer_group        => 'OLTP_HIGH',
    comment               => 'OLTP high priority',
    shares                => 8,
    parallel_degree_limit => 1
  );

  -- Lower-priority OLTP gets 4 CPU/IO shares and no parallelism
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                  => 'OLTP_LH_PLAN',
    consumer_group        => 'OLTP_LOW',
    comment               => 'OLTP low priority',
    shares                => 2,
    parallel_degree_limit => 1
  );

  -- Lakehouse / batch gets 4 shares and the degree of parallelism is capped to 4.
  -- If a parallel SQL statement waits in the queue for more than 60 seconds, it will be canceled.
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                          => 'OLTP_LH_PLAN',
    consumer_group                => 'LH_BATCH',
    comment                       => 'Lakehouse/reporting workloads',
    shares                        => 4,
    parallel_degree_limit         => 4,     -- cap DOP within this group (adjust as needed)
    parallel_queue_timeout        => 60,
    parallel_queue_timeout_action => 'CANCEL'
  );

  -- Catch-all for anything unmapped; sessions that are not mapped to a consumer group get 1 CPU/IO share and no parallelism
  CS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    plan                  => 'OLTP_LH_PLAN',
    consumer_group        => 'OTHER_GROUPS',
    comment               => 'Catch-all for unmapped sessions',
    shares                => 1,
    parallel_degree_limit => 1
  );
END;
/

Procédure DELETE_CONSUMER_GROUP

Cette procédure supprime les groupes de consommateurs de ressources.

Syntaxe

CS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
   consumer_group IN VARCHAR2);

Paramètres

Paramètre Description

consumer_group

Nom du groupe du consommateur à supprimer.

Remarque

Vous ne pouvez pas supprimer les groupes de consommateurs de ressources prédéfinis fournis avec Autonomous Database, à savoir TPURGENT, TP, HIGH, MEDIUM et LOW.

Exemples

CS_RESOURCE_MANAGER.DELETE_CONSUMER_GROUP (
   consumer_group ==> <consumer_group_name>);

Procédure DELETE_PLAN

Cette procédure supprime le plan spécifié ainsi que toutes les directives de plan auxquelles il fait référence.

Syntaxe

CS_RESOURCE_MANAGER.DELETE_PLAN ( 
  plan    IN VARCHAR2,
  cascade IN BOOLEAN DEFAULT FALSE); 

Paramètres

Paramètre Description

plan

Nom du plan de ressources à supprimer.

Remarque

Vous ne pouvez pas supprimer les plans prédéfinis qui sont fournis avec Autonomous Database, à savoir DWCS_PLAN et OLTP_PLAN.
cascade

Indicateur signalant si le plan spécifié et tous ses descendants doivent être supprimés (directives de plan, options, groupes de consommateurs de ressources). Les objets et directives obligatoires ne sont pas supprimés. La valeur par défaut est false.

Avec cascade ON, si DELETE_PLAN rencontre une erreur, l'opération est annulée et rien n'est supprimé.

Exemple

CS_RESOURCE_MANAGER.DELETE_PLAN ( 
  plan    ==> <plan_name>);

Procédure DELETE_PLAN_DIRECTIVE

Cette procédure supprime les directives de plan d'allocation de ressources.

Syntaxe

CS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE (
   plan              IN VARCHAR2, 
   consumer_group    IN VARCHAR2);

Paramètres

Paramètre Description

plan

Nom du plan de ressources.

Remarque

Vous ne pouvez pas supprimer de directives de plan sur les plans prédéfinis par défaut fournis avec Autonomous Database, à savoir DWCS_PLAN et OLTP_PLAN.
consumer_group Nom du groupe de consommateurs de ressources.

Exemple

CS_RESOURCE_MANAGER.DELETE_PLAN_DIRECTIVE (
   plan            => <plan_name>, 
   consumer_group  => <consumer_group_name>);

Fonction LIST_CURRENT_RULES

Cette fonction renvoie les paramètres actuels du plan par défaut.

Remarque

LIST_CURRENT_RULES ne peut pas être utilisé pour visualiser les paramètres des plans personnalisés. Si vous utilisez des plans personnalisés, vous pouvez utiliser les vues DBRM pour visualiser vos paramètres.

Syntaxe

CS_RESOURCE_MANAGER.LIST_CURRENT_RULES
   RETURN TABLE;

Exemple

SELECT * FROM CS_RESOURCE_MANAGER.LIST_CURRENT_RULES();

CONSUMER_GROUP ELAPSED_TIME_LIMIT IO_MEGABYTES_LIMIT SHARES CONCURRENCY_LIMIT DEGREE_OF_PARALLELISM 
-------------- ------------------ ------------------ ------ ----------------- --------------------- 
HIGH                                                      4                 3                     3 
MEDIUM                                                    2                 2                     9 
LOW                                                       1               900                     1 

Fonction LIST_DEFAULT_RULES

Cette fonction renvoie les valeurs par défaut de tous les groupes de consommateurs de ressources.

Syntaxe

CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES
  RETURN TABLE;

Remarque sur l'utilisation

  • Par défaut, la valeur de stratégie de degré parallèle est MANUAL pour le groupe de consommateurs de ressources TPURGENT. La fonction CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES n'affiche aucune valeur pour la valeur par défaut de DEGREE_OF_PARALLELISM pour le groupe de consommateurs de ressources TPURGENT.

Exemple

SELECT * FROM CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES();
CONSUMER_GROUP ELAPSED_TIME_LIMIT IO_MEGABYTES_LIMIT SHARES CONCURRENCY_LIMIT DEGREE_OF_PARALLELISM 
-------------- ------------------ ------------------ ------ ----------------- --------------------- 
HIGH                            0                  0      4                 3                     1 
MEDIUM                          0                  0      2                 1                     1 
LOW                             0                  0      1               300                     1 
TP                              0                  0      8               300                     1 
TPURGENT                        0                  0     12               300                       

Procédure REVERT_TO_DEFAULT_VALUES

Cette procédure rétablit les valeurs par défaut des propriétés du plan du gestionnaire de ressources.

Remarque

Vous ne pouvez pas utiliser cette procédure avec des plans personnalisés et elle peut uniquement être utilisée pour rétablir les modifications apportées aux plans de gestionnaire de ressources par défaut fournis avec Autonomous Database, à savoir DWCS_PLAN et OLTP_PLAN.

Syntaxe

CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
   consumer_group         IN VARCHAR2,
   shares                 IN BOOLEAN   DEFAULT FALSE,
   concurrency_limit      IN BOOLEAN   DEFAULT FALSE);

Paramètres

Paramètre Description

consumer_group

Indique le groupe de consommateurs de ressources à rétablir.

Les valeurs valides sont : HIGH, MEDIUM, LOW, TP ou TPURGENT.

shares

Lorsque la valeur est TRUE, rétablissez la valeur par défaut pour les partages du service.

concurrency_limit

Lorsque la valeur est TRUE, rétablissez la valeur par défaut de concurrency_limit pour le service. Lorsque vous rétablissez la valeur concurrency_limit, les valeurs concurrency_limit et degree_of_parallelism sont définies sur leurs valeurs par défaut.

Exemples

BEGIN
   CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
      consumer_group => 'MEDIUM', 
      concurrency_limit => TRUE);
END;
/

BEGIN
   CS_RESOURCE_MANAGER.REVERT_TO_DEFAULT_VALUES(
      consumer_group => 'HIGH', 
      shares => TRUE);
END;
/

Procédure SET_CONSUMER_GROUP_MAPPING

Cette procédure ajoute, supprime ou modifie les entrées qui mettent en correspondance des sessions avec des groupes de consommateurs de ressources, en fonction des attributs de connexion et d'exécution de la session.

Syntaxe

CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
   attribute        IN VARCHAR2, 
   value            IN VARCHAR2, 
   consumer_group   IN VARCHAR2 DEFAULT NULL);

Paramètres

Paramètre Description

attribute

Attribut de mapping à ajouter ou modifier. Il peut s'agir de l'une des constantes répertoriées.

value

Valeur d'attribut à mettre en correspondance. Cela inclut à la fois le mapping absolu et les expressions régulières.

consumer_group

Nom du groupe de consommateurs de ressources mis en correspondance, ou NULL pour supprimer un mapping.

Notes d'utilisation

  • S'il n'existe aucun mapping pour l'attribut et la valeur indiqués, un mapping avec le groupe de consommateurs de ressources indiqué est créé. Si un mappage existe déjà pour l'attribut et la valeur indiqués, le groupe de consommateurs de ressources mappé est mis à jour sur celui indiqué. Si l'argument consumer_group est NULL, toute correspondance de l'attribut et de la valeur indiqués sera supprimée.
  • Le sous-programme prend en charge les expressions régulières simples pour le paramètre value. Il implémente la même sémantique que l'opérateur SQL 'LIKE'. Plus précisément, il utilise '%' comme caractère générique à plusieurs caractères et '_' comme caractère générique à un seul caractère. Le caractère '\' peut être utilisé pour quitter les caractères génériques. Notez que les caractères génériques ne peuvent être utilisés que si l'attribut est l'un des suivants :
    • CLIENT_OS_USER
    • CLIENT_PROGRAM
    • CLIENT_MACHINE
    • MODULE_NAME
    • MODULE_NAME_ACTION
    • SERVICE_MODULE
    • SERVICE_MODULE_ACTION
  • Les comparaisons de mise en correspondance de groupes de destinataires pour CS_RESOURCE_MANAGER.CLIENT_PROGRAM sont effectuées en supprimant le signe @ et les caractères suivants de V$SESSION.PROGRAM avant de le comparer à la valeur CLIENT_PROGRAM fournie.
  • Vous pouvez utiliser des attributs tels que le nom utilisateur ou le nom de l'application pour déterminer comment les sessions sont placées dans un groupe de consommateurs de ressources, comme indiqué dans l'exemple ci-dessus.

Exemples

BEGIN
  -- Map schema APP_USER to OLTP_HIGH
  CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
    attribute  => 'ORACLE_USER',
    value      => 'APP_USER',
    consumer_group => 'OLTP_HIGH');

  CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING(
    attribute  => 'ORACLE_USER',
    value      => 'LH_USER',
    consumer_group => 'LH_BATCH');
END;
/

Procédure SET_CONSUMER_GROUP_MAPPING_PRI

Plusieurs attributs d'une session peuvent être utilisés pour mettre en correspondance la session avec un groupe de consommateurs de ressources. Cette procédure hiérarchise les mappages d'attributs.

Syntaxe

CS_RESOURCE_MANAGER.SET_CONSUMER_GROUP_MAPPING_PRI(
   explicit               IN NUMBER, 
   oracle_user            IN NUMBER, 
   service_name           IN NUMBER,  
   client_program         IN NUMBER, 
   module_name            IN NUMBER, 
   module_name_action     IN NUMBER,
   client_id              IN NUMBER DEFAULT 11);

Paramètres

Paramètre Description

explicit

Priorité du mapping explicite.

oracle_user

Priorité du mappage des noms d'utilisateur Oracle.

service_name

Priorité du mappage du nom du service client.

client_program

Priorité du mappage du programme client.

module_name

Priorité du mappage du nom du module d'application.

module_name_action

Priorité du mappage du nom et de l'action du module d'application.

client_id

Identificateur de client.

Notes d'utilisation

  • Cette procédure nécessite que vous incluiez le pseudo-attribut explicite en tant qu'argument. Il doit être réglé sur 1. Elle indique que les commutateurs de groupe de consommateurs de ressources explicites ont la priorité la plus élevée. Le changement de groupe de consommateurs de ressources à l'aide de DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUP prévaut sur les mappings de groupe de consommateurs de ressources.
  • Chaque valeur de priorité doit être un entier unique compris entre 1 et 11. Ensemble, ils établissent un ordre où 1 est la priorité la plus élevée et 11 la plus basse.
  • Vous pouvez utiliser des attributs tels que le nom utilisateur ou le nom de l'application pour déterminer la façon dont les sessions sont placées dans un groupe de consommateurs de ressources. Pour obtenir un exemple, reportez-vous à l'Step 4 : Create Consumer Group Mappings.

Procédure SUBMIT_PENDING_AREA

Cette procédure soumet les modifications en attente pour le gestionnaire de ressources. Il efface la zone d'attente après avoir validé et validé les modifications (si elles sont valides).

Remarque

Un appel vers SUBMIT_PENDING_AREA peut échouer même si VALIDATE_PENDING_AREA réussit. Cela peut se produire si un plan en cours de suppression est chargé par une instance après l'appel vers VALIDATE_PENDING_AREA, mais avant l'appel vers SUBMIT_PENDING_AREA.

Syntaxe

CS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;

Procédure UPDATE_PLAN_DIRECTIVE

Utilisez cette procédure pour mettre à jour les plans prédéfinis par défaut fournis avec la base de données Autonomous AI, c'est-à-dire DWCS_PLAN et OLTP_PLAN pour un groupe de destinataires spécifié.

Remarque

Vous ne pouvez pas utiliser cette procédure pour mettre à jour les paramètres des plans personnalisés. Pour mettre à jour des attributs de plan personnalisés définis par l'utilisateur, utilisez la procédure UPDATE_PLAN_DIRECTIVE_ADV.

Syntaxe

CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
   consumer_group         IN VARCHAR2,
   io_megabytes_limit     IN NUMBER   DEFAULT NULL,
   elapsed_time_limit     IN NUMBER   DEFAULT NULL,
   shares                 IN NUMBER   DEFAULT NULL,
   concurrency_limit      IN NUMBER   DEFAULT NULL);

Paramètres

Paramètre Description

consumer_group

Indique le groupe de consommateurs de ressources à mettre à jour.

Les valeurs valides sont : HIGH, MEDIUM, LOW, TP ou TPURGENT.

io_megabytes_limit

Indique le nombre maximal de mégaoctets d'E/S qu'une opération SQL peut émettre.

Indiquez une valeur NULL pour effacer la limite.

elapsed_time_limit

Indique la durée maximale en secondes pendant laquelle une opération SQL peut être exécutée.

Indiquez une valeur NULL pour effacer la limite.

shares

Spécifie la valeur des partages. Par rapport aux autres groupes de consommateurs de ressources, un nombre plus élevé de partages augmente la priorité d'E/S et de CPU du groupe.

concurrency_limit

Indique le nombre maximal d'instructions SQL simultanées pouvant être exécutées.

Ce paramètre est valide uniquement avec le groupe de consommateurs de ressources MEDIUM.

Notes d'utilisation

  • Lorsqu'une instruction SQL dans le service indiqué s'exécute plus que la limite d'exécution indiquée (elapsed_time_limit) ou effectue plus d'E/S que la quantité indiquée (io_megabytes_limit), l'instruction SQL prend fin.

  • Lorsque le paramètre concurrency_limit est indiqué, la seule valeur valide pour consumer_group est MEDIUM.

Exemples

BEGIN
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'HIGH', 
      shares => 8);
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'MEDIUM', 
      shares => 2);
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'LOW', 
      shares => 1);
END;
/

BEGIN
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
      consumer_group => 'HIGH', 
      io_megabytes_limit => null, 
      elapsed_time_limit => null);
END;
/

BEGIN
   CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE(
     consumer_group => 'MEDIUM', 
     concurrency_limit => 2);
END;
/

Procédure UPDATE_PLAN_DIRECTIVE_ADV

Cette procédure permet de mettre à jour le plan de gestion des ressources défini par l'utilisateur pour un groupe de consommateurs de ressources spécifié.

Remarque

Vous ne pouvez pas utiliser cette procédure pour mettre à jour les plans prédéfinis par défaut fournis avec Autonomous Database, c'est-à-dire DWCS_PLAN et OLTP_PLAN. Pour mettre à jour un plan d'allocation de ressources par défaut prédéfini, utilisez la procédure UPDATE_PLAN_DIRECTIVE.

Syntaxe

CS_RESOURCE_MANAGER.UPDATE_PLAN_DIRECTIVE_ADV (
   plan                          IN VARCHAR2 DEFAULT NULL, 
   consumer_group                IN VARCHAR2, 
   comment                       IN VARCHAR2 DEFAULT NULL, 
   shares                        IN NUMBER   DEFAULT NULL,
   utilization_limit             IN NUMBER   DEFAULT NULL,
   switch_action                 IN VARCHAR2 DEFAULT NULL,
   cpu_time_limit                IN NUMBER   DEFAULT NULL,
   io_megabytes_limit            IN NUMBER   DEFAULT NULL,
   io_reqs_limit                 IN NUMBER   DEFAULT NULL,
   io_logical_limit              IN NUMBER   DEFAULT NULL,
   elapsed_time_limit            IN NUMBER   DEFAULT NULL,
   max_idle_time                 IN NUMBER   DEFAULT NULL,
   max_idle_blocker_time         IN NUMBER   DEFAULT NULL,    
   active_session_limit          IN NUMBER   DEFAULT NULL,
   active_session_timeout        IN NUMBER   DEFAULT NULL,
   parallel_degree_limit         IN NUMBER   DEFAULT NULL,
   concurrency_limit             IN NUMBER   DEFAULT NULL,
   session_pga_limit             IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout        IN NUMBER   DEFAULT NULL,
   parallel_queue_timeout_action IN NUMBER   DEFAULT NULL);

Paramètres

Paramètre Description

plan

Nom du plan de ressources.

consumer_group

Nom du groupe de consommateurs de ressources.

comment

Commentaire sur la directive du plan.

shares

Part de l'allocation des ressources pour le groupe de consommateurs. Les partages déterminent la quantité de ressources d'UC et d'E/S qu'un groupe de consommateurs obtient par rapport aux autres groupes de consommateurs. Par exemple, un groupe de consommateurs de ressources avec une part de 2 obtiendra deux fois plus de ressources d'UC et d'E/S qu'un groupe de consommateurs de ressources avec une part de 1.

Si vous ne spécifiez pas de partages pour un groupe de consommateurs de ressources dans votre plan, le partage de ce groupe de consommateurs de ressources sera défini sur 1.

utilization_limit

Limites de ressources qui déterminent le nombre maximal de ressources d'E/S et de CPU qu'un groupe de consommateurs de ressources peut obtenir.

switch_action

Mesures à prendre pour atteindre l'une des limites spécifiées dans les directives. Les valeurs valides sont cancel_sql, kill_session ou un nom de groupe de consommateurs de ressources vers lequel basculer.

cpu_time_limit

Temps sur l'UC (en secondes) qu'une session peut exécuter avant qu'une action ne soit effectuée. La valeur par défaut est NULL, ce qui signifie illimité.

io_megabytes_limit

Quantité d'E/S (en Mo) qu'une session peut émettre avant qu'une action ne soit entreprise. La valeur par défaut est NULL, ce qui signifie illimité.

io_reqs_limit

Nombre de demandes d'E/S qu'une session peut émettre avant qu'une action ne soit effectuée. La valeur par défaut est NULL, ce qui signifie illimité.

io_logical_limit

Nombre d'E/S logiques qui déclencheront l'action indiquée par switch_action.

elapsed_time_limit

Temps écoulé (en secondes) qui déclenche l'action indiquée par switch_action.

max_idle_time

Nombre de secondes pendant lesquelles une session peut être inactive avant la fin de la session. La valeur par défaut est NULL, ce qui signifie illimité.

max_idle_blocker_time

Durée maximale (en secondes) pendant laquelle une session peut être inactive avant la fin de la session, si la session contient un verrou ou une ressource nécessaire à d'autres sessions.

active_session_limit

Nombre maximal de sessions pouvant simultanément avoir un appel actif.

active_session_timeout

Délai spécifié (en secondes) après lequel un appel dans la file d'attente de session inactive (en attente d'exécution) expire. La valeur par défaut est NULL, ce qui signifie illimité.

parallel_degree_limit

Indique la limite applicable au degré de parallélisme d'une opération. La valeur par défaut est NULL, ce qui signifie illimité. Utilisez la valeur 1 pour qu'une opération soit en série.

concurrency_limit

Définit le niveau de simultanéité et donc le degré de parallélisme (DOP). Il peut faire le DOP 1.

session_pga_limit

Quantité maximale de mémoire PGA non réglable (en Mo) qu'une session de ce groupe de consommateurs de ressources peut allouer avant d'être arrêtée. NULL (valeur par défaut) n'indique aucune limite.

Les opérations SQL qui allouent la mémoire PGA réglable (opérations pouvant choisir d'utiliser l'espace temporaire) ne sont pas contrôlées par cette limite.

parallel_queue_timeout

Indique la durée (en secondes) pendant laquelle une instruction parallèle peut rester dans la file d'attente des instructions parallèles de son groupe de consommateurs de ressources avant qu'elle ne soit supprimée et interrompue par une erreur (ORA-07454).

parallel_queue_timeout_action

Indique l'action à effectuer lorsqu'une instruction parallèle est enlevée de la file d'attente en raison de parallel_queue_timeout.

Les valeurs disponibles sont les suivantes :
  • CANCEL : l'instruction parallèle se termine avec l'erreur ORA-7454
  • RUN : l'instruction SQL s'exécute immédiatement et peut être rétrogradée si des serveurs parallèles ne sont pas disponibles.

Notes d'utilisation

  • Tous les paramètres sauf les partages sont définis par défaut sur NULL.
  • Une erreur est générée si parallel_queue_timeout_action est indiqué, mais que parallel_queue_timeout n'est pas indiqué.

Procédure VALIDATE_PENDING_AREA

Cette procédure valide les modifications en attente pour le gestionnaire de ressources.

Syntaxe


CS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;