Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie rufe ich SELECT über DBLINK über DBLINK auf?

Zunächst einmal wäre ich aus architektonischer Sicht ziemlich misstrauisch gegenüber jedem Design, bei dem Daten über mehrere Datenbankverbindungen gezogen werden. Ich habe es gesehen, wenn die eventuelle Quelle eine alte Version von Oracle ist, mit der die Zieldatenbank keine direkte Verbindung herstellen kann, sodass eine Zwischendatenbank verwendet wurde, auf der eine Zwischenversion von Oracle ausgeführt wird. Das ist in der Praxis aber sehr selten.

Aus Performance-Sicht ist diese Art von Ansatz äußerst problematisch. Es gibt natürlich das Problem, dass die Daten zweimal über das Netzwerk gesendet werden. Aber noch besorgniserregender ist, dass Sie ein schwieriges Problem annehmen, verteilte SQL-Anweisungen optimieren und es fast unlösbar machen. Sie müssten im Grunde entweder garantieren, dass Sie niemals lokale Daten und entfernte Daten in derselben Abfrage abfragen, oder Sie müssten mit der resultierenden Leistung leben, wenn Oracle sich für einen dummen Abfrageplan entscheidet, weil die Tools übrig bleiben, um dies zu ermöglichen Optimierung dieser Art von Abfrage ist minimal.

Abgesehen davon müsste die Zwischendatenbank Synonyme oder Ansichten haben, die die Datenbankverbindung abstrahieren. Also

Auf A:

  • Datenbanklink zu B erstellen

Auf B:

Auf A können Sie dann

SELECT *
  FROM [email protected]