Recherche…


Remarques

Avec Firebird 2.1 et les bases de données avec ODS 11.1 (et supérieur), Firebird permet de surveiller les activités côté serveur qui se produisent dans une base de données particulière.

La surveillance complète de la base de données est disponible pour SYSDBA et le propriétaire de la base de données. Les utilisateurs réguliers sont limités aux informations sur leurs propres pièces jointes uniquement - les autres pièces jointes leur sont invisibles.

Tables de surveillance disponibles depuis Firebird 2.1 et ODS 11.1:

  • MON $ DATABASE (base de données connectée)
  • MON $ ATTACHMENTS (pièces jointes connectées)
  • MON $ TRANSACTIONS (transactions démarrées)
  • MON $ STATEMENTS (états préparés)
  • MON $ CALL_STACK (pile d'appels de requêtes PSQL actives)
  • MON $ IO_STATS (statistiques I / O)
  • MON $ RECORD_STATS (statistiques au niveau de l'enregistrement)

Référence: Notes de version de Firebird 2.1

Avec Firebird 2.5 et les bases de données avec ODS 11.2 (et supérieur), Firebird ajoute les nouvelles tables de surveillance suivantes

  • MON $ MEMORY_USAGE (utilisation actuelle de la mémoire)
  • MON $ CONTEXT_VARIABLES (variables de contexte connues)

Référence: Notes de version de Firebird 2.5

Obtenir des informations sur les pièces jointes dans la base de données connectée

Informations sur les connexions à la base de données

SELECT
       a.mon$attachment_id as Attachment_ID,
       a.mon$server_pid as Server_PID, 
       case a.mon$state 
          when 1 then 'active'
          when 0 then 'idle'
       end as State, 
       a.mon$attachment_name as Database_Name, 
       a.mon$user as User_Name, 
       a.mon$role as Role_Name, 
       a.mon$remote_protocol as Remote_Protocol, 
       a.mon$remote_address as  Remote_Address, 
       a.mon$remote_pid as Remote_PID, 
       cs.rdb$character_set_name as Connection_Character_Set, 
       a.mon$timestamp as Established_At,
       case a.mon$garbage_collection 
          when 1 then 'allowed'
          when 0 then 'not allowed'
       end as Garbage_Collection, 
       a.mon$remote_process as Remote_Process, 
       a.mon$stat_id as Statistics_ID
    FROM
       mon$attachments a, rdb$character_sets cs
    where 
       (a.mon$character_set_id = cs.rdb$character_set_id)

Résultats:

entrer la description de l'image ici

Exemples plus spécifiques

Informations sur les clients connectés.

SELECT
   a.mon$remote_protocol as Remote_Protocol,
   a.mon$remote_address as  Remote_Address,
   a.mon$remote_pid as Remote_PID,
   a.mon$timestamp as Established_At,
   a.mon$remote_process as Remote_Process
FROM
   mon$attachments a

Récupérer les PID de tous les processus serveur chargeant le CPU pour le moment (intéressant avec une architecture Classic Server)

SELECT
   MON$SERVER_PID
FROM
   MON$ATTACHMENTS
WHERE
   MON$STATE = 1

Récupérer des informations sur les utilisateurs connectés, les postes de travail et les applications client

SELECT
   mon$attachment_name as Database_Name,
   mon$user as User_Name,
   mon$role as Role_Name,
   mon$remote_process as Client_Application,
   mon$remote_address as Client_IP,
   mon$remote_pid as Client_Application_PID
FROM
   mon$attachments

Référence:



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow