Hi!
Nach 2 Tagen metalinken und herumprobieren bin ich mit meinem Latein am Ende (Anschnallen, langer Text):
Folgende Ausgangssituation:
In Datenbank DB1 existieren die User U1 und U2, in DB2 ebenso; in DB1 hat U1 alle möglichen Objekte (Tabellen, Indizies, Packages, Trigger, …), in DB2 hat er nix. U2 hat in DB1 gar nix, sondern seine Sachen nur auf DB2. Es existieren Public Syonyms in den DB’s, die gegenseitigen Public DB-Links (und natürlich die Public Synonyms zwischen den DB’s)
DB1 ist die DB, auf der die Applikation mit U1 läuft. Dieser will nun eine Package-Funktion von U2 auf DB2 ausführen.
Wie wir nun alle wissen (bzw. ich seit gestern) gibt es da vier nette Oracle Bugs (Note 365317.1), die den Aufruf „v := package.fun1“ in Reports verhindert (natürlich funktioniert’s in SQL-Plus ausgezeichnet).
Der Workaround, der in der Oracle-Note angegeben ist bringt zwar keine Fehlermeldung mehr, jedoch bleibt die Session aktiv und ziemlich hängen und müllt den Server mit Trace-Files zu, die aussagen, daß der Betriebssystem-Speicher voll ist - natürlich funktioniert der Workaround in SQL-Plus ausgezeichnet.
Meine weiteren Lösungsansätze: Die Funktion mittels Select (das würde nämlich funktionieren) und autonomer Transaktion durchführen: Funktioniert auf DB2, liefert aber auf DB1 einen „DML in Select“-Fehler.
Meine anderen Versuche (allerlei „Hüllen“ von Packages und Functions auf DB1, die allerleich Packages und Functions in DB2 aufrufen), lieferten das selbe Session-Verhalten (Server zumüllen); und natürlich lief alles in SQL-Plus ausgezeichnet …
Weiß noch irgendjemand ev. einen Lösungsansatz oder stand bereits vor dem selben Problem???
Folgende Worst-Case Szenarien stehen als letzter Ausweg an:
- Das DB2-Package wird auf DB1 unter U2 eingespielt.
- Der Report wird mit einer eigenen DB-Verbindung aufgerufen (obwohl ich für RUN_PRODUCT noch nix dafür gefunden habe)
- Sämtliche Reports (15 an der Zahl, die alle auf dieses Package zugreifen) werden als eigenständige Applikation auf DB2 geführt
Grüße,
ein verzweifelter Tomh
PS: Für einen iTar fehlt mir die Zeit: Ende dieser Woche MUSS alles laufen.