Oracle Statspack - Amazon Relational Database Service

Oracle Statspack

L'option Oracle Statspack installe et active la fonction de statistiques de performances Oracle Statspack. Oracle Statspack est un ensemble de scripts SQL, PL/SQL et SQL*Plus qui collectent, stockent et affichent les données de performance. Pour plus d'informations sur l'utilisation d'Oracle Statspack, consultez Oracle Statspack dans la documentation Oracle.

Note

Oracle Statspack n'est plus pris en charge par Oracle et a été remplacé par l'option Automatic Workload Repository (AWR) plus avancée. AWR est disponible uniquement pour les clients Oracle Enterprise Edition ayant acheté le pack Diagnostics. Vous pouvez utiliser Oracle Statspack avec n'importe quel moteur de base de données Oracle sur Amazon RDS. Vous ne pouvez pas exécuter Oracle Statspack sur les réplicas en lecture Amazon RDS.

Configurer Oracle Statspack

Pour exécuter des scripts Statspack, vous devez ajouter l'option Statspack.

Pour configurer Oracle Statspack

  1. Dans un client SQL, connectez-vous à la base de données Oracle avec un compte administratif.

  2. Procédez comme suit, selon que Statspack est installé ou pas :

    • Si Statspack est installé et que le compte PERFSTAT lui est associé, passez à l'étape 4.

    • Si Statspack n'est pas installé et que le compte PERFSTAT existe, supprimez le compte comme suit :

      DROP USER PERFSTAT CASCADE;

      Sinon, une tentative d'ajout de l'option Statspack génère une erreur et un RDS-Event-0058.

  3. Ajoutez l'option Statspack à un groupe d'options. Voir Ajout d'une option à un groupe d'options.

    Amazon RDS installe automatiquement les scripts Statspack sur l'instance de base de données, puis configure le compte PERFSTAT.

  4. Réinitialisez le mot de passe à l'aide de l'instruction SQL suivante, en remplaçant pwd par votre nouveau mot de passe :

    ALTER USER PERFSTAT IDENTIFIED BY pwd ACCOUNT UNLOCK;

    Vous pouvez vous connecter à l'aide du compte d'utilisateur PERFSTAT et exécuter les scripts Statspack.

  5. Procédez comme suit, en fonction de la version du moteur de votre base de données :

    • Si vous utilisez Oracle 18c ou une version antérieure, passez cette étape.

    • Si vous utilisez Oracle 19c ou une version ultérieure, accordez le privilège CREATE JOB au compte PERFSTAT à l'aide de l'instruction suivante :

      GRANT CREATE JOB TO PERFSTAT;
  6. Assurez-vous que les événements d'attente inactifs dans la table PERFSTAT.STATS$IDLE_EVENT sont renseignés.

    En raison du bogue 28523746 d’Oracle, les événements d'attente inactifs dans PERFSTAT.STATS$IDLE_EVENT peuvent ne pas être renseignés. Pour vous assurer que tous les événements inactifs sont disponibles, exécutez l'instruction suivante :

    INSERT INTO PERFSTAT.STATS$IDLE_EVENT (EVENT) SELECT NAME FROM V$EVENT_NAME WHERE WAIT_CLASS='Idle' MINUS SELECT EVENT FROM PERFSTAT.STATS$IDLE_EVENT; COMMIT;

Génération de rapports Statspack

Un rapport Statspack compare deux instantanés.

Pour générer des rapports Statspack

  1. Dans un client SQL, connectez-vous à la base de données Oracle avec le compte PERFSTAT.

  2. Créez un instantané à l'aide de l'une des techniques suivantes :

    • Créez manuellement un instantané Statspack.

    • Créez une tâche qui prend un instantané Statspack après un intervalle de temps donné. Par exemple, la tâche suivante crée un instantané Statspack chaque heure :

      VARIABLE jn NUMBER; exec dbms_job.submit(:jn, 'statspack.snap;',SYSDATE,'TRUNC(SYSDATE+1/24,''HH24'')'); COMMIT;
  3. Affichez les instantanés à l'aide de la requête suivante :

    SELECT SNAP_ID, SNAP_TIME FROM STATS$SNAPSHOT ORDER BY 1;
  4. Exécutez la procédure Amazon RDS rdsadmin.rds_run_spreport, en remplaçant begin_snap et end_snap par les ID d'instantané :

    exec rdsadmin.rds_run_spreport(begin_snap,end_snap);

    Par exemple, la commande suivante crée un rapport basé sur l'intervalle entre les instantanés Statspack 1 et 2 :

    exec rdsadmin.rds_run_spreport(1,2);

    Le nom de fichier du rapport Statspack inclut le numéro des deux instantanés. Par exemple, un fichier de rapport créé à l'aide des instantanés Statspack 1 et 2 se nommera ORCL_spreport_1_2.lst.

  5. Surveillez la sortie pour détecter des erreurs.

    Oracle Statspack effectue des vérifications avant d'exécuter le rapport. Par conséquent, vous pouvez également voir des messages d'erreur dans la sortie de la commande. Vous pouvez par exemple essayer de générer un rapport basé sur une plage non valable, dans laquelle la valeur de l'instantané Statspack de début est supérieure à la valeur de fin. Dans ce cas, la sortie affiche le message d'erreur, mais le moteur de base de données ne génère pas de fichier d'erreur.

    exec rdsadmin.rds_run_spreport(2,1); * ERROR at line 1: ORA-20000: Invalid snapshot IDs. Find valid ones in perfstat.stats$snapshot.

    Si vous utilisez un numéro erroné d’instantané Statspack, la sortie affiche une erreur. Par exemple, si vous essayez de générer un rapport pour les instantanés 1 et 50, mais que l'instantané 50 n'existe pas, la sortie affiche une erreur.

    exec rdsadmin.rds_run_spreport(1,50); * ERROR at line 1: ORA-20000: Could not find both snapshot IDs
  6. (Facultatif)

    Pour récupérer le rapport, appelez les procédures du fichier de trace, selon les explications de la section Utilisation des fichiers de trace Oracle.

    Vous pouvez également télécharger le rapport Statspack depuis la console RDS. Accédez à la section Journal des détails de l'instance de base de données et choisissez Télécharger :

    Si une erreur se produit lors de la génération d'un rapport, le moteur de base de données utilise les mêmes conventions de dénomination que pour un rapport, mais avec une extension .err. Par exemple, si une erreur s'est produite lors de la création d'un rapport à l'aide des instantanés Statspack 1 et 7, le fichier de rapport sera nommé ORCL_spreport_1_7.err. Vous pouvez télécharger le rapport d'erreurs en utilisant les mêmes techniques que pour un rapport d'instantané standard.

Suppression de fichiers Statspack

Pour supprimer les fichiers Oracle Statspack, utilisez la commande suivante :

exec statspack.purge(begin snap, end snap);