Close window

printed by () 05/08/2024 23:18:56
FAQ#: 1000514 / Tote Transaktionen
FAQ-Info:
Category: Deutsch::CADISON::01 - Administration::07 - Performance
Language: de
Votes: 0
Result: 0.00 %
Last update: 09/19/2022 10:53:46

Keywords: dead transaction

Symptom: (public)

Problem: (public)
Was sind tote Transaktionen?

Solution: (public)

Allgemein

Wird auf eine Datenbank zugegriffen, in dem diese z.B. im Engineer geöffnet wird, laufen im Hintergrund sogenannte Transaktionen ab. Diese Transaktionen werden von der Datenbank Engine (Versant), für den Anwender unsichtbar, gestartet, verwaltet und wieder geschlossen.

In seltenen Fällen kann es vorkommen, das Transaktionen nicht korrekt abgearbeitet und geschlossen werden können. In diesem Fall entsteht eine tote Transaktion in der Datenbank. Diese tote Transaktion kann die Performance erheblich beeinflussen, da Versant weiterhin versucht diese abzuarbeiten, dies aber nicht gelingt. Wenn festgestellt wird das eine Datenbank eine tote Transaktion enthält, muss diese bereinigt werden.

 

Tote Transaktion suchen

Um festzustellen, ob eine Datenbank eine tote Transaktion enthält, muss in der Datenbank gezielt nach einer toten Transaktion gesucht werden. Dazu...
  1. ...muss auf dem CADISON Server eine Cmd-Box (Als Administrator ausführen) gestartet werden
  2. Die Datei Group.flg (...\Database\<Datenbankname.prj>) mit einem Texteditor öffnen und prüfen, das der aktuell angemeldete Windows User, in der Datei eingetragen ist. 
  3. In diese wird Befehl "dbtool -trans -info <Datenbankname.prj>" eigeben. Wird z.B. in  der Defaultdatenbank eine tote Transaktion vermutet, muss "dbtool -trans -info defdb.def" eingegeben werden.

Enthält die Datenbank eine tote Transaktion, wird diese ausgegeben. Wenn eine Transaktion als "dead" gekennzeichnet ist, handelt es sich um eine tote Transaktion. Dabei kann die Datenbank eine tote Transaktion mit einer anderen Datenbank haben...

.
..oder eine tote Transaction mit sich selber.


Wenn die Datenbank keine tote Transaktion enthält, werden nur gültige Transaktionen ausgegeben. 


Wird vermutet das die Performance aufgrund einer toten Transaktion negativ beeinflusst wird sollten die Systemdatenbanken und die Projektdatenbank, die eventuell negativ augefallen ist überprüft werden. Das heißt...
  • defdb.def
  • sysdb.sys
  • <Projektdatenbankname.prj>
  sollten überprüft werden.

 

Tote Transaktion entfernen

Um eine tote Transaktion aus einer Datenbank zu entfernen, muss diese entweder abgearbeitet, oder zurückgesetzt werden. Alternativ kann auch eine Datenbanksicherung zurückgespielt werden.
 

Wenn die tote Transaktion in der Defaultdatenbank (defdb.def) enthalten ist:

  1. Muss auf dem CADISON Server eine Cmd-Box (Als Administrator ausführen) gestartet werden
  2. Die Datei Group.flg (...\Database\<Datenbankname.prj>) mit einem Texteditor öffnen und prüfen, das der aktuell angemeldete Windows User, in der Datei eingetragen ist. 
  3. Alle CADISON Anwendung, aller Anwender schließen
  4. In die CMD-Box "itftools -resolvedeadtransactions" eingeben und ausführen
  5. Prüfen ob die tote Transaktion beseitigt wurde
 

Wenn die tote Transaktion in einer anderen Datenbank als der Defaultdatenbank (defdb.def) gefunden wurde

Besteht die tote Transaktion in einer anderen Datenbank als der Defaultdatenbank, kann der Befehl "itftools -resolvedeadtransactions" nicht verwendet werden. Zuerst sollte geprüft werden, ob die tote Transaktion mit einer anderen Datenbank besteht (im Screenshot "Test_MSR01.prj").


Anschließend muss geprüft werden, ob die Datenbank, mit der die tote Transaktion besteht, exisitiert. Exisitiert die Datenbank, kann versucht werden die Datenbank mit der toten Transaktion per Cmd-Befehl
  1. ... zu stoppen "stopalldbs -d <Datenbankname.prj>"
  2. und zu starten "startalldbs -d <Datenbankname.prj>"
 
Existiert die Datenbank (im Screenshot "Test_MSR01.prj") nicht, kann versucht werden diese anzulegen. Dazu...
  1. ...muss auf dem CADISON Server eine Cmd-Box (Als Administrator ausführen) gestartet werden
  2. "makedb <Datenbankname.prj>" eingeben. In oben genannten Beispiel "makedb Test_MSR01.prj" 
  3. "createdb <Datenbankname.prj>" eingeben. In oben genannten Beispiel "createdb Test_MSR01.prj" 
  4. "stopalldbs -d <Datenbankname.prj>" eingeben
  5. "startalldbs -d <Datenbankname.prj>" eingeben
 



No of participants = 0

Kann die tote Transaktion nicht abgearbeitet werden, oder die tote Transaktion besteht mit sich selber, muss diese zurückgesetzt werden:


Hinweis! Zur Sicherheit, sollte eine Sicherung der Datenbank vorhanden sein, bevor die tote Transaktion zurückgesetzt wird.

Um die tote Transaktion zu entfernen, muss...
  1. ... auf dem CADISON Server eine Cmd-Box (Als Administrator ausführen) gestartet werden
  2. Die Datei Group.flg (...\Database\<Datenbankname.prj>) mit einem Texteditor öffnen und prüfen, das der aktuell angemeldete Windows User, in der Datei eingetragen ist. 
  3. Alle CADISON Anwendung, aller Anwender schließen
  4. In die CMD-Box "stopalldbs -d <Datenbankname.prj>" eingeben

    Wenn die Datenbank nicht per "stopalldbs -d <Datenbankname.prj>" gestoppt werden kann:
         4.1 "stopalldbs -d <Datenbankname.prj> -f" eingeben
         4.2 "startalldbs -d <Datenbankname.prj>" eingeben
         4.3 "stopalldbs -d <Datenbankname.prj>" eingeben
     
  5. Kopie des Datenbankordners <Datenbankname.prj> -> <Datenbankname.prj_Save> anlegen. Die Kopie kann nach erfolgreichen zurücksetzten der Datenbank gelöscht werden.
  6. Befehl "dbtool -trans -info <Datenbankname.prj>" ausführen und die Transaktion ID (TR_ID) der toten Transaktion notieren
  7. Als Beispiel, in dem Screenshot ist die Transaktion ID rot markiert "TR_ID=2.0.71265308". "checkdb -trans -repair -f -rollback <TR_ID> <Datenbankname.prj>" eingeben. Um die tote Transaktion aus dem Beispiel zu entfernen, müsste "checkdb -trans -repair -f -rollback 2.0.71265308 <Datenbankname.prj>" eingeben werden
  8. Anschließend sollte die Datenbank gestoppt und wieder gestartet werden.
    1. "stopalldbs -d <Datenbankname.prj>" eingeben
    2. "startalldbs -d <Datenbankname.prj>" eingeben
  9. Prüfen per "dbtool -trans -info <Datenbankname.prj>", ob die tote Transaktion beseitigt wurde.

 

Tote Transaktion kann nicht zurückgesetzt werden

Sollte das zurücksetzten der betroffenen Datenbank nicht funktionieren, muss eine Datenbanksicherung der Datenbank zurückgespielt werden. Alternative wege die tote Transaktion zurückzusetzten, wenn "checkdb" nicht funktioniert gibt es nicht. 




 

URL: http://cadison.org/cgi-bin/bin/cgi-bin/public.pl?Action=PublicFAQPrint;ItemID=514