Frage

In einem Oracle-Cluster (mehr als eine Maschine kooperierende eine Datenbank zu dienen) wird der „sysdate“ -Funktion immer eine konsistente Antwort zurückgeben? Selbst wenn das Betriebssystem Uhr Server meldet inkonsistente Werte?

War es hilfreich?

Lösung

Ich würde stark, dass SYSDATE vermuten ist OS-linked auch. Seien Sie sehr wachsam der Grund, warum Sie es verwenden müssen. Wenn jede Logik, die inkrementelle Verfolgung von Ereignissen implementiert (zum Beispiel sind Sie inkrementelle Exporte tun), und Sie müssen keine Elemente wie keine Vervielfältigung, auch stützt das Tracking auf sequenzielle IDs anstatt SYSDATE weggelassen gewährleisten.

In der Tat, dies gilt auch für Nicht-Cluster-Systeme, wie SYSDATE manchmal ändern kann (Zeitersparnis, Sysadmin Fehler ...).

Andere Tipps

SYSDATE ist der Knoten O bezogen; wenn es über den Cluster korrekt gewährleistet war, dann würden die Knoten müssen jedes Mal synchronisieren Sie SYSDATE genannt. In einer Cluster-Umgebung, geordnete Sequenzen sind teuer; am besten vermieden werden, wenn überhaupt möglich. Eine geordnete Folge werden Sie Einzigartigkeit und Ordnung garantieren -. Sie jedoch noch Lücken bekommen könnten, wenn die Verarbeitung fehlschlägt, nachdem aus der Sequenz der Auswahl und vor der Transaktion zu begehen

Wir verwenden ein paar Lösungen:

  1. Im Allgemeinen Sequenzen sind so eingestellt, ungeordnete mit großen Cache-Größen (25,000) zwischen den Cluster zu verringern Kommunikation.
  2. Verwenden Sie NTP Zeit-sync die Knoten (sie können immer noch sein falsch, + / - Nanosekunden, so dass Sie kann sich darauf nicht verlassen)
  3. Für Revisions Stil Protokolle verwenden wir SYSTIMESTAMP (Zeitstempel (6)) als eine einzigartige Identifier - und lebt mit der Tatsache, dass es möglich ist (obwohl extrem unwahrscheinlich), dass die Protokolle aus der Ordnung könnte erscheinen (dies ist auch möglich, mit normalen Verarbeitung, je nachdem, wann Commits auftreten)
  4. Wo ein geordnetes Sequenz erforderlich ist, und es kann Lücken werden - verwenden, um eine geordnete Sequenz (Versuchen Sie in einem geclusterten zu vermeiden Umwelt als "Cache" hilft nicht)

  5. Wenn eine geordnete Folge ist erforderlich - aber es kann keine Lücken sein - wir unsere eigenen Sequenzen Tisch haben, sperren Sie die Aufzeichnung, die Nummer bekommen und halten dann den Datensatz gesperrt, bis der Benutzer verpflichtet; Dies wird dazu führen, jeder versucht sonst, das gleiche zu bekommen Sequenz zu warten, bis der Benutzer Transaktion wird vollständig gebunden - wenn möglich vermeidet dies zu tun.

NTP verwenden Zeit auf allen Ihren Servern zu synchronisieren (Oracle und andere) und sicherstellen, dass dies nicht geschieht. Uneinheitliche Systemuhr sind ein Rezept für eine Katastrophe.

Ich würde erraten , dass sysdate würde inkonsistente Ergebnisse in dem Szenario zurückkehren Sie beschreiben.

Ich habe einen (wenig) Zeit für eine Antwort auf diese Frage suchen, aber nicht finden kann, aber, da sysdate nur das Datum / Uhrzeit vom Betriebssystem zurückkehrt, wie ich vermute dmitriy korrekt ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top