IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Limiter l’utilisation mémoire d’une instance sur un serveur CentOS


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut Limiter l’utilisation mémoire d’une instance sur un serveur CentOS
    Bonjour,
    Je sollicite votre aide, car j’ai un serveur linux/centos sur lequel tourne 2 instances. Pour limiter la mémoire de chacune des instances, j’ai voulu modifier le paramètre “pga_aggregate_limit“ mais j’ai constaté qu’il était déjà configuré avec une valeur de 2 GB. Malheureusement, cette instance peut dépasser 22 GB sur un serveur de 16 GB(ca swap). Mais ma connaissance limitée ne me permet pas de comprendre ce qui se passe.

    Comment puis-je faire pour limiter l’utilisation mémoire d’une instance oracle sur un serveur CentOS ?

    PGA_AGGREGATE_LIMIT , n’est pas une « hard limit » ?

    La documentation sur lequel je me suis basée.

    https://docs.oracle.com/en/database/...E-131DF09CFDB3



    Voici les paramètres de mémoire de mon instance oracle qui me pose porobème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    col name format A20
    col display_value format A15
    select name, display_value
    from v$parameter
    where name in ('pga_aggregate_target', 'pga_aggregate_limit', 'sga_target', 'memory_target')
    order by name;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    NAME                 DISPLAY_VALUE
    -------------------- ---------------
    memory_target        0
    pga_aggregate_limit  2G
    pga_aggregate_target 773094113
    sga_target           0

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Es-tu bien sur que c'est la PGA et non pas la SGA que tu veux limiter?
    En général quand on parle de mémoire Oracle, c'est de la SGA.

    Pour limiter la taille de la SGA: "SGA_MAX_SIZE specifies the maximum size of the SGA for the lifetime of the instance."
    Regarde ici : https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/SGA_MAX_SIZE.html#GUID-920E478A-59E6-43DC-ACE3-B54D59E041A3

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    PGA_AGGREGATE_LIMIT est un nouveau paramètre introduit en 12c pour limiter en dur l'utilisation de la PGA (mémoire utilisée par les programmes PL/SQL, notamment les collections). Comme tu n'as pas paramétré MEMORY_TARGET et SGA_TARGET, Oracle va "auto-tuner" la valeur de la SGA. Si tu veux limiter aussi l'utilisation de la mémoire SGA, il faut que tu renseignes une valeur pour SGA_MAX_SIZE. Par contre si tu constates que trop de mémoire est utilisée, c'est que ton serveur est sûrement sous-taillé.
    Au fait, pour rappel, CentOS n'est pas un OS certifié par Oracle.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut
    Merci de vos réponses, j'avoue que je ne comprends pas trop comment configurer. Je me suis fait un labo pour tenter de comprendre. Ce n'est pas gagné.
    Je ne comprends pas comment mettre une limite mémoire.

    Voici les infos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    SQL> show parameter sga
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    allow_group_access_to_sga            boolean     FALSE
    lock_sga                             boolean     FALSE
    pre_page_sga                         boolean     TRUE
    sga_max_size                         big integer 2G
    sga_target                           big integer 0
    unified_audit_sga_queue_size         integer     1048576
    SQL> show parameter pga
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    pga_aggregate_limit                  big integer 2G
    pga_aggregate_target                 big integer 773094113
    SQL>
     
     
     
    SQL> show parameter target;
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    archive_lag_target                   integer     0
    db_big_table_cache_percent_target    string      0
    db_flashback_retention_target        integer     1440
    fast_start_io_target                 integer     0
    fast_start_mttr_target               integer     0
    memory_max_target                    big integer 0
    memory_target                        big integer 0
    parallel_servers_target              integer     8
    pga_aggregate_target                 big integer 773094113
    sga_target                           big integer 0
    SQL>

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 462
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    ...PGA_AGGREGATE_LIMIT est un nouveau paramètre introduit en 12c pour limiter en dur l'utilisation de la PGA (mémoire utilisée par les programmes PL/SQL, notamment les collections). ...
    C'est justement là que se tient toute la subtilité.
    PGA_AGGREGATE_LIMIT agit sur les zones PGA autoajustables, or elles ne le sont pas toutes.
    En particulier, ce paramètre n'a pas d'effet sur les variables PL/SQL ; celles-ci ne seront jamais plafonnées en taille.

    Exemple avec un simple BULK COLLECT fait sur une grosse table :

    J'ai une limite théorique de PGA de 2 Go
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    show parameter pga
     
     
    NAME                      TYPE        VALUE
    ------------------------- ----------- --------
    pga_aggregate_limit       big integer 2G
    pga_aggregate_target      big integer 200M
    Mais j'arrive ici à en consommer presque 12 Go comme l'indique V$PGASTAT (j'affiche les valeurs en Mo) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    NAME                                      TRUNC(VALUE/1024/1024)
    ----------------------------------------- ----------------------
    aggregate PGA target parameter                               200
    aggregate PGA auto target                                     12
    global memory bound                                           40
    total PGA inuse                                            11948
    total PGA allocated                                        11989
    maximum PGA allocated                                      11989
    total freeable PGA memory                                     10
    process count                                                  0
    max processes count                                            0
    PGA memory freed back to OS                                  504
    total PGA used for auto workareas                              0
    maximum PGA used for auto workareas                           23
    total PGA used for manual workareas                            0
    maximum PGA used for manual workareas                         14
    Donc PGA_AGGREGATE_LIMIT n'est toujours pas une limite absolue.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut
    Alors je ne sais pas à avoir de contrôle sur la mémoire ..!
    Où il y a encore une subtilité que je n'arrive pas saisir.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 291
    Par défaut
    En lisant la documentation,
    Je ne comprends de moins en moins la configuration du serveur.

    https://docs.oracle.com/database/121...htm#ADMQS12039

    Pour configurer AMM pour qu'il puisse prendre toute la mémoire : MEMORY_TARGET = XXX
    Pour configurer AMM qui gére PGA et SGA, je dois mettre : MEMORY_TARGET = 0; PGA_AGGREGATE_TARGET = XXX; SGA_TARGET = XXX;
    Pour désactiver: AMM, sinon je dois configuer chaque pools manuellement et mettre MEMORY_TARGET, SGA_TARGET, PGA_AGGREGATE_TARGET à 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DB_CACHE_SIZE
    JAVA_POOL_SIZE
    LARGE_POOL_SIZE
    SHARED_POOL_SIZE
    PGA_AGGREGATE_TARGET
    Sur le serveur j'ai MEMORY_TARGET = 0
    PGA_AGGREGATE_TARGET =773094113 (bytes)
    SGA_TARGET = 0


    Suis-je dans une configuration propre ? ou la configuration a été bidouillée ?



    Pour info :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    shared_pool_size                     big integer 560M
    java_pool_size                         big integer 16M
    large_pool_size                        big integer 0
    shared_pool_size                     big integer 560M
    pga_aggregate_target              big integer 773094113

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Donc PGA_AGGREGATE_LIMIT n'est toujours pas une limite absolue.
    Que ça ne limite pas strictement ce n'est pas étonnant mais que tu puisses monter si haut c'est suprenant. Quelle la versionde la DB et combien de temps a pris le bulk collect? D'après Oracle le process ckpt vérifie tous les 3s, donc peut-être que ton bulk collect est passé très vite?
    J'essaierai de faire un test de mon côté.

Discussions similaires

  1. Démarrage deux instances sur un serveur Oracle
    Par collysamin dans le forum Administration
    Réponses: 5
    Dernier message: 25/11/2019, 20h23
  2. Limite à la création de VM sur un serveur
    Par Helianza dans le forum Virtualisation
    Réponses: 1
    Dernier message: 18/10/2011, 18h47
  3. Limite en nombre de comptes sur un serveur FTP
    Par Traroth2 dans le forum Réseau
    Réponses: 4
    Dernier message: 04/07/2007, 12h55
  4. nouvelle instance sur un serveur oracle 10g
    Par jpspci dans le forum Oracle
    Réponses: 2
    Dernier message: 24/01/2007, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo