Fonctionnement et Tuning de la SGA sous Oracle

Slides:



Advertisements
Présentations similaires
Plan de formation Chapitre 1 : Présentation de SAP
Advertisements

1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Administration des bases de données
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 3 : Le serveur Patrick Guimonet Architecte Infrastructure Division.
Évaluation des requêtes relationnelles
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Module 6 : Gestion et analyse du système DNS
Les éléments de mémorisation
Autorisations Utilisation eCATT
Plan de formation Chapitre 1 : Présentation de SAP
Plan de formation Chapitre 1 : Présentation de SAP
Plan de formation Chapitre 1 : Présentation de SAP
1 Efficient Data and Program Integration Using Binding Patterns Ioana Manolescu, Luc Bouganim, Francoise Fabret, Eric Simon INRIA.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
Les fonctions.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Développement d’applications web
Oracle ARCHITECTURE INTERNE
Retour sur l'allocation d'espace Exemple sur une table facture (sans les tables associées) N° fact, N° Client, N° Cde, date Cde, date fact, date réglement,
Contrôles d'accès aux données
Gérer les tablespaces et les fichiers de données
Synchronisation et communication entre processus
Serveurs Partagés Oracle
Configuration de Windows Server 2008 Active Directory
1 CLUB DES UTILISATEURS SAS DE QUÉBEC COMMENT TRANSFORMER UN PROGRAMME SAS EN TÂCHE PLANIFIÉE SOUS WINDOWS Présentation de Jacques Pagé STRiCT Technologies.
L’utilisation des bases de données
Gestion des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Programmation concurrente
Module 2 : Préparation de l'analyse des performances du serveur
Module 3 : Création d'un domaine Windows 2000
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
OPTIMISATION DE BASE DE DONNEES ORACLE
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Vue d'ensemble Surveillance des journaux d'événements
Introduction.
Fichiers de données Fichiers de contrôles Fichiers de journalisations Fichiers de paramètres d’initialisation.
Gestion d’une instance Oracle
Gérer la sécurité des mots de passe et les ressources
Module 8 : Surveillance des performances de SQL Server
Les Chiffres Prêts?
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Les Composants de l’architecture Oracle
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation.
Créer des packages.
Concepts et administration
Composants de l'architecture Oracle
Gérer une instance Oracle
Concepts de sauvegarde et de récupération
Gérer l'instance Oracle
(Ou groupes d ’utilisateurs)
Cours oracle n°1 Le SGBD ORACLE
Module 13 : Implémentation de déclencheurs. Vue d'ensemble Présentation des déclencheurs Définition de déclencheurs Exemples de déclencheurs Performances.
Structure de stockage et relations
Module 3 : Création d'un domaine Windows 2000
Module 5 : Exécution de tâches administratives
Gérer les utilisateurs
 Formulaires HTML : traiter les entrées utilisateur
PLAN ● L'instance – Création – Démarrer, Arréter et surveiller – Connexion / Utilisateurs ● Optimisations et interconnexions ● Administration et sauvegardes.
24/04/ Introduction 24/04/20152 Contenu du fichier redo Par exemple, si l'on modifie la valeur d'un salaire dans la table employé, on génère un.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Module 7 : Restauration de bases de données
Transcription de la présentation:

Fonctionnement et Tuning de la SGA sous Oracle TOUAMI Khaled

Plan Structure d ’une base de données Oracle Architecture technique d’une base Oracle System Global Area (SGA) Fonctionnement Optimisation Statpack TOAD

Structure d’une base Oracle

Définitions Base de Données(database) Ensemble de fichiers de données (data files), des fichiers de contrôle(control files) et des fichiers journaux de transactions (redo logs), formant la structure permanente d ’un serveur oracle. Instance Elle comprend la System Global Area (SGA), les processus d ’arrière-plan associés et les structures correspondantes de mémoire partagée. Elle est transitoire est crée à chaque démarrage d ’instance.

DBWR( Database Writer) Processus DBWR( Database Writer) Transfert les blocs de données modifiées du data buffer dans les fichiers disque de la base de données. Le paramètre d ’initialisation DB_WRITERS_PROCESSES permet de démarrer plusieurs processus DBWR, afin d ’augmenter le taux d ’écriture sur disque. LGWR(Log Writer) Écrit les données modifiées depuis la zone mémoire redo-log buffer dans les fichiers redo-log. CKPT(Checkpoint) Signe à des intervalles réguliers, le moment d ’écriture des données modifiées dans la SGA dans les fichiers de la base de données. Il modifié l’ensemble des fichiers qui composent la base de données, pour que le numéro d ’ordre du plus récent checkpoint soit inscrit en en-tête de fichier. SMON(System Monitor) Surveille la base de données lors de son démarrage, puis au cours de son fonctionnement. PMON(Processus Monitor) Nettoie les transactions défaillantes, comme celle d ’un poste client arrêter brutalement durant une transaction (zonez allouées libérées, les verrous posés sont supprimés, les ressources affectées sont annulées). Vues : V$bgprocess

System Global Area (SGA) Définition : C ’est une zone mémoire qui regroupe un ensemble de structures de mémoire partagées qui contiennent les données, et les informations de contrôle le plus souvent utilisées d ’une instance oracle. Elle comprend : Shared Pool Area Data buffer Cache Redo-log Buffer Volume initial de la SGA : La SGA doit représenter au moins 2% de la taille totale de la base de données (physique). Elle est repartie comme suit : 50% Cache de données (database buffer cache) 40% Shared Pool 10% Redo Log Buffers Espace libre dans la SGA : Pour connaître l ’espace libre dans la SGA, on interroge la vue V$SGASTAT select * from v$sgastat where name = 'free memory' Mesure de performance : la mesure de la performance revient à calculer les différents indicateurs ratios d ’analyse correspondants aux différentes partis de la SGA.

Shared Pool Area Définition : C ’est une partie de la SGA dans laquelle les instructions SQL, les procédures stockées et les informations spécifiques du dictionnaire sont enregistrées en mémoire. Elle est gérée au moyen d ’un algorithme LRU (Least Recently Used). Elle comprend : Library cache : il contient le code SQL des instructions et les plans d ’exécutions associés , les blocs PL/SQL et des classes Java. Dictionary cache : contient des méta données issues du dictionnaire de données décrivant la structure et la sécurité de tous les objets inclus dans les instructions SQL récemment utilisées. Paramètres : SHARED_POOL_SIZE : Définit la taille du pool partagé, en octets. SHARED_POOL_RESERVED_SIZE : Réserve une part du pool partagé pour des objets de grande taille ( package, procédure, fonction). Vues de performance dynamique : V$Rowcache, V$LibrabyCache, V$SqlArea

Analyse du code SQL

Vérification de la syntaxe de l ’instruction SQL. PARSE : Vérification de la syntaxe de l ’instruction SQL. Réalisation de la résolution d ’objets et les contrôles de sécurité pour l ’exécution du code. Construction de l’arbre d’analyse Développement du plan d ’exécution pour l’instruction SQL. EXECUTE : Application du plan d ’exécution. Lecture des blocs de données du fichier en mémoire. Manipulation des données en mémoire (Insert, Update, Delete). FETCH : (select) Renvoie des lignes au processus utilisateur.

Qu ’est ce qui l ’optimisation C ’est un ensemble d ’actions de modifications ciblés au niveau des composants de la base de données pour atteindre des objectifs de performance, c ’est à dire augmenter le débit et réduire les temps de réponse. Finalité : Satisfaction des utilisateurs. Méthodologie d ’optimisation 1. Définition des objectifs d ’optimisation raisonnable. 2. Mesurez et documentez les performances actuelles. 3. Identifier les goulets d ’étranglement actuels sur Oracle 4. Identifier les goulets d ’étranglement actuels du système d ’exploitation. 5. Optimiser les composants concernés (Application, Instance , Base de données, E/S, OS). 6. Application des procédures de contrôle des changements, 7. Mesurez et documenter les performances actuelles, 8. Répétez les étapes 3 à 7 jusqu ’à ce que les objectifs soient atteintes.

Optimisation de la Shared Pool Area Les principaux problèmes liés aux performances du pool partagé: Utilisation intense des ressources CPU, causé par des analyses excessives. Erreur ORA-4031 : manque de place mémoire. Mesures de performance a)- library cache La vue V$LIBRARYCACHE contient l’ensemble des informations relatives aux activités de la library cache depuis le dernier démarrage de l ’instance.

Get : Désigne le nombre de requêtes pour un ou plusieurs éléments du cache de bibliothèque. Gethit : Le nombre de fois qu ’un objet à été trouvé en mémoire. Gethitratio : C ’est le rapport entre le Gethits et le Gets. Pins : le nombre d ’exécutions d ’un élément donné. Pinhits : le nombre de fois qu ’un élément a été exécuté en mémoire. Pinhitratio : C ’est le rapport entre le Pinhits et le Pins. Reloads : le nombre de manqués ( nombre de demandes infructueuses ayant nécessité un rechargement en cache.

Select SUM (pins-reloads)/ SUM (pins) "Library cache hit ratio" FROM V$LIBRARYCACHE Library cache hit ratio ---------------------------- ,997253872 ( > au seuil de 85%) Recommandation : Si le library cache hit ratio < 85%, augmentez la valeur du paramètre SHARED_POOL_SIZE Nombre d ’analyse réalisées Select STATISTIC#, NAME , VALUE from v$sysstat where name like 'parse count%' STATISTIC# NAME VALUE ---------- ---------------------------------- ---------------- 152 parse count (total) 960796 153 parse count (hard) 98815

Reload ratio : C ’est le pourcentage d ’exécutions qui ont nécessité une nouvelle analyse. Select sum(pins) "EXECUTIONS" , sum(RELOADS) "MISSES", sum(RELOADS)/sum(pins) "RELOAD RATIO" from v$librarycache EXECUTIONS MISSES RELOAD RATIO ------------------ ---------------- ----------------------- 14069958 38637 ,274606363 where namespace = 'TRIGGER' EXECUTIONS MISSES RELOAD RATIO --------------------------------------------------------- 337 87 ,258160237 Si la valeur du reload-ratio > 1, On augmente la valeur du paramètre SHARED_POOL_SIZE.

Identification des objets de grande taille Select name, type, loads, executions from v$db_object_cache where type in ('PACKAGE', 'PACKAGE BODY','FUNCTION','PROCEDURE') and owner like 'AGNES ’ NAME TYPE LOADS EXECUTIONS SHARABLE_M -------------------------------------------------------------------------------------------------------------------------------------- NOMBRECLIENT PROCEDURE 3 9 8070 COMMANDE_EXISTE FUNCTION 2 17 13333 AFFICHER PROCEDURE 3 61 9218 MAJOR PROCEDURE 6 7 8335 Remarque : Lorsqu ’une procédure incluse dans un package est appelée, c ’est l ’ensemble du package qui chargé en mémoire et analysé.

Dictionary cache hits-ratios

Calcul du dictionary cache hit-ratio Select (sum(gets-getmisses))/sum(gets)*100 "Dictionary Cache Hit ratio" from V$Rowcache Dictionary ---------- 94,0434197 Une valeur du dictionary cache hit-ratio > 85% est satisfaisante. Le Keeping Pour améliorer les performance on fixe des objets de grande taille dans la SPA. SQL> exec dbms_shared_pool.keep(‘nom de l ’objet à fixer ’) Quels sont les objets fixés Select Owner, Name, Type, Sharable_mem, Kept from V$DB_OBJECT_CACHE where Type in (‘FUNCTION ’,’PACKAGE’,’PACKAGE BODY ’, ’PROCEDURE’) Order by Owner, Name

DATABASE BUFFER CACHE 1)-Fonctionnement Les données sont écrites en mémoire par blocs (si elles ne s ’y trouvent pas déjà) avant de pouvoir être manipulées en lecture ou en écriture. La quantité de mémoire disponible pour enregistrer ces blocs est limitée, de telle sorte que des blocs doivent être remplacés par des blocs plus récents en suivant un mécanisme de gestion appelée algorithme LRU. Un bloc est dit « dirty »si son contenu a changé. Oracle n ’autorise pas de nouvelle données à prendre cette place, tant que ce contenu n’a pas été écrit sur disque. Une fois le bloc écrit sur le disque, il devient disponible pour être réutilisé, il est dit « free ». Exemple : 2)-Paramètres de configuration DB_BLOCK_SIZE (Taille d ’un bloc en octets) DB_BLOCK_BUFFER (Nombre de blocs qui peuvent être enregistrés) - La taille d ’un bloc détermine la taille de chacun des buffers. - La taille totale du cache de données = DB_BLOCK_BUFFER * DB_BLOCK_SIZ .

ANALYSE DE DATABASE BUFFER CACHE a)-Le cache hit-ratio : C ’est le rapport entre le nombre de fois où un bloc est demandé et le nombre de fois où le cache de données d ’oracle a été capable de renvoyer la valeur par une lecture logique plutôt que par une lecture physique. CHR=100*(1-(physical reads / (consistent gets + db block gets - physical reads))) Select 1- (phy.value / ( cons.value + db.value - phy.value)) from v$sysstat phy, v$sysstat cons, v$sysstat db where phy.name ='physical reads' and cons.name ='consistent gets' and db.name ='db block gets ’ b)-Quels objets utilisent la plus grande part du cache de données Select o.owner, o.object_type, o.object_name, count(b.objd) from v$bh, dba_objects o where b.objd=o.objects_id group by o.owner, o.object_type, o.object_name having count(b.objd) > (select to_number(value*0.5) from v$parameter where name=‘db_block_buffers’)

c)-Les évènements d’attente Pour déterminer les évènements d ’attentes qui affectent le cache de données, on interroge la vue V$SESSION_WAIT. Select SW.Sid, S.Username, Substr(SW.Event,1,35), SW.Wait_Time from V$SESSION S, V$SESSION_WAIT SW where SW.Event not like 'SQl*Net%' and SW.Sid=S.Sid Order by SW.Wait_Time, SW.Event Les évènements d ’attente courants relatifs au cache de données Buffer busy waits : Indique une attente d ’un buffer dans le cache de la base de données. Free buffer waits : Manque de buffers libres dans le cache de données Db file sequential read : Signale des attentes associées à une lecture excessif d ’index. Db file scattered read : Signale des attentes associées à un balayage complet d ’une table. Sources d’informations V$WAITSTAT, V$SYSTEM_EVENT, V$SESSION_WAIT, STATPACK REPORT

Redo Log Buffer 1)-Fonctionnement Un processus utilisateur lance une instruction DML. Oracle affecte un identificateur de transaction à cette opération. Le processus serveur associé au processus utilisateur transfère en mémoire les données nécessaires, puis verrouille les lignes concernées qui doivent subir des manipulations. Le processus serveur écrit dans le redo log buffer l ’image des lignes avant les modifications (before image). Le processus serveur mis à jour les lignes de données. Le processus serveur écrit dans le redo log buffer l ’image qui suit la transaction (after image). Les données de redo log buffer sont transcrit sur disque lorsque survient l ’un des évènements suivants: Chaque fois qu ’une période de trois secondes s ’est écoulée. Lors d ’un commit. Lorsque l ’expression MIN(1MB, LOG_BUFFER/3) est vérifiée. Au moment des Checkpoints, Lorsqu ’il est déclenché par le processus DBWR

