API d.side Replay

par | Août 24, 2022 | Trucs et Astuces

Introduction

Les données collectées par le job de capture de Replay via la procédure DSIDE_REPLAY.GATHER sont habituellement exploitées par d.side Interactive Replay.

Elles sont également faciles à transmettre via les outils d’export / import fournis.

Désormais, on peut même exploiter ces données sans passer par l’interface Replay.
En effet, le package PL/SQL DSIDE_REPLAY_API fournit des fonctions permettant d’extraire les données collectées dans le schéma Replay.

La plupart de ces fonctions renvoient une liste de (SNAPSHOT, VALUE) qui peuvent ainsi facilement être exploitées directement en SQL ou par des outils tiers d’analyse.

Installation

Pour accéder à l’API il suffit de créer le package DSIDE_REPLAY_API à l’aide du script dsreplay_api.sql fourni sur demande à notre équipe support.

SQL> @dsreplay_api.sql
Package dropped.

Type dropped.

Type dropped.

Type created.

Type created.

Package created.

Package body created.

SQL>

Extraction de données à l’aide de l’API

Utilisation de l’API via des requêtes SQL

Une fois le package DSIDE_REPLAY_API créé, on a accès à de nombreuses fonctions permettant d’explorer ce qui a été collecté.
Voici trois exemples d’utilisation.

Pic de CPU atteint sur la machine au cours des 3 derniers jours :

SELECT MAX(VALUE) FROM TABLE(DSIDE_REPLAY_API.GET_HOST_CPU)
WHERE SNAP_DATE>SYSDATE-3;

Nombre de requêtes exécutées par heure, sur les 24 dernières heures :

SELECT to_char(snap_date, 'YYYYMMDDHH24'), sum(VALUE)
FROM TABLE(DSIDE_REPLAY_API.GET_EXECUTE_COUNT)
WHERE SNAP_DATE>SYSDATE-1
GROUP BY to_char(snap_date, 'YYYYMMDDHH24')
ORDER BY to_char(snap_date, 'YYYYMMDDHH24');

“TOP 10” des requêtes les plus consommatrices sur les 7 derniers jours :

column minsnap new_value beginsnap;
SELECT MIN(SNAP_ID) minsnap FROM TABLE(DSIDE_REPLAY_API.GET_SNAPS_LIST) WHERE SNAP_DATE>SYSDATE-7;
SELECT * FROM TABLE(DSIDE_REPLAY_API.GET_PERIOD_QUERIES(limit=>10, begin_snap=>&beginsnap));

Interface avec des outils tiers

Nous venons de voir comment il est très simple d’exploiter en SQL les données collectées.
Il est également possible de confier le résultat de ces extractions à des outils tiers.
Par exemple pour injecter les données collectées dans une base destinée à grafana, afin de produire des graphiques avec vos outils habituels.

Services REST

Enfin, de la même manière, il est possible d’interfacer l’API d.side avec une architecture REST.
Pour cela Oracle propose par exemple ORDS (Oracle REST Data Services) : https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/index.html

Remarque : l’utilisation de l’API d.side nécessite une version minimale d’Oracle. Le schéma de collecte Replay doit avoir été créé sur une base en Oracle 11g ou supérieure. Elle n’est donc pas compatible avec Oracle 10g.