Ten eerste, architectonisch gezien, zou ik behoorlijk wantrouwig zijn van elk ontwerp waarbij gegevens over meerdere databasekoppelingen moesten worden getrokken. Ik heb het gezien wanneer de uiteindelijke bron een oude versie van Oracle is waarmee de doeldatabase niet rechtstreeks verbinding kan maken, dus werd een tussenliggende database gebruikt waarop een tussenversie van Oracle werd uitgevoerd. Dat is in de praktijk echter zeer zeldzaam.
Vanuit een prestatieperspectief is dit soort benadering ernstig problematisch. Er is natuurlijk het probleem dat de gegevens twee keer over het netwerk worden verzonden. Maar zorgwekkender is dat u een moeilijk probleem pakt, gedistribueerde SQL-instructies optimaliseert en het bijna onhandelbaar maakt. Je zou eigenlijk ofwel moeten garanderen dat je nooit lokale gegevens en externe gegevens in dezelfde zoekopdracht zou opvragen, of je zou moeten leven met de resulterende prestaties als Oracle besluit tot een dom queryplan omdat de set tools over is om je in staat te stellen het optimaliseren van dit soort zoekopdrachten is minimaal.
Dat gezegd hebbende, zou de tussenliggende database synoniemen of weergaven moeten hebben die de databasekoppeling wegnemen. Dus
Op A:
- database link naar B maken
Op B:
- database link naar C maken
- maak synoniem
table
voor[email protected]
Op A kunt u dan
SELECT *
FROM [email protected]