sql >> Databáze >  >> RDS >> Oracle

Jak vyvolat SELECT přes DBLINK přes DBLINK?

Za prvé, architektonicky bych byl docela pochybný o jakémkoli návrhu, který zahrnoval tahání dat přes více databázových odkazů. Viděl jsem to udělat, když případným zdrojem je nějaká starodávná verze Oracle, ke které se cílová databáze nemůže připojit přímo, takže byla použita přechodná databáze se střední verzí Oracle. To je však v praxi velmi vzácné.

Z hlediska výkonu je tento druh přístupu velmi problematický. Je tu samozřejmě problém, že data budou po síti posílána dvakrát. Ale co je znepokojivější, řešíte obtížný problém, optimalizujete distribuované příkazy SQL a činíte jej téměř neřešitelným. V zásadě byste museli buď zaručit, že se nikdy nebudete dotazovat na místní data a vzdálená data ve stejném dotazu, nebo budete muset žít s výsledným výkonem, pokud se Oracle rozhodne pro hloupý plán dotazů, protože sada nástrojů, která vám zbyla, optimalizovat tento druh dotazů je minimální.

Jak již bylo řečeno, zprostředkující databáze by musela mít synonyma nebo pohledy, které abstrahují odkaz na databázi. Takže

Na A:

  • vytvořit odkaz na databázi B

Na B:

Na A pak můžete

SELECT *
  FROM [email protected]



  1. Vytvářejte tabulky s dynamickými názvy pomocí uložené procedury

  2. Oracle SQLPlus nastavení proměnné prostředí na základě proměnné

  3. Funkce Postgres vytvoří, ale nespustí se

  4. Sloučení výsledků ze dvou tabulek do dat JSON