B)-Paramètres de configuration LOG_BUFFER (Définit la taille en octets) C)- Les évènements d ’attentes liés au redo log buffer Log buffer space : Indique un problème potentiel du LGWR. Log file parallel write : Signale une attente liée à l ’écriture de journaux sur le disque. Log file sync : Signale des attentes liées à un vidage du journal lors de la validation (commit) par un utilisateur.

ANALYSE DE REDO LOG BUFFER a)-Redo log hit-ratio Select name, value from V$SYSSTAT where name in ('redo buffer allocation retries','redo entries') NAME VALUE -------------------------------------------- ---------------- redo entries 2674558 redo buffer allocation retries 83 redo buffer allocation retries : indique le nombre d ’attente avant d’écrire dans le redo log buffer. Select 100*(a.value/b.value) "redo buffer retries ratio" from v$sysstat a, v$sysstat b where a.name='redo buffer allocation retries' and b.name='redo entries' redo buffer retries ratio ----------------------------- 0,003102836

Attente due à la non disponibilité du fichier redo log Select name, value from V$SYSSTAT where name='redo log space requests' NAME VALUE ------------------------------------------------------------------ redo log space requests 64

STATPACK Un outil de diagnostic. Il enregistre un grand nombre de données relatives aux performances. Calcul les ratios de performance. Il enregistre dans un schéma permettant une utilisation ultérieure Possibilité de faire une comparaison avec les données d ’exécutions antérieures. Installation Lancer le script $ORACLE_HOME/rdbms/admin/spcreate.sql (création du schéma statpack et de user PERFSTAT) Exécution SQL> connect perfstat/perfstet SQL> execute statspack.snap Analyse des résultat SQl>@spreport

STATSPACK report for DB Name DB Id Instance Inst Num Release OPS Host ---------- ----------- ---------- -------- ---------- ---- ---------- Test 204079298 ORCL 1 8.1.5.0.0 NO azuro Snap Length Start Id End Id Start Time End Time (Minutes) -------- -------- -------------------- -------------------- ----------- 1 2 25-Sep-00 00:36:21 25-Sep-00 00:38:10 1.82 Cache Sizes ~~~~~~~~~~~ db_block_buffers: 8192 db_block_size: 2048 log_buffer: 163840 shared_pool_size: 15728640 Load Profile ~~~~~~~~~~~~ Per Second Per Transaction --------------- --------------- Redo size: 4,893.39 533,380.00 Logical reads: 37.88 4,129.00 Block changes: 22.23 2,423.00 Physical reads: 4.26 464.00 Physical writes: 7.16 780.00 User calls: 0.02 2.00 Parses: 2.04 222.00 Hard parses: 0.06 7.00 Sorts: 0.35 38.00 Instance Efficiency Percentages (Target 100%) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait Ratio: 100.00 Buffer Hit Ratio: 88.76 Library Hit Ratio: 94.08 Redo NoWait Ratio: 99.69 In-memory Sort Ratio: 94.74 Soft Parse Ratio: 96.85 Latch Hit Ratio: 100.00

TOAD (Outil d ’administration)

BIBLIOGRAPHIE Oracle 8i DBA LONELY.K., THERIAULT.M Oracle Press. Optimisation des performances sous Oracle - GAJA KRISHNA, VAIDYANATHA, KIRTIKUMAR Oracle Press. Oracle 9i sous Linux - BRIARD.G Eyrolles Oracle OCP Oracle9i database: FundamentalsI-II Exam Guides. C.Shallahammer, « Direct Contention Identification Using Oracle ’s Session wait Tables » C.Millsap, « Oracle Performance problem Diagnossis » www.hotsos.com www.oraperf.com technet.oracle.com/deploy/performance/ www.orapub.com

Questions ?