Reports nach einem Update auf 8.00A umsetzen
Reports von Aufgaben, Agenten, Serverprozesse usw. füllen den Großteil der Datenbank. Beim Datenbank-Update von Automation Engine-Version 6.00A auf 8.00A werden diese Daten speziell umgesetzt. Dies kann, abhängig von der Datenmenge, eine Zeitdauer von mehreren Stunden in Anspruch nehmen. Um ihr System durch das Update nicht so lange abschalten zu müssen, besteht die Möglichkeit die Reports erst nachträglich zu kopieren. Ihr System muss dazu nicht mehr heruntergefahren werden.
Das nachträgliche Kopieren der Report-Daten ist nur für MS SQL Server und Oracle - Datenbanken möglich! Beachten Sie, dass ILM nicht aktiviert sein darf, und dass die Rechner, auf denen die Datenbank-Scripts und die Datenbank laufen, nicht abgeschaltet sein dürfen.
Weiters ist das nachträgliche Umsetzen der Reports nur bei einem Datenbank-Update auf die Version 8.00A möglich! Bei einem Umstieg von Version 6.00A auf 9.00A sind die Reportdaten während des Updatevorgangs umzusetzen!
Wichtiger Hinweis: Während des gesamten Ablaufes darf die Datenbank nicht reorganisiert werden!
Führen Sie die Update-Installation unbedingt nach folgender Anleitung Update eines Automation Engine Systems bis zu dem Schritt "Update der Datenbank" durch.
Für die nachfolgenden Schritte ist es notwendig, Befehle auf der Datenbank manuell auszuführen und sollten daher nur von einem Datenbank-Administrator oder mit dessen Hilfe durchgeführt werden. Dazu wird ein Datenbankbenutzer mit entsprechenden Berechtigungen benötigt, die Sie im Kapitel Datenbank einrichten finden. Wählen Sie den entsprechenden Datenbank-Typ aus und wechseln Sie zum Abschnitt "Datenbank-Benutzer anlegen" bzw. "Definition eines AE-Benutzers". Wichtig ist vor allem die Berechtigung Stored Procedures ausführen zu dürfen!
Sie haben auch die Möglichkeit, ein Update ohne Reports durchzuführen und diese zu löschen. Führen Sie dazu nur Punkt 1 durch und löschen Sie anschließend die Tabellen RH_OLD und RT_OLD. Beachten Sie jedoch, dass ihre Report-Daten nicht mehr hergestellt werden können!
Ablauf
|
1.
|
Vor dem Update der Datenbank |
- Wechseln Sie in das Verzeichnis \db\general\8.00A
-
Das DB-Verzeichnis wird in IMAGE:DB ausgeliefert und muss sich parallel zum BIN-Verzeichnis der Dienstprogramme befinden.
- Öffnen Sie die Datei UC_UPD.TXT
- Ändern Sie die Zeile "process_sql_file do_report.sql" zu "message process_sql_file do_report.sql" Dadurch werden die Reports (ausgenommen von Agenten) während des Update-Vorgangs nicht umgesetzt.
Die Reports von Agenten werden bereits mit den Anweisungen der Datei "switch_report.sql" umgesetzt. Ein nachträgliches Ändern dieser Daten würde nach dem Agenten-Start dazu führen, dass auf frühere Reports nicht mehr zugegriffen werden kann.
- Starten Sie das Dienstprogramm AE DB Load und wählen Sie die Datei UC_UPD.TXT aus (siehe Update eines Automation Engine Systems - Update der Datenbank). Das Datenbank-Update wird nun durchgeführt.
- Führen Sie anschließend die restlichen Schritte der Update-Installationsanleitung bis zum Schluss durch.
|
2.
|
Umsetzen der Reports nach dem AE-Update |
-
Achtung: Überprüfen Sie vor dem Umsetzen der Reports, ob genug Speicherplatz zur Verfügung steht und die Tabellen RT/RH ein zweites Mal in die Datenbank passen! RH speichert die Reportsätze und RT den Reporttext.
- Melden Sie sich an der Datenbank mit dem angelegten Benutzer an, der alle erforderlichen Rechte besitzt.
- Nun ist der Inhalt der zuvor ausgelassen Datei "do_report.sql" manuell durchzuführen, welche für die Umsetzung der Reportdaten verantwortlich ist. Dies umfasst zwei Stored Procedures die durch das Script "switch_report.sql" angelegt wurden.
- Führen Sie zuerst die Stored Procedure UC_PREPARE_COPY_REP mit folgendem Befehl aus:
Oracle: EXECUTE UC_PREPARE_COPY_REP;
MS SQL Server: exec UC_PREPARE_COPY_REP
Dadurch werden die temporären Tabellen RH_TEMP und RH_TEMP2 angelegt. RH_TEMP wird mit dem Inhalt von der Tabelle RH_OLD befüllt, welche die Original-Report-Sätze speichert. Aus RH_TEMP werden alle Sätze für Agenten gelöscht, die bereits durch die Stored Procedures UC_GET_LAST_AGENT_LOG und UC_WRITE_LAST_AGENT_LOG umgesetzt wurden.
- Als nächstes ist die Stored Procedure UC_WRITE_OLD_REP aufzurufen. Als Parameter sind die Anzahl der Sätze, die auf einmal kopiert werden sollen, und die anschließende Wartezeit in Sekunden anzugeben.
Für Oracle: EXECUTE UC_WRITE_OLD_REP(10000,1);
MS SQL Server: exec UC_WRITE_OLD_REP '10000', '00:00:01'
Dadurch werden nun immer die ersten 10000 Sätze von RH_TEMP in die Tabelle RH_TEMP2 geladen. Danach werden diese Sätze von RH_OLD / RT_OLD nach RH / RT kopiert, die bereits das neue Schema der Version 8.00A besitzen. Anschließend löscht die Prozedur die geschriebenen Sätze aus den temporären Tabellen. Tritt kein Fehler auf, so läuft diese Prozedur solange bis alle Daten kopiert wurden.
|
3.
|
Ablauf bei "ah for rh not found" - Fehler |
-
Die Repair-Prozeduren können nur durchgeführt werden, wenn Sie die Reports nachträglich manuell umsetzen!
Folgende Schritte sind durchzuführen, wenn es bei der Stored Procedure UC_WRITE_OLD_REP zu folgender Fehlermeldung kommt: "ah for rh not found - use repair procedures"
- Führen Sie die Stored Procedure UC_REPAIR_FK_RH auf der Datenbank aus:
Oracle: EXECUTE UC_REPAIR_FK_RH;
MS SQL Server: exec UC_REPAIR_FK_RH
aufrufen zu können
Damit werden aus der Tabelle RH_TEMP alle Sätze gelöscht, die es nicht mehr in der Statistik (AH) gibt.
- Nun ist folgender Befehl erneut aufzurufen:
Oracle: EXECUTE UC_WRITE_OLD_REP(10000,1);
MS SQL Server: exec UC_WRITE_OLD_REP '10000', '00:00:01'
aufrufen zu können
- Diese Schritte sind bei erneutem Auftreten des Fehlers zu wiederholen.
|
4.
|
Ablauf bei "rh for rt not found" - Fehler |
Folgende Schritte sind durchzuführen, wenn es bei der Stored Procedure UC_WRITE_OLD_REP zu folgender Fehlermeldung kommt: "rh for rt not found - use repair procedures"
- Ausführen der Stored Procedure UC_REPAIR_FILL_TEMP2. Als Parameter ist die Anzahl der Sätze anzugeben, die bereits bei UC_WRITE_OLD_REP verwendet wurde.
Oracle: EXECUTE UC_REPAIR_FILL_TEMP2(10000);
MS SQL Server: exec UC_REPAIR_FILL_TEMP2 10000
Die temporäre Tabelle RH_TEMP2 wird nun mit den Sätzen befüllt, bei denen es zum Abbruch gekommen ist.
- Führen Sie folgendes Kommando aus:
Für Oracle: EXECUTE UC_REPAIR_FK_RT_ANY_DUPL;
MS SQL Server: exec UC_REPAIR_FK_RT_ANY_DUPL
Fehlerhafte Sätze der Tabelle RH_TEMP2 werden aus RT/RH gelöscht. Anschließend wird die Tabelle RH_TEMP2 geleert.
- Nun ist folgender Befehl erneut aufzurufen:
Oracle: EXECUTE UC_WRITE_OLD_REP(10000,1);
MS SQL Server: exec UC_WRITE_OLD_REP '10000', '00:00:01'
aufrufen zu können
- Diese Schritte sind bei erneutem Auftreten des Fehlers zu wiederholen.
|
5.
|
Löschen der temporären Tabellen |
- Wurde der Vorgang erfolgreich abgeschlossen (Stored Procedure UC_WRITE_OLD_REP), können die temporären Tabellen aus der Datenbank gelöscht werden. Dies ist wichtig, um Speicherplatz zu schaffen.
- In der Datei "do_report.sql" finden Sie einige auskommentierte DROP-Befehle. Entfernen Sie das Kommentar und führen Sie diese Zeilen manuell auf der Datenbank aus.
- Dabei handelt es sich um die folgenden:
Oracle:
drop table ah_temp;
drop table rh_temp;
drop table rh_temp2;
drop table rt_old;
drop table rh_old;
MS SQL Server:
drop table ah_temp
GO
drop table rh_temp
GO
drop table rh_temp2
GO
drop table rt_old
GO
drop table rh_old
GO
Ablaufdiagramm des kompletten Vorgangs