Ce cours s’adresse aux DBAs qui s’occupent de la performance des bases Oracle et de leur tuning. il requiert de la part du participant une pratique régulière de l’administration d’Oracle. une bonne partie du contenu peut s’appliquer à toutes les versions d’Oracle en utilisation actuellement.
Plan détaillé
Introduction et rappels
- Paramètres d’initialisation.
- Gestion des données de diagnostic.
- Documentation Oracle.
- Démarches et choix d’optimisation.
- Configuration de l’optimiseur.
- Collecte des statistiques.
Traitement des instructions SQL et outils de mesure
- Phases de traitement d’une instruction SQL.
- Vues v$sqlarea et v$sql.
- Utilisation des vues dynamiques.
- Statistiques d’activité.
- Introduction aux événements d’attente.
- Visualisation des plans d’exécution, statistiques des plans d’exécution.
- Les zones de travail (SQL Work Areas).
- Traçage des sessions SQL et utilisation de TKPROF.
- Utilisation de DBMS_MONITOR.
- Utilisation de statspack/AWR.
Travaux pratiques : utilisation des vues v$sqlarea/v$sql, les événements d’attente, statistiques des plans d’exécution, les zones de tri, traçage/tkprof, utilisation de DBMS_MONITOR, génération/interprétation de rapports AWR/statspack.
Collecte des statistiques
- Paramétrage de la collecte des statistiques de données.
- Histogrammes et configuration.
- Collecte dynamique des statistiques.
- Collecte des statistiques système.
Travaux pratiques : paramétrage de la collecte des statistiques, collecte dynamique des statistiques.
Fonctionnement de l’optimiseur
- Méthodes d’accès aux données.
- Utilisation des index.
- Utilisation des variables de lien (bind variables), curseurs adaptatifs.
- Optimisation adaptative des requêtes (12c+)
- Utilisation des indications d’optimisation (optimizer hints), les indications « recommandées ».
Travaux pratiques : utilisation des variables de lien, utilisation des curseurs adaptatifs, utilisation des index.
Optimisation de la base de données
- Gestion de l’espace dans la base.
- Gestion de l’espace dans les segments.
- Gestion de la concurrence, estimation du paramètre INITRANS d’un segment.
- Gestion des segments d’annulation : estimation des valeurs UNDO_RETENTION, taille du tablespace UNDO.
- Gestion des groupes de journalisation (redo log groups) : nombre et taille des groupes de journalisation.
Travaux pratiques : gestion de la concurrence, détermination de la taille adéquate des groupes de journalisation.
Optimisation de l’instance
- Optimisation du démarrage de l’instance, paramétrage des points de synchronisation.
- Gestion de la mémoire dans Oracle, utilisation des vues de conseil (v$*_advice).
- Optimisation des différentes zones buffer cache.
- Optimisation de la zone shared pool.
- Optimisation du tampon de journalisation (log buffer).
- PGAs, dimensionnement des PGAs.
- UGAs (User Global Areas).
- Large Pool.
Travaux pratiques : choix des valeurs adéquates pour sga_target, memory_target, pga_aggregate_target, choix des tailles minimales des zones gérées automatiquement lors de la gestion automatique de la mémoire, optimisation de la taille du tampon de journalisation.
Gestion des plans d’exécution
- Création et utilisation des plans d’exécution stockés.
- Utilisation des plans stockés privés.
- Utilisation des profils SQL.
- SQL Plan Management.
Travaux pratiques : utilisation des plans stockés afin de modifier le plan d’une instruction SQL sans la réécrire, utilisation des profils SQL afin de modifier le plan d’exécution d’une instruction SQL sans la réécrire.
Compléments
- Optimisation des entrées/sorties des disques.
- Définition des seuils adaptatifs.
- Utilisation d’ADDM.
- Utilisation de SQL Performance Analyzer.
Travaux pratiques : définition des seuils adaptatifs.