FirebirdSQL logo

Firebird offre la possibilité de surveiller le fonctionnement côté serveur d’une base de données particulière.Des tableaux de suivi sont utilisés à cet effet. Les tables de surveillance sont préfixées par le nom MON$. Ces tables sont virtuelles dans le sens où aucune donnée n’y est écrite avant que l’utilisateur n’y accède.Elles ne sont remplies de données qu’au moment de la demande de l’utilisateur (y compris, donc, sur de telles tables il est inutile d’essayer de créer des triggers). En même temps, les descriptions de ces tables sont toujours présentes dans la base de données.

Le concept clé de la fonction de surveillance est un instantané de l’activité.Un instantané est l’état actuel d’une base de données contenant de nombreuses informations sur la base de données elle-même, les connexions actives, les utilisateurs, les transactions, les requêtes préparées et exécutées, etc.

Un instantané est créé lors de la première extraction d’une table de surveillance et est stocké jusqu’à la fin de la transaction en cours, de sorte que les requêtes portant sur plusieurs tables (par exemple, maître-détail) renverront toujours des données cohérentes.

En d’autres termes, les tables de surveillance se comportent comme des transactions SNAPSHOT TABLE STABILITY (isc_tpb_consistency), même si les requêtes sur ces tables sont effectuées dans une transaction avec un niveau d’isolation inférieur.

Pour mettre à jour l’instantané, la transaction en cours doit être interrompue et les tables de surveillance doivent être interrogées dans le nouveau contexte de transaction.

Sécurité : * L’accès complet à toutes les informations fournies par les tables de surveillance est disponible pour SYSDBA et le propriétaire de la base de données ;
  • Les utilisateurs normaux sont limités aux informations concernant leurs propres connexions, les autres connexions leur sont invisibles.

Note

La collecte fréquente d’informations à l’aide de tableaux de surveillance dans un environnement fortement chargé peut avoir un impact négatif sur les performances du système.

Tables de suivi
MON$ATTACHMENTS

Informations sur les connexions actuelles de la base de données.

MON$CALL_STACK

Accès aux piles par des requêtes actives de procédures stockées et de déclencheurs.

MON$CONTEXT_VARIABLES

Informations sur les variables de contexte de l’utilisateur.

MON$DATABASE

Détails de la base de données à laquelle la connexion a été établie.

MON$IO_STATS

Statistiques d’E/S.

MON$MEMORY_USAGE

Statistiques d’utilisation de la mémoire.

MON$RECORD_STATS

Statistiques au niveau des enregistrements.

MON$STATEMENTS

Les opérateurs se sont préparés à la mise en œuvre.

MON$TABLE_STATS

Statistiques au niveau de la table.

MON$TRANSACTIONS

Début des transactions.

MON$ATTACHMENTS

Informations sur les connexions actuelles à la base de données.

Table 1. Description des colonnes de la table MON$ATTACHMENTS
Nom de la colonne Type de données Description

MON$ATTACHMENT_ID

BIGINT

Identifiant

MON$SERVER_PID

INTEGER

L’identifiant du processus du serveur.

MON$STATE

SMALLINT

État de la connexion :

  • 0 — inactif ;

  • 1 — actif.

MON$ATTACHMENT_NAME

VARCHAR(255)

La chaîne de connexion est le chemin complet du fichier et le nom du fichier de la base de données primaire.

MON$USER

CHAR(63)

Le nom de l’utilisateur connecté à la base de données.

MON$ROLE

CHAR(63)

Le nom du rôle spécifié lors de la connexion. Si aucun rôle n’a été spécifié au moment de la connexion, le champ contient le texte NONE.

MON$REMOTE_PROTOCOL

VARCHAR(10)

Le protocole réseau utilisé.

MON$REMOTE_ADDRESS

VARCHAR(255)

Adresse du client distant.

MON$REMOTE_PID

INTEGER

L’identifiant du processus client.

MON$CHARACTER_SET_ID

SMALLINT

L’identifiant du jeu de caractères dans la connexion.

MON$TIMESTAMP

TIMESTAMP

Date et heure du début de la connexion.

MON$GARBAGE_COLLECTION

SMALLINT

Indicateur de collecte des ordures (spécifié dans les DPB lors de la connexion) :1 - autorisé, 0 - non autorisé.

MON$REMOTE_PROCESS

VARCHAR(255)

Le chemin d’accès complet au fichier et le nom du logiciel qui a établi la connexion.

MON$STAT_ID

INTEGER

Identificateur statistique.

MON$CLIENT_VERSION

VARCHAR(255)

Version de la bibliothèque du client.

MON$REMOTE_VERSION

VARCHAR(255)

Version du protocole réseau.

MON$REMOTE_HOST

VARCHAR(255)

Nom d’hôte du client distant.

MON$REMOTE_OS_USER

VARCHAR(255)

Nom d’utilisateur dans le système d’exploitation du client.

MON$AUTH_METHOD

VARCHAR(255)

La méthode d’authentification utilisée lors de la connexion.

MON$SYSTEM_FLAG

SMALLINT

Indicateur que la connexion est une connexion système :

  • 0 — connexion de l’utilisateur ;

  • 1 — connexion au système.

MON$IDLE_TIMEOUT

INTEGER

Délai d’inactivité de la connexion au niveau de la connexion. Contient la valeur du délai d’inactivité du niveau de connexion, en secondes. Si le délai n’est pas défini — 0.

MON$IDLE_TIMER

TIMESTAMP

L’heure d’expiration de la minuterie d’inactivité. Contient NULL si aucun délai d’inactivité de la connexion n’a été défini, ou si aucune minuterie n’est en cours.

MON$STATEMENT_TIMEOUT

INTEGER

Délai d’attente pour les instructions SQL au niveau de la connexion. Contient la valeur du délai d’attente défini au niveau de la connexion, en millisecondes. Si le délai n’est pas défini — 0.

MON$WIRE_COMPRESSED

BOOLEAN

Si la compression du trafic réseau est utilisée. Si la compression du trafic réseau est utilisée, la valeur est TRUE, sinon FALSE. Pour les connexions embarquées, elle renvoie NULL.

MON$WIRE_ENCRYPTED

BOOLEAN

Si le cryptage du trafic réseau est utilisé. Si le cryptage du trafic réseau est utilisé, la valeur est TRUE, sinon FALSE. Pour les connexions embarquées — renvoie NULL.

MON$WIRE_CRYPT_PLUGIN

CHAR(63)

Nom du plugin de cryptage du trafic réseau actuel, s’il est utilisé, sinon NULL.

MON$SESSION_TIMEZONE

CHAR(63)

Le fuseau horaire actuel de la connexion.

MON$PARALLEL_WORKERS

INTEGER

Nombre maximal de flux de travail simultanés pour cette connexion. 1 signifie qu’il n’y a pas de flux de travail simultanés.Les connexions Garbage Collector et Cache Writer peuvent indiquer 0.

Example 1. Obtenir des informations sur les applications clientes
SELECT MON$USER, MON$REMOTE_ADDRESS, MON$REMOTE_PID, MON$TIMESTAMP
FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID <> CURRENT_CONNECTION