Announcement

Collapse
No announcement yet.

sweep oder backup und restore

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • sweep oder backup und restore

    Gibt es eine Möglichkeit über Databasesweep den Abstand zwischen OAT und OIT zu verkleinern oder hilft da nur ein Backup und Restore der Datenbank? Beim Versuch mit der TIBValidationService bleibt die OAT immer gleich und die Oldest Transaction wird um eins größer (während dem Sweep besteht sonst keine Datenbankverbindung).
    Dank für jegliche Hinweise der mir hilft das OAT nachzuziehen ohne Backup Restore der Datenbank.
    Tschau Andreas

  • #2
    Hallo Andreas,
    wenn Du Dir sicher bist, dass Du exklusiven Zugriff zur Datenbank hattest und trotzdem die OAT und OIT nicht wirklich nachgefahren werden, dann könnten die folgenden Dinge möglicherweise der Grund sein:
    <br><br>
    - Eine (ältere) Transaktion befindet sich im Status <b>Limbo</b>. Dies kann dann der Fall sein, wenn bei einem Two-Phase-Commit etwas schief geht. Ob sich eine Transaktion in Limbo befindet, kannst Du mit <b>gfix.exe -l dbname</b> herausfinden
    <br><br>
    - Phantomverbindungen. Dies sind offene Verbindungen, aufgrund von Clientabstürzen, die vom Server noch nicht beendet wurden. Soviel ich weiß, InterBase 7.x wurde hier erheblich besser, was das Erkennen und Beenden von diesen Phantomverbindungen angeht.
    <br><br>
    Die Hammermethode, um mit einem exklusiven Zugriff zu starten, wäre das Herunterfahren des InterBase Servers. Danach wieder Starten und das Sweep ausführen.
    <br><br>
    Schöne Grüße,
    <br>
    Thoma
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Erst einmal Dank für die Antwort. Das Sweep hat doch funktioniert nur das halt nicht wie erwartet die Transaktionsnummern von oldest TR, oldest aktiver, oldest snapshot und next TR nur um 1 auseinander liegen sondern so ca 70. Beim Testen hatte ich eine "saubere" DB da war keine Reaktion erkennbar. Nun eine andere Frage. Möglicherweise habe ich noch einen Denkfehler wenn es darum geht aus der DB-Statistik die Transaktionsnummern richtig zuzuordnen. OAT ist die "oldest active", dann müßte OIT die "oldest Transaction" sein oder nicht?
      Was passiert eigentlich wenn das automatische Sweep startet, etliche User in der Datenbank eingeloggt sind und das ganze nichts bringt, so dass die Differenz zwischen "oldest transaction" und "oldest activer" über 20.000 bleibt (war aktuell 100.000)? Wann startet dann das nächste automatische Sweep?
      Gruß Andrea

      Comment


      • #4
        Hallo Andreas,
        <br><br>
        sorry für die verspätete Rückmeldung.<br><br>
        &gt; OAT ist die "oldest active", dann müßte OIT die "oldest Transaction" sein oder nicht?
        <br><br>
        Richtig.
        <br><br>
        &gt; Was passiert eigentlich wenn das automatische Sweep startet, etliche User in der Datenbank eingeloggt sind und das ganze nichts bringt, so dass die Differenz zwischen "oldest transaction" und "oldest activer" über 20.000 bleibt (war aktuell 100.000)? Wann startet dann das nächste automatische Sweep?
        <br><br>
        Gute Frage. Kann ich Dir leider nicht beantworten. Ich hoffe zumindest nicht, dass dann dauernd ein Sweep ausgeführt wird. Persönlich verwende ich die Taktik, das Sweepintervall auf 0 zu setzen (automatisches Sweep deaktivieren) und ein manuelles Sweep in der Nacht zu machen.
        <br><br>
        Schöne Grüße,
        <br>
        Thoma
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment


        • #5
          Danke für die Antwort. Mein Ziel ist es jetzt das Sweep per autonomen Serviceprogramm (auf dem Server) in der Nacht automatisch durchzuführen. Bleibt nur der Gedanke an die Phantomverbindungen. Kann mit einer der InterBase Adminkomponenten oder auf einem anderen Weg der Interbase Server per Programm gestoppt und wieder neu gestartet werden? Dann dürfte einem Sweep nichts mehr im Wege stehen. Verwendet wird IB 6.5 und Delphi 5.

          Gruß Andrea

          Comment


          • #6
            Hallo Andreas,
            <br><br>
            &gt; Mein Ziel ist es jetzt das Sweep per autonomen Serviceprogramm (auf dem Server) in der Nacht automatisch durchzuführen.
            <br><br>
            Das autonome Serviceprogramm könnte eine Mischung aus <b>AT</b> (Windows NT/2000/XP/2003) bzw. <b>cron</b> (Linux) und dem InterBase-Kommandozeilentool <b>gfix.exe</b> sein.
            <br><br>
            &gt; Kann mit einer der InterBase Adminkomponenten oder auf einem anderen Weg der Interbase Server per Programm gestoppt und wieder neu gestartet werden?
            <br><br>
            Ich weiß jetzt nicht auswendig, aber mit <b>TIBConfigService</b> kannst Du nur eine Datenbank herunterfahren (ich weiß nicht, ob damit etwaige Phantomverbindungen auch gekappt werden!) aber nicht den kompletten InterBase Server. Läuft der InterBase Server als Dienst, dann kannst Du <b>net stop</b> verwenden. Achtung: Auch andere Anwendungen könnten InterBase verwenden, d.h. dies sollte mit äußerster Vorsicht verwendet werden.
            <br><br>
            Schöne Grüße,
            <br>
            Thoma
            Thomas Steinmaurer

            Firebird Foundation Committee Member
            Upscene Productions - Database Tools for Developers
            Mein Blog

            Comment


            • #7
              Danke für den Tip mit net Stop, das funktioniert super. Das Serviceprogramm habe ich schon fertig und das Stopen des IB-Server auf dem W2000-Server nachts um 2.00 Uhr sollte sicher auch nicht das Problem sein, andere Programme auf IB-Basis auser unseren laufen nicht bei dem Kunden, das wüßte ich, da der Kunden schon über 5 Jahre unsere Software nutzt und ich halbjährlich vor Ort bin.

              Gruß Andrea

              Comment

              Working...
              X