-- Session 1
-- Anlage eines DB-Links
-- (in diesem Fall ein loopback Link auf die gleiche Instanz,
-- was aber wohl keine Rolle spielt)
create database link loopback using 'TestDB';
-- Session 2
select count(*) from t_remote@loopback;
-- Session 1
drop database link loopback;
-- Session 2
--> liefert das Ergebnis der Abfrage
COUNT(*)
----------
24800000
-- erneute Ausführung
select count(*) from t_remote@loopback
*
FEHLER in Zeile 1:
ORA-02019: Verbindungsbeschreibung für Fern-Datenbank nicht gefunden
Somit bleibt die Verbindung also für die Dauer der Query bestehen. Wenn ich darüber nachdenke, ist das Verhalten auch ganz plausibel: selbst die Löschung einer Tabelle führt ja nicht (notwendigerweise) zum Abbruch einer Query.
Nachtrag 30.04.2012: in manchen Fällen führt das Löschen eines verwendeten DB-Links aber offenbar auch zum Fehler "ORA-02018: Datenbank-Link desselben Namens hat eine offene Verbindung", aber die genauen Bedingungen für das Auftreten des Fehlers sind mir noch unklar. Grundsätzlich halte ich DB-Links aber für statische Objekte, die man nicht nach Lust und Laune löschen oder umdefinieren sollte.
Keine Kommentare:
Kommentar veröffentlichen