Announcement

Collapse
No announcement yet.

Remote_dependencies_mode = timestamp

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

  • Remote_dependencies_mode = timestamp

    In der Datenbank LOKAL gibt es eine Funktion f_lokal, die eine Funktion f_fern in der Datenbank aufruft. Ein entsprechender Datenbank-Link wurde in der Datenbank LOKAL erzeugt. Das Ausführen der Funktion f_lokal funktioniert ohne Probleme.

    In der Datenbank LOKAL habe ich den Parameter REMOTE_DEPENDENCIES_MODE aus TIMESTAMP gesetzt. Die Funktion f_fern wurde rekompiliert. Laut Theorie sollte nun beim Ausführen der Funktion f_lokal ein Fehler auftreten, da beide Zeitstempel nicht übereinstimmen. Zudem sollte die Funktion f_lokal den Status INVALID erhalten. Erst beim erneuten Ausführen der Funktion f_lokal wird zunächst eine implizite Rekompilierung der Funktion f_lokal durchgeführt und bei erfolgreichem Abschluß wird die Funktion f_lokal dann ausgeführt.

    Bei meinen Versuchen unter Oracle 9.2 konnte ich aber den Fehler bezüglich unterschiedlicher Zeitstempel nicht erzeugen. Die Funktion f_lokal wurde jedesmal ohne Probleme ausgeführt werden.

    Was muss noch eingestellt werden, um diesen Fehler zu erzeugen?

    kuemmelchen

  • #2
    Das Problem wurde gefunden.

    Eine gespeicherte Funktion kann jederzeit rekompiliert werden.
    ALTER FUNCTION funktionsname COMPILE;
    Falls die Rekompilierung erfolgreich war, erscheint als Ausgabe:
    Funktion wurde geändert.

    Allerdings sind dabei zwei Fälle zu unterscheiden:
    1. Funktion war VALID => Der Zeitstempel ändert sich nicht. Funktion bleibt VALID.
    2. Funktion war INVALID => Der Zeitstempel ändert sich. Funktion wird VALID.

    Leider wurde dies im Fachbuch als auch in der Oracle-Dokumentation nicht so explizit erwähnt.

    kuemmelchen

    Comment

    Working...
    X