Im August bekam ich eine Mail von Stefan, einem ehemaligen Teilnehmer an meinem AE Database Knowledge Workshop. Er bedankte sich bei mir, denn ich hatte ihm – ohne es zu wissen – bei der Lösung eines Problems geholfen.

Im Unternehmen, in dem Stefan arbeitet, kam es zu einer großen Umstellung. Dadurch wurden auf einen Schlag viele Agenten im AE-System nutzlos. Diese zu identifizieren und zu löschen, ist selbst für erfahrene Nutzer der Automation Engine eine Herausforderung. Stefan hatte sich aber unter diesem Link für meinen Newsletter angemeldet und dadurch alle meine alten Blogartikel erhalten. Darunter auch einen Artikel zu Unused Agents, inklusive eines nützlichen kleinen Scripts, um nicht mehr benötigte Agenten zu identifizieren.

Diese Geschichte habe ich zum Anlass genommen, den Artikel neu zu veröffentlichen und gleichzeitig das Skript noch schneller zu machen.

Wo sich Agenten in der Datenbank befinden

Agenten können in vielen verschiedenen Objekten verwendet werden:

  • Jobs – Tabelle JBA, Feld JBA_HostDst
  • Filetransfer – Tabelle JFA, Felder JFA_HostSrc und JFA_HostDst
  • Events – Tabelle OEA, Felder OEA_HostDst, OEA_OP1_Host und OEA_OP2_Host
  • Queue Manager – Tabelle OQA, Feld OQA_HostDst
  • Dateilisten-VARA-Objekte – Tabelle OVD, Feld OVD_Host

Außerdem kann der Agent per Scripting, PromptSet oder Variablenvererbung gesetzt werden.

Kurz gesagt: Alle Agenten-Verwendungen in den Objektdefinitionen zu finden ist gar nicht so einfach.

Ich schlage stattdessen eine andere Lösung vor.

Script zur Identifizierung von Unused Agents

Statt die Objektdefinitionen danach zu durchsuchen, welche Agenten schon lange nicht mehr verwendet wurden, greift mein Script auf andere Daten zu: die Statistikdaten.

Dazu erstellt das Script zunächst eine Short-List von Agenten, die seit 30 Tagen nicht mehr benutzt wurden. Diese Liste deckt alle Agenten in Jobs, Filetransfers, Events und Queue Manger Objekten ab. Nur die Dateilisten-VARA-Objekte fehlen.

Für Stefan hat mein altes Script gut funktioniert. Ich habe es jetzt aber noch einmal überarbeitet und damit deutlich schneller gemacht. Die Datenbankabfrage sucht alle Agenten, bei denen der jüngste Statistiksatz einer Aufgabe mindestens 30 Tage alt ist oder für die es keine Statistiksätze von Aufgaben gibt.

--Agentname, Last modification date,
--and last time when a task (JOBS, JOBF or EVNT) was activated on this agent
select OH_Name, OH_ModDate, MAX(AH_TImestamp1) as LastActivation
from OH
--Filter in AH: Object types, and the Agent name as AH_HostSrc or AH_HostDst
left outer join AH on AH_OType in ('JOBS', 'JOBF', 'EVNT', 'JOBQ') and (OH_Name = AH_HostSrc or OH_Name = AH_HostDst)
where OH_DeleteFlag = 0
--Real Agents must have an entry in HACL
and exists (
  select 1
  from HACL
  where HACL_OH_Idnr = OH_IDNR
)
group by OH_Name, OH_ModDate
--There either is no statistic entry for tasks on this agent, or the oldest one is more than 30 days old
having MAX(AH_Timestamp1) is NULL
--or MAX(AH_TImestamp1) < dateadd(DAY,-30,GETUTCDATE()) --T-SQL
or MAX(AH_TImestamp1) < systimestamp at time zone 'UTC' -30 --Oracle
order by LastActivation;

Diese Abfrage gibt eine Short-List zurück. Bevor Sie die Agenten wirklich löschen, sollten Sie möglichst noch manuell verifizieren, dass sie tatsächlich nicht mehr benötigt werden.

Und was ist mit Dateilisten-VARAs?

Das Script funktioniert für Jobs, Filetransfers, Events und Queue Manager Objekte. Man kann damit aber nicht herausfinden, wann Dateilisten-VARAs zuletzt verwendet wurden.

Recht einfach kann man die letzte Verwendung von Dateilisten-VARAs herausfinden, wenn im Automic System die Einstellung LAST_USE aktiviert ist. Als Administrator kann man diese Einstellung unter UC_SYSTEM_SETTINGS auf dem Mandant 0000 setzen. Die letzte Nutzung von VARAs findet man dann in der Datenbank (Tabelle OH, Spalte OH_LastDate) und im Header Tab des Objekts (hier in der Automic Dokumentation).

Beachten Sie aber: Last Used wird mit einigen Minuten(!) Verzögerung aktualisiert. Ganz aktuelle Zugriffe finden Sie damit nicht.

Wenn die Einstellung Last Used nicht aktiviert ist, wird es schwieriger. Dann müssen Sie alle Objekte identifizieren, die eine VARA verwenden, und deren letzte Statistiksätze suchen. Das ist aufwendig – und obendrein ziemlich fehleranfällig.

Noch mehr Schätze zu entdecken

Im alten AutomicBlog kamen zwischen 2011 und 2016 über 60 Artikel zusammen. Von denen habe ich inzwischen einige neu aufgelegt, zum Beispiel die kurze Serie zu SQL Querying (hier geht es zu Teil 1 und Teil 2 der Serie). Einige weitere Artikel werde ich nach und nach neu auflegen.

Wenn Sie nicht warten wollen, oder einfach so in den alten Artikeln stöbern wollen, können Sie sie sich als Archiv herunterladen. Darin finden Sie zum Beispiel die folgenden Artikel:

  • UC4 and MS-Powershell (Teil 1 und 2)
  • Quit/Cancel all activities in one UC4 client
  • Statistics of UC4 jobs inside a certain folder

Vielleicht geht es Ihnen wie Stefan und einer der Artikel spart Ihnen eine Menge Zeit und Ärger.

Hier können Sie sich die Artikel herunterladen.