Fonctions de haute performance dans le service de base de données autonome sur une infrastructure Exadata dédiée

Cet article décrit les principales fonctions de réglage de la performance dans Autonomous Database sur une infrastructure Exadata dédiée.

Notez que dans cette section, le terme " vous " est généralement utilisé pour désigner tout utilisateur de votre organisation qui a la responsabilité d'exécuter certaines tâches. Dans certains cas, c'est le DBA de l'application, dans d'autres, c'est le développeur de l'application.

Autonomous Database comprend plusieurs fonctions qui surveillent, analysent et optimisent automatiquement la performance de votre base de données. For a complete list of the SQL tuning and performance management features of Oracle Autonomous Database, and instructions on how to use them, see Oracle Database 19c SQL Tuning Guide or Oracle Database 23ai SQL Tuning Guide.

Vous pouvez voir une catégorisation générale pour les principales fonctions de réglage de la performance d'Autonomous Database décrites ci-dessous.

Conseil :

Dans l'image suivante, vous pouvez cliquer sur la fonction que vous souhaitez explorer davantage.


Services de base de données prédéfinis

La façon dont votre application se connecte à votre base de données et celle dont vous codez les appels SQL à la base de données déterminent la performance globale des opérations de traitement des transactions et de production de rapports de votre application.

Lorsque vous établissez des connexions à Autonomous Database, la performance de l'interaction de votre application avec la base de données dépend du service de base de données auquel vous êtes connecté. Autonomous Database fournit plusieurs jeux de services de base de données à utiliser lors de la connexion à votre base de données. Ces services de connexion sont conçus pour prendre en charge différents types d'opération de base de données, comme décrit sous Nom des services de base de données prédéfinis pour les bases de données autonomes.

Conseil :

Vérifiez les caractéristiques clés des services de base de données prédéfinis et la table qui compare les différents ensembles de services de base de données en fonction de ces caractéristiques pour déterminer quel service de base de données convient le mieux aux exigences de performance de votre application.

Réserves de connexions

Lorsque vous établissez des connexions à Autonomous Database, vous pouvez utiliser des réserves de connexions pour réduire la surcharge de performance liée à la création et à la destruction répétées de connexions individuelles. Il s'agit d'un autre facteur qui a un impact important sur les performances de l'interaction de votre application avec la base de données.

Bien souvent, l'utilisation de réserves de connexions n'est envisagée que lors de la conception ou de l'amélioration d'une application pour assurer la disponibilité continue. Toutefois, l'utilisation de réserves de connexions au lieu de connexions individuelles peut présenter des avantages pour presque toutes les applications de traitement de transactions. Une réserve de connexions offre les avantages suivants :

  • Réduit le nombre de créations de nouveaux objets de connexion.
  • Favorise la réutilisation des objets de connexion.
  • Accélère le processus d'obtention d'une connexion.
  • Contrôle la quantité de ressources utilisées pour maintenir les connexions.
  • Réduit le travail de codage requis pour gérer manuellement les objets de connexion.

Fonctions de connexion à usage spécifique

Oracle Net Services (précédemment appelé SQL*Net) fournit diverses fonctions de connexion qui améliorent la performance dans des scénarios de connexion spécifiques. Ces fonctions sont décrites dans Guide de l'administrateur d'Oracle Database 19c Net Services ou dans Guide de l'administrateur d'Oracle Database 23ai Net Services.
  • Le marquage de la collecte est l'une de ces fonctions, utile pour certaines applications de traitement des transactions. Si votre application établit des connexions répétées au même service de base de données, le marquage de la colocalisation permet de diriger toutes ces connexions vers la même instance de base de données, en ignorant le traitement d'équilibrage de charge normalement effectué côté base de données des connexions. Pour plus d'informations, consultez COLOCATION_TAG sur les connexions de client dans Oracle Database 19c ou Oracle Database 23ai.

  • La configuration de serveur partagé est une autre fonction prise en charge par Autonomous Database pour maintenir les applications existantes sans réserve de connexions. L'architecture de serveur partagé permet au serveur de base de données d'autoriser plusieurs processus clients à partager très peu de processus serveurs. Cela augmente le nombre d'utilisateurs que l'application peut prendre en charge. L'utilisation de l'architecture de serveur partagé pour ces applications existantes permet à celles-ci d'évoluer sans qu'il soit nécessaire de les modifier.

    Vous pouvez activer des connexions de serveur partagé lors du provisionnement d'une base de données conteneur autonome. Ce paramètre s'applique à toutes les bases de données qu'elle contient. Pour obtenir des instructions, voir Créer une base de données conteneur autonome.

    Voir aussi Oracle Database 19c Net Services Administrator's Guide ou Oracle Database 23ai Net Services Administrator's Guide pour plus d'informations sur les serveurs partagés, y compris les fonctionnalités telles que le multiplexage de sessions.

    Une fois la connexion au serveur partagé activée pour votre base de données conteneur autonome, il n'est pas nécessaire de modifier la chaîne de connexion. La configuration par défaut est Dedicated.

    Note :

    Vous ne pouvez pas désactiver un serveur partagé pour une base de données conteneur autonome Autonomous Database spécifique créée sous une base de données conteneur autonome avec serveur partagé, et vous ne pouvez pas utiliser une connexion dédiée pour les bases de données Autonomous Database créées sous une base de données conteneur autonome avec serveur partagé.

Fonctions de réglage de la performance SQL

Il n'y a pas d'application performante sans code SQL bien écrit. Oracle Autonomous Database offre de nombreuses fonctionnalités qui vous permettent de créer des applications haute performance et de valider votre code SQL et PL/SQL. Certaines de ces fonctionnalités sont répertoriées ci-dessous :

  • Indexation automatique
  • Statistiques et conseils de l'optimiseur
  • Résolution automatique des régressions de plan SQL
  • Mise en quarantaine automatique des énoncés SQL incontrôlés
  • Gestion de plan SQL
  • Ensembles de réglages SQL
  • Trace SQL

Au fur et à mesure que vous développez votre application, vous pouvez rapidement apprendre comment ces fonctions affectent le code SQL que vous écrivez et ainsi améliorer votre code à l'aide de la feuille de calcul SQL fournie par Oracle Database Actions (intégrée à Autonomous Database) et Oracle SQL Developer (une application gratuite que vous installez sur votre système de développement).

Traçage SQL

Lorsqu'une opération d'application prend plus de temps que prévu, l'obtention d'une trace de tous les énoncés SQL exécutés dans le cadre de cette opération avec des détails tels que le temps passé par cet énoncé SQL dans les phases d'analyse, d'exécution et d'extraction vous aidera à identifier et à résoudre la cause du problème de performance. Pour ce faire, vous pouvez utiliser le traçage SQL sur une base de données Autonomous Database.

Le traçage SQL est désactivé par défaut dans Autonomous Database. Vous devez l'activer pour commencer à collecter les données de trace SQL. Reportez-vous à Utiliser la trace SQL sur Autonomous Database pour obtenir des instructions détaillées sur l'activation et l'utilisation de la trace SQL.

Statistiques de l'optimiseur

La base de données autonome collecte automatiquement les statistiques de l'optimiseur afin que vous n'ayez pas besoin d'effectuer cette tâche manuellement, et pour garantir que les statistiques sont à jour. La collecte automatique de statistiques est activée dans les bases de données autonomes et s'exécute dans une fenêtre de maintenance standard.

Note :

Pour plus d'informations sur les fenêtres de maintenance et la collecte automatique de statistiques de l'optimiseur, voir le Guide de l'administrateur d'Oracle Database 19c ou le Guide de l'administrateur d'Oracle Database 23ai.

Pour plus d'informations sur les statistiques de l'optimiseur, voir le Guide de réglage SQL pour Oracle Database 19c ou le Guide de réglage SQL pour Oracle Database 23ai.

Conseils pour l'optimiseur

Les conseils de l'optimiseur sont des commentaires spéciaux dans un énoncé SQL qui fournissent des instructions à l'optimiseur. L'optimiseur utilise des conseils pour choisir un plan d'exécution pour l'énoncé, sauf si une condition donnée l'en empêche.

Les valeurs par défaut de la base de données autonome pour l'optimiseur et les conseils PARALLEL diffèrent selon la charge de travail :
  • Autonomous Data Warehouse : Autonomous Database avec Data Warehouse ignore les conseils de l'optimiseur et les conseils PARALLEL dans les énoncés SQL par défaut.

    Si votre application utilise des conseils, vous pouvez activer les conseils de l'optimiseur en réglant le paramètre OPTIMIZER_IGNORE_HINTS à FALSE au niveau de la session ou du système à l'aide de ALTER SESSION ou ALTER SYSTEM.

    Par exemple, la commande suivante active les conseils dans votre session :
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=FALSE;

    Vous pouvez également activer les conseils PARALLEL dans vos énoncés SQL en réglant OPTIMIZER_IGNORE_PARALLEL_HINTS à FALSE au niveau de la session ou du système à l'aide de ALTER SESSION ou ALTER SYSTEM.

    Par exemple, la commande suivante active les conseils PARALLEL dans votre session :
    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=FALSE;
  • Autonomous Transaction Processing : Conseils de l'optimiseur Autonomous Database honoraires et conseils PARALLEL dans les énoncés SQL par défaut.

    Vous pouvez désactiver les conseils de l'optimiseur en réglant le paramètre OPTIMIZER_IGNORE_HINTS à TRUE au niveau de la session ou du système à l'aide de ALTER SESSION ou de ALTER SYSTEM.

    Par exemple, la commande suivante désactive les conseils dans votre session :

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_HINTS=TRUE;

    Vous pouvez également désactiver les conseils PARALLEL dans vos énoncés SQL en réglant OPTIMIZER_IGNORE_PARALLEL_HINTS à TRUE au niveau de la session ou du système à l'aide de ALTER SESSION ou ALTER SYSTEM.

    Par exemple, la commande suivante active les conseils PARALLEL dans votre session :

    ALTER SESSION 
      SET OPTIMIZER_IGNORE_PARALLEL_HINTS=TRUE;

Indexation automatique

L'indexation automatique automatise les tâches de gestion des index dans les bases de données autonomes. L'indexation automatique est désactivée par défaut pour les bases de données autonomes.

La création manuelle d'index nécessite une connaissance approfondie du modèle de données, de l'application et de la répartition des données. Par le passé, les administrateurs de base de données étaient chargés de sélectionner les index à créer. Il arrivait qu'ils ne modifient pas leurs choix ou qu'ils ne tiennent pas les index à jour en cas de changement de situation. En conséquence, des possibilités d'amélioration étaient perdues et l'utilisation d'index inutiles pouvait entraîner une dégradation de la performance.

La fonction d'indexation automatique des bases de données autonomes surveille la charge de travail des applications et crée et tient à jour les index automatiquement.

Conseil :

Pour mettre ces instructions en pratique, exécutez l'étape Exercice 14 : Indexation automatique dans l'atelier sur l'utilisation des bases de données autonomes Oracle dédiées pour développeurs et utilisateurs de base de données.
Activer l'indexation automatique
  • Utilisez la procédure DBMS_AUTO_INDEX.CONFIGURE pour activer l'indexation automatique. Par exemple, l'exécution de l'énoncé ci-dessous permet l'indexation automatique dans une base de données et crée les nouveaux index automatiques en tant qu'index visibles, de sorte qu'ils puissent être utilisés dans des énoncés SQL.
    EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
  • Utilisez l'ensemble DBMS_AUTO_INDEX pour générer un rapport sur la tâche automatique et définir les préférences d'indexation automatique.

    Note :

    Remarque : Lorsque l'indexation automatique est activée, la compression des index automatiques est activée par défaut.
Désactiver l'indexation automatique
Utilisez la procédure DBMS_AUTO_INDEX.CONFIGURE pour désactiver l'indexation automatique. Par exemple, l'exécution de l'énoncé ci-dessous désactive l'indexation automatique dans une base de données afin qu'aucun nouvel index automatique ne soit créé. Toutefois, les index automatiques existants restent activés.
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','OFF');

Pour plus d'informations, voir Gestion des index automatiques dans Oracle Database 19c Administrator's Guide ou Oracle Database 23ai Administrator's Guide.

Ingestion rapide

L'ingestion rapide optimise le traitement des insertions de données à rangée unique haute fréquence dans une base de données. L'ingestion rapide utilise le groupe volumineux pour mettre en mémoire tampon les insertions avant de les écrire sur le disque, de manière à améliorer la performance des insertions de données.

L'objectif de fast-ingest est de soutenir les applications qui génèrent beaucoup de données d'information qui ont une valeur importante dans l'agrégat, mais qui ne nécessitent pas nécessairement des garanties ACID complètes. De nombreuses applications de l'Internet of Things (IoT) ont une charge de travail de type " feu et oubli " rapide, comme les données de capteurs, les données de compteurs intelligents ou même les caméras de circulation. Pour ces applications, les données peuvent être collectées et écrites dans la base de données en volumes élevés pour une analyse ultérieure.

L'ingestion rapide est très différente du traitement normal des transactions Oracle Database, où les données sont consignées et ne sont jamais perdues une fois "écrites" dans la base de données (c'est-à-dire validées). Afin d'atteindre le débit d'ingestion maximal, les mécanismes de transaction Oracle normaux sont ignorés. Il incombe à l'application de vérifier que toutes les données ont bien été écrites dans la base de données. Des API spéciales peuvent être appelées pour vérifier si les données ont été écrites dans la base de données.

Pour obtenir un aperçu de l'ingestion rapide et des étapes nécessaires à l'utilisation de cette fonction, consultez le document Utilisation de l'ingestion rapide dans le Guide de réglage de la performance d'Oracle Database 19c ou le Guide de réglage de la performance d'Oracle Database 23ai.

Pour utiliser l'ingestion rapide avec Autonomous Database, vous devez :
  • Activer l'optimiseur à utiliser des conseils : Réglez le paramètre optimizer_ignore_hints à FALSE au niveau de la session ou du système, selon le cas.

    Selon le type de charge de travail Autonomous Database, optimizer_ignore_hints peut être réglé par défaut à FALSE au niveau du système. Pour plus d'informations, voir Statistiques de l'optimiseur.

  • Créer une table pour l'ingestion rapide : Consultez le guide de réglage de la performance d'Oracle Database 19c ou le guide de réglage de la performance d'Oracle Database 23ai pour connaître les limites d'admissibilité des tables à l'ingestion rapide (les tables ayant les caractéristiques spécifiées ne peuvent pas utiliser l'ingestion rapide).

Classes de tâche prédéfinies avec Oracle Scheduler

La base de données autonome comprend des valeurs job_class prédéfinies à utiliser avec Oracle Scheduler. Ces classes vous permettent de regrouper les tâches qui partagent des caractéristiques et un comportement communs en entités plus grandes afin que vous puissiez hiérarchiser ces classes en contrôlant les ressources affectées à chaque classe.

Avec des classes de travail prédéfinies, vous pouvez vous assurer que vos travaux critiques ont la priorité et suffisamment de ressources pour être terminés. Par exemple, pour qu'un projet critique charge un entrepôt de données, vous pouvez combiner toutes les tâches d'entreposage de données dans une classe et les hiérarchiser par rapport aux autres en affectant un pourcentage élevé des ressources disponibles. Vous pouvez également affecter des priorités relatives aux emplois d'une classe.

Les valeurs de job_class prédéfinies, TPURGENT, TP, HIGH, MEDIUM et LOW sont mappées aux groupes de consommateurs correspondants. Ces classes de tâche vous permettent de spécifier le groupe de consommateurs dans lequel une tâche s'exécute avec DBMS_SCHEDULER.CREATE_JOB.

La procédure DBMS_SCHEDULER.CREATE_JOB prend en charge les types de tâche PLSQL_BLOCK et STORED_PROCEDURE pour le paramètre job_type dans la base de données autonome.

L'exemple suivant permet de créer une tâche standard à exécuter dans le groupe de consommateurs HIGH :

BEGIN
   DBMS_SCHEDULER.CREATE_JOB (
     job_name => 'update_sales',
     job_type => 'STORED_PROCEDURE',
     job_action => 'OPS.SALES_PKG.UPDATE_SALES_SUMMARY',
     start_date => '28-APR-19 07.00.00 PM Australia/Sydney',
     repeat_interval => 'FREQ=DAILY;INTERVAL=2',
     end_date => '20-NOV-19 07.00.00 PM Australia/Sydney',
     auto_drop => FALSE,
     job_class => 'HIGH',
     comments => 'My new job');
END;
/

Notes sur Oracle Scheduler :

  • L'utilisation de DBMS_SCHEDULER.CREATE_JOB peut nécessiter des autorisations supplémentaires pour des rôles ou des privilèges spécifiques. L'utilisateur ADMIN et les utilisateurs dotés du rôle DWROLE disposent des privilèges CREATE SESSION et CREATE JOB requis. Pour un utilisateur ne disposant du rôle DWROLE, des autorisations sont requises pour les privilèges CREATE SESSION et CREATE JOB.

  • L'attribut de tâche instance_id est ignoré pour les tâches Oracle Scheduler exécutées dans une base de données autonome.

Voir Programmation de travaux avec Oracle Scheduler dans Oracle Database 19c ou Oracle Database 23ai pour plus d'informations sur Oracle Scheduler et DBMS_SCHEDULER.CREATE_JOB.

Voir Procédure SET_ATTRIBUTE dans Oracle Database 19c ou Oracle Database 23ai pour plus d'informations sur les attributs de tâche.

Outils de surveillance et de réglage de la performance

Plusieurs situations telles que l'évolution des charges de travail, la limitation des ressources sur les serveurs d'applications et de bases de données, ou simplement les goulets d'étranglement de réseau peuvent entraîner des problèmes de performance des applications. Oracle fournit un large éventail d'outils pour vous aider à surveiller la performance, à diagnostiquer les problèmes de performance et à régler votre application ou la base de données pour résoudre les problèmes. Certains d'entre eux sont énumérés ci-dessous :
Outil Détails
Centre de performance

Outil riche en fonctionnalités disponible dans la console Oracle Cloud Infrastructure (OCI). Le centre de performance est également intégré à Oracle Database Actions et à Oracle Enterprise Manager.

Pour plus de détails, voir Surveiller la performance des bases de données à l'aide du centre de performance.

Mesures liées à Autonomous Database

Les mesures d'Autonomous Database vous aident à mesurer des données quantitatives utiles, telles que l'utilisation de l'UC et du stockage, le nombre de succès et d'échecs de connexion à la base de données et d'essais de connexion, les opérations de base de données, les interrogations SQL et les transactions, etc. Vous pouvez utiliser les données de mesures pour diagnostiquer et résoudre les problèmes survenus dans vos ressources Autonomous Database.

Voir Surveiller les bases de données avec des mesures Autonomous Database pour plus d'informations, telles que les préalables, l'utilisation et la liste des mesures disponibles pour Autonomous Database sur une infrastructure Exadata dédiée.

le référentiel AWR et le moniteur ADDM

Deux autres outils couramment utilisés sont le référentiel AWR (Automatic Workload Repository) et le moniteur ADDM (Automatic Database Diagnostic Monitor).

Le référentiel AWR stocke les statistiques relatives à la performance d'une base de données Oracle, et le moniteur ADDM est un outil de diagnostic qui analyse régulièrement les données AWR, localise les causes fondamentales des problèmes de performance, fournit des recommandations pour les résoudre et identifie les zones du système qui ne posent pas de problème. Le référentiel AWR étant un référentiel de données historiques sur la performance, le moniteur ADDM peut analyser les problèmes de performance après l'événement, ce qui permet souvent d'économiser le temps et les ressources requis pour reproduire un problème.

Pour obtenir des instructions sur l'utilisation de ces outils, ainsi que des informations détaillées sur la surveillance et le réglage de la performance des bases de données, voir le Guide de réglage de la performance d'Oracle Database 19c ou le Guide de réglage de la performance d'Oracle Database 23ai.

Le référentiel AWR et le moniteur ADDM sont également disponibles à partir du centre de performance. Pour plus de détails, voir Surveiller la performance des bases de données à l'aide du centre de performance.

Pour une présentation rapide de la surveillance et du réglage de la performance des bases de données, voir Oracle Database 19c 2 Day + Performance Tuning Guide ou Oracle Database 23ai 2 Day + Performance Tuning Guide.