Ensemble CS_RESOURCE_MANAGER

L'ensemble CS_RESOURCE_MANAGER fournit une interface permettant de lister et de mettre à jour les paramètres de groupe de consommateurs et de rétablir les valeurs par défaut des paramètres.

CLEAR_PENDING_AREA Procédure

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

Syntaxe


CS_RESOURCE_MANAGER.CLEAR_PENDING_AREA;

CREATE_CONSUMER_GROUP Procédure

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

comment

Commentaires utilisateur

Notes d'utilisation

Vous pouvez déterminer comment les sessions sont placées dans des groupes de consommateurs de ressources :

  • Affectation de chaîne de connexion : Spécifiez CONSUMER_GROUP dans la chaîne de connexion à la base de données, comme indiqué ci-dessous. Cette approche a priorité sur le mappage et remplacera tous les mappages 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 mappage : 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 d'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;
/

CREATE_PENDING_AREA Procédure

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

La zone en attente peut être considérée comme une zone à gratter 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 seulement lorsque la soumission est terminée, ces modifications deviennent actives.

Syntaxe

CS_RESOURCE_MANAGER.CREATE_PENDING_AREA;

Notes d'utilisation

Vous pouvez, à tout moment pendant que la zone en attente est active, afficher le schéma de plan courant avec vos modifications en effectuant une sélection dans les vues utilisateur appropriées. Pour plus de détails, voir Consultation de la configuration et du statut du gestionnaire de ressources de base de données.

À tout moment, vous pouvez effacer la zone en attente si vous souhaitez arrêter les modifications en cours. Vous pouvez également appeler la procédure VALIDATE pour vérifier si 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 vérifications sont également effectuées implicitement lorsque la zone en attente est soumise.

Note

Oracle autorise les groupes de consommateurs de ressources "orphelins" (en d'autres termes, les groupes de consommateurs de ressources qui n'ont aucune directive de plan qui les référence). Un administrateur peut 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 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 régimes et groupes de consommateurs visés par les directives du régime doivent exister.
  • Tous les régimes doivent avoir des directives qui font référence à des régimes ou à des groupes de consommateurs de ressources.
  • La somme de tous les pourcentages d'un niveau donné ne doit pas dépasser 100 pour la méthode d'affectation des ressources de priorité.
  • Aucun plan ne peut être supprimé qui est actuellement utilisé en tant que plan supérieur par une instance active.
  • Il ne peut pas y avoir plus de 28 directives de plan provenant d'un plan donné (c'est-à-dire qu'aucun plan ne peut avoir plus de 28 enfants).
  • Il ne peut pas y avoir plus de 28 groupes de consommateurs de ressources dans un 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 avoir le même nom que n'importe quel groupe de consommateurs de ressources.
  • Il doit y avoir une directive de plan pour OTHER_GROUPS quelque part dans un schéma de plan actif. Ainsi, les ressources affectées à une session non couverte par le plan actuellement actif sont définies par la directive OTHER_GROUPS.

Si l'une des règles précédentes est rompue lors de la vérification par les procédures VALIDATE ou SUBMIT, un message d'erreur informatif est retourné. 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.

CREATE_PLAN Procédure

Cette procédure crée des entrées qui définissent les plans 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

Commentaires utilisateur

Exemple

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

CREATE_PLAN_DIRECTIVE Procédure

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

comment

Commentaire pour la directive du plan

shares

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

Si vous ne spécifiez pas d'actions pour un groupe de consommateurs dans votre plan, la part de ce groupe de consommateurs sera réglée à 1.

utilization_limit

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

switch_action

Mesures à prendre en vue d'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 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 prise. 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 prise. La valeur par défaut est NULL, ce qui signifie illimité.

io_logical_limit

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

elapsed_time_limit

Temps écoulé (en secondes) pour déclencher l'action spécifiée par switch_action.

max_idle_time

Nombre de secondes pendant lesquelles une session peut être inactive avant son arrêt. 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 son arrêt, si la session est verrouillée ou si une ressource est requise par d'autres sessions.

active_session_limit

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

active_session_timeout

Temps 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

Spécifie une limite sur le degré de parallélisme pour toute opération. La valeur par défaut est NULL, ce qui signifie illimité. Utilisez la valeur 1 pour une opération en série.

concurrency_limit

Définit le niveau d'accès simultané, 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 (par défaut) indique qu'il n'y a pas de limite.

Les opérations SQL qui allouent une mémoire PGA ajustable (opérations qui peuvent choisir d'utiliser de l'espace temporaire) ne sont pas contrôlées par cette limite.

parallel_queue_timeout

Indique le temps (en secondes) pendant lequel une instruction parallèle peut rester dans la file d'attente d'instructions parallèles de son groupe de consommateurs de ressources avant d'être supprimée et terminée avec une erreur (ORA-07454).

parallel_queue_timeout_action

Spécifie l'action à effectuer lorsqu'un énoncé parallèle est supprimé de la file d'attente en raison de parallel_queue_timeout.

Les valeurs sont :
  • CANCEL : L'énoncé parallèle est interrompu avec l'erreur ORA-7454
  • RUN : L'énoncé SQL s'exécute immédiatement et peut être déclassé si les 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 Autonomous AI Database, c'est-à-dire DWCS_PLAN et OLTP_PLAN.
  • Tous les paramètres, à l'exception des partages, sont réglés par défaut à NULL.
  • Une erreur est générée si parallel_queue_timeout est spécifié, mais parallel_queue_timeout_action n'est pas spécifié.

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;
/

DELETE_CONSUMER_GROUP Procédure

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 de consommateurs à supprimer.

Note

Vous ne pouvez pas supprimer les groupes de consommateurs prédéfinis fournis avec Autonomous AI Database, c'est-à-dire TPURGENT, TP, HIGH, MEDIUM et LOW.

Exemples

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

DELETE_PLAN Procédure

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.

Note

Vous ne pouvez pas supprimer les plans prédéfinis fournis avec Autonomous AI Database, c'est-à-dire DWCS_PLAN et OLTP_PLAN.
cascade

Indicateur précisant s'il faut supprimer le régime spécifié et tous ses descendants (directives de régime, spécialisations, groupes de consommateurs de ressources). Les objets et directives obligatoires ne sont pas supprimés. Valeur par défaut : false.

Avec l'option En 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>);

DELETE_PLAN_DIRECTIVE Procédure

Cette procédure supprime les directives du 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

Note

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

Exemple

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

Fonction LIST_CURRENT_RULES

Cette fonction retourne les paramètres courants pour le plan par défaut.

Note

LIST_CURRENT_RULES ne peut pas être utilisé pour voir les paramètres des plans personnalisés. Si vous utilisez des plans personnalisés, vous pouvez utiliser les vues DBRM pour voir 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 retourne les valeurs par défaut pour tous les groupes de consommateurs de ressources.

Syntaxe

CS_RESOURCE_MANAGER.LIST_DEFAULT_RULES
  RETURN TABLE;

Note d'utilisation

  • Par défaut, la valeur de la politique de degré parallèle est MANUAL pour le groupe de consommateurs 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 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                       

REVERT_TO_DEFAULT_VALUES Procédure

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

Note

Vous ne pouvez pas utiliser cette procédure avec des plans personnalisés et elle ne peut être utilisée que pour rétablir les modifications apportées aux plans de gestionnaire de ressources par défaut fournis avec Autonomous AI Database, c'est-à-dire 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 à 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 des partages pour le service.

concurrency_limit

Lorsque la valeur est TRUE, rétablissez la valeur par défaut dans concurrency_limit pour le service. Lorsque vous rétablissez la valeur concurrency_limit, les valeurs concurrency_limit et degree_of_parallelism sont réglées à 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;
/

SET_CONSUMER_GROUP_MAPPING Procédure

Cette procédure ajoute, supprime ou modifie des entrées qui mappent des sessions à 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 mappage à ajouter ou à modifier. Il peut s'agir de l'une des constantes listées.

value

Valeur d'attribut à mettre en correspondance. Cela inclut à la fois le mapping absolu et les expressions rationnelles.

consumer_group

Nom du groupe de consommateurs mappé, ou NULL pour supprimer un mappage.

Notes d'utilisation

  • Si aucun mappage n'existe pour l'attribut et la valeur indiqués, un mappage au groupe de consommateurs de ressources indiqué sera créé. Si un mappage existe déjà pour l'attribut et la valeur indiqués, le groupe de consommateurs de ressources mappé sera mis à jour à celui indiqué. Si l'argument consumer_group est NULL, tout mappage de l'attribut et de la valeur indiqués sera supprimé.
  • Le sous-programme prend en charge les expressions rationnelles simples pour le paramètre de valeur. 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 échapper aux 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 mappage de groupe de consommateurs pour CS_RESOURCE_MANAGER.CLIENT_PROGRAM sont effectuées en supprimant le signe @ et les caractères suivants de V$SESSION.PROGRAM avant de les comparer à la valeur CLIENT_PROGRAM fournie.
  • Vous pouvez utiliser des attributs tels que le nom utilisateur ou le nom d'application pour déterminer comment les sessions sont placées dans un groupe de consommateurs de ressources, comme illustré 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;
/

SET_CONSUMER_GROUP_MAPPING_PRI Procédure

Plusieurs attributs d'une session peuvent être utilisés pour mapper la session à 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 mappage explicite.

oracle_user

Priorité du mappage de nom d'utilisateur Oracle.

service_name

Priorité du mappage de nom de service client.

client_program

Priorité du mappage de programme client.

module_name

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

module_name_action

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

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é à 1. Il indique que les commutateurs de groupe de consommateurs de ressources explicites ont la priorité la plus élevée. Le changement de groupe de consommateurs à l'aide de DBMS_SESSION.SWITCH_CURRENT_CONSUMER_GROUP aura préséance sur les mappages de groupe de consommateurs.
  • 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 faible.
  • Vous pouvez utiliser des attributs tels que le nom utilisateur ou le nom d'application pour déterminer comment les sessions sont placées dans un groupe de consommateurs de ressources. Voir Étape 4 : Créer des mappages de groupes de consommateurs pour un exemple.

SUBMIT_PENDING_AREA Procédure

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

Note

Un appel à 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 à VALIDATE_PENDING_AREA, mais avant l'appel à SUBMIT_PENDING_AREA.

Syntaxe

CS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA;

UPDATE_PLAN_DIRECTIVE Procédure

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

Note

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 à mettre à jour.

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

io_megabytes_limit

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

Spécifiez une valeur NULL pour effacer la limite.

elapsed_time_limit

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

Spécifiez une valeur NULL pour effacer la limite.

shares

Indique la valeur des actions. Un nombre plus élevé de partages, par rapport aux autres groupes de consommateurs, augmente la priorité CPU et E/S du groupe de consommateurs.

concurrency_limit

Indique le nombre maximal d'énoncés SQL concurrents pouvant être exécutés.

Ce paramètre n'est valide qu'avec le groupe de consommateurs MEDIUM.

Notes d'utilisation

  • Lorsqu'un énoncé SQL dans le service spécifié s'exécute plus que la limite d'exécution spécifiée (elapsed_time_limit) ou effectue plus d'E/S que le montant spécifié (io_megabytes_limit), l'énoncé SQL est arrêté.

  • Lorsque le paramètre concurrency_limit est spécifié, 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;
/

UPDATE_PLAN_DIRECTIVE_ADV Procédure

Utilisez cette procédure pour mettre à jour le plan de gestionnaire de ressources défini par l'utilisateur pour un groupe de consommateurs de ressources spécifié.

Note

Vous ne pouvez pas utiliser cette procédure pour mettre à jour les plans prédéfinis par défaut fournis avec Autonomous AI Database, c'est-à-dire DWCS_PLAN et OLTP_PLAN. Pour mettre à jour un plan 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.

comment

Commentaire pour la directive du plan.

shares

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

Si vous ne spécifiez pas d'actions pour un groupe de consommateurs dans votre plan, la part de ce groupe de consommateurs sera réglée à 1.

utilization_limit

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

switch_action

Mesures à prendre en vue d'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 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 prise. 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 prise. La valeur par défaut est NULL, ce qui signifie illimité.

io_logical_limit

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

elapsed_time_limit

Temps écoulé (en secondes) pour déclencher l'action spécifiée par switch_action.

max_idle_time

Nombre de secondes pendant lesquelles une session peut être inactive avant son arrêt. 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 son arrêt, si la session est verrouillée ou si une ressource est requise par d'autres sessions.

active_session_limit

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

active_session_timeout

Temps 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

Spécifie une limite sur le degré de parallélisme pour toute opération. La valeur par défaut est NULL, ce qui signifie illimité. Utilisez la valeur 1 pour une opération en série.

concurrency_limit

Définit le niveau d'accès simultané, 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 (par défaut) indique qu'il n'y a pas de limite.

Les opérations SQL qui allouent une mémoire PGA ajustable (opérations qui peuvent choisir d'utiliser de l'espace temporaire) ne sont pas contrôlées par cette limite.

parallel_queue_timeout

Indique le temps (en secondes) pendant lequel une instruction parallèle peut rester dans la file d'attente d'instructions parallèles de son groupe de consommateurs de ressources avant d'être supprimée et terminée avec une erreur (ORA-07454).

parallel_queue_timeout_action

Spécifie l'action à effectuer lorsqu'un énoncé parallèle est supprimé de la file d'attente en raison de parallel_queue_timeout.

Les valeurs sont :
  • CANCEL : L'énoncé parallèle est interrompu avec l'erreur ORA-7454
  • RUN : L'énoncé SQL s'exécute immédiatement et peut être déclassé si les serveurs parallèles ne sont pas disponibles.

Notes d'utilisation

  • Tous les paramètres, à l'exception des partages, sont réglés par défaut à NULL.
  • Une erreur est générée si parallel_queue_timeout_action est spécifié, mais parallel_queue_timeout n'est pas spécifié.

VALIDATE_PENDING_AREA Procédure

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

Syntaxe


CS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA;