Frage

Ich baue eine J2EE-Web-Anwendungen mit Oracle-Datenbank. Der App-Server verwendet JDBC Connection-Pooling zu Oracle-Datenbank A (beispielsweise 20 Verbindungen max), und einige der Verwendungstabellen in Remote-Oracle-Datenbank B über Datenbank-Link ausgeführt Abfragen.

Wenn die App Server erstellt 20 Verbindungen zur Datenbank A, und alle Anfragen werden aufzublicken Daten in der Datenbank B, wird Datenbank A erstellen 20 Verbindungen zur Datenbank B? Oder alle Abfragen sind durch den gleichen Verbindungstunnel?

War es hilfreich?

Lösung

Es gibt eine Eins-zu-eins-Beziehung zwischen den lokalen und Remote-Datenbanksitzungen. Es hat für die folgenden Situationen sein: Session A1 auf der lokalen DB verläuft INSERT INTO table @ B VALUES ( 'A1'); Das Insert ist Teil der Session A1 der Transaktion.

Session A2 kommt zusammen und macht eine SELECT * FROM Tabelle @ B. Da Session A1 noch nicht begangen hat, Sitzung A2 sollte die Zeile nicht sehen. Deshalb braucht es eine Remote-Sitzung, die von diesem gehört A1 verschieden ist.

Ebenso können Sie alle 20 Sitzungen auf Datenbank gleichzeitig eine laufende haben Abfragen auf Datenbank B.

Es gibt ein DBMS_SESSION.CLOSE_DATABASE_LINK Verfahren, das die Remote-Verbindung trennen wird. Ich hatte ein paar Probleme mit dem (9i-Datenbank), wenn er weigerte sich, sie zu schließen ‚ausstehenden Transaktionen‘ sogar unmittelbar nach einem Commit behaupten. Es schien zwischengespeichert PL / SQL-Cursor zu beziehen. Es kann nicht mehr ein Thema sein.

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