Trace auf Benutzer

Forum für Fragen zu Firebirdeigenen Dienstprogrammen wie isql, gbak, nbackup, gfix, etc.

Moderator: martin.koeditz

Antworten
Benutzeravatar
martin.koeditz
Beiträge: 474
Registriert: Sa 31. Mär 2018, 14:35

Guten Morgen,

derzeit beschäftige ich mich viel mit dem Trace-Tool. Allerdings habe ich das Problem, unter vielen Ausgaben auf dem Produktiv-System, die korrekten Statements zu finden. Ist es möglich die Trace-Ausgaben auf einen Benutzer zu filtern?

Gruß
Martin
Martin Köditz
it & synergy GmbH
mclemens
Beiträge: 6
Registriert: Mo 16. Apr 2018, 11:05

Guten Tag,

auf einen Benutzer habe ich nichts gefunden, nur auf eine Connection_id.

https://firebirdsql.org/rlsnotesh/rnfb2 ... race-oview

Vielleicht hilft dieses weiter.

Gruß
Micha
vr2
Beiträge: 239
Registriert: Fr 13. Apr 2018, 00:13

Hallo zusammen,

was willst Du mit dem trace denn herausfinden? Slow-Log? Auslastung über den Tag verteilt?

Grüße, Volker
Benutzeravatar
martin.koeditz
Beiträge: 474
Registriert: Sa 31. Mär 2018, 14:35

Hi Volker,

da auf dem Produktivsystem jede Menge Benutzer parallel arbeiten und so jede Menge Abfragen durchlaufen, ist es schwer einen spezifischen Workflow zu verfolgen. Ich möchte also einen Trace meiner Tätigkeiten abfangen. Wenn da noch tausend andere Abfragen aufgelistet werden, hast du verloren. ;)

Gruß
Martin
Martin Köditz
it & synergy GmbH
vr2
Beiträge: 239
Registriert: Fr 13. Apr 2018, 00:13

Hi Martin,

hast Du eine eigene connection beim Test? Dann limitiere das tracelog über den Parameter connection_id in der fbtrace.conf.

Gruß Volker
mclemens
Beiträge: 6
Registriert: Mo 16. Apr 2018, 11:05

Hallo Volker,

genau dieses habe ich ja in meinem Eintrag beschrieben.

In IB Expert habe ich auch nichts auf einen User gefunden.

Hier ist auch nur die Connection_Id vorgegeben.

Die Connection_ID( Attachment_ID) findet man in mon$attachments.
Hier dann bitte nach Remote_Process schauen und Anhand der Remote_Address die Attachemnt_ID ermitteln.

z.B. in Dialect1
SELECT a.mon$attachment_id as Attachment_ID,
a.mon$server_pid as Server_PID,
a.mon$state as State,
a.mon$attachment_name as Attachment_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 Character_Set,
a.mon$timestamp as Established_At,
a.mon$garbage_collection 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)



mfg Micha
bfuerchau
Beiträge: 541
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Am besten ist es, die Trace-API's innerhalb der Anwendung zu benutzen, da man dann gezielter mit seiner Connection-ID umgehen kann:

https://firebirdsql.org/file/documentat ... i-svctrace

Beim Start des Traces kann man die Konfigurationsdatei dann vorgeben, die die aktuelle Connection-ID dann enthält.
Wichtig ist natürlich, dass diese Id mit jedem Open der Connection geändert wird.

Mit "select current_connection from rdb$database" bekommt man seine aktuelle Id für das Setzen in der Tracekonfiguration mit anbschließendem Aufruf der Trace-API's.
Antworten