Example create profile resource parameters

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Exemple DDL Oracle
Contexte Profil Oracle — volet limitation de ressources (CPU, sessions, mémoire)
Voir aussi Example create profile password parameters · Example database resource manager setup

Second volet de la paire consacrée aux profils Oracle (CREATE PROFILE) : ce script limite les ressources consommées par les sessions d'un profil, complémentaire de Example create profile password parameters qui traite les règles de mots de passe. Un même profil peut combiner les deux familles de paramètres.

Oracle applique ces limites de trois façons différentes selon le paramètre dépassé :

  • CONNECT_TIME / IDLE_TIME : la transaction en cours est
 annulée (rollback) et la session est terminée ; la prochaine requête de la session renvoie
 une erreur.
  • Autres limites de session (ex. LOGICAL_READS_PER_SESSION) : l'opération
 en cours est annulée, l'instruction est annulée, une erreur est renvoyée immédiatement — la
 session reste ouverte, l'utilisateur doit valider ou annuler sa transaction.
  • Limites par appel (ex. CPU_PER_CALL) : seul l'appel en cours est annulé,
 la transaction reste intacte.

Activation

Les limites de ressources définies dans un profil ne sont appliquées que si le paramètre d'instance RESOURCE_LIMIT vaut TRUE :

ALTER SYSTEM SET resource_limit = TRUE;

-- Vérifier la valeur courante
SELECT value FROM v$parameter WHERE name = 'resource_limit';

Ce changement ne s'applique qu'aux nouvelles connexions, pas aux sessions déjà ouvertes.

Paramètres du profil

Paramètre Rôle Erreur si dépassement
SESSIONS_PER_USER Nombre de sessions concurrentes autorisées ORA-02391
CPU_PER_SESSION Temps CPU cumulé par session (centièmes de seconde) ORA-02392
CPU_PER_CALL Temps CPU par appel (parse/exécution/fetch) ORA-02393
CONNECT_TIME Durée totale de la session (minutes) ORA-02399
IDLE_TIME Durée d'inactivité continue autorisée (minutes) ORA-02396
LOGICAL_READS_PER_SESSION Blocs logiques lus (mémoire + disque) par session ORA-02394
LOGICAL_READS_PER_CALL Blocs logiques lus par appel ORA-02395
PRIVATE_SGA Mémoire privée allouée en SGA (architecture shared server uniquement)
COMPOSITE_LIMIT Coût total pondéré (CPU + temps + I/O logiques + SGA privée), en unités de service

UNLIMITED signifie qu'aucune limite n'est imposée pour ce paramètre ; DEFAULT renvoie à la valeur définie dans le profil DEFAULT. Tout utilisateur sans profil explicite — ou dont le profil omet un paramètre — hérite de la limite définie dans le profil DEFAULT (illimité par défaut, modifiable via ALTER PROFILE).

Script

CONNECT / AS SYSDBA

CREATE PROFILE developer_profile LIMIT
  SESSIONS_PER_USER          UNLIMITED
  CPU_PER_SESSION            12000
  CPU_PER_CALL               3000
  CONNECT_TIME               45
  IDLE_TIME                  5
  LOGICAL_READS_PER_SESSION  DEFAULT
  LOGICAL_READS_PER_CALL     1000
  PRIVATE_SGA                15K
  COMPOSITE_LIMIT            5000000
/

Avec ce profil, un utilisateur peut ouvrir un nombre illimité de sessions, mais chaque session est limitée à 2 minutes de CPU cumulée (120 s), 30 s de CPU par appel, 45 minutes de durée totale et 5 minutes d'inactivité ; un appel ne peut lire plus de 1000 blocs, une session ne peut pas allouer plus de 15 Ko en SGA privée, et le coût total pondéré ne peut pas dépasser 5 millions d'unités de service.

Voir aussi