För det första, arkitektoniskt, skulle jag vara ganska skeptisk till alla design som involverade att dra data över flera databaslänkar. Jag har sett det göras när den eventuella källan är någon gammal version av Oracle som måldatabasen inte kan ansluta till direkt, så en mellanliggande databas som kör en mellanversion av Oracle användes. Det är dock väldigt ovanligt i praktiken.
Ur ett prestationsperspektiv är den här typen av tillvägagångssätt allvarligt problematisk. Det finns naturligtvis problemet att data kommer att skickas över nätverket två gånger. Men mer än oroande, du tar ett svårt problem, optimerar distribuerade SQL-satser och gör det nästan svårlöst. Du måste i princip antingen garantera att du aldrig skulle fråga lokal data och fjärrdata i samma fråga eller så måste du leva med resultatet om Oracle bestämmer sig för en dum frågeplan eftersom uppsättningen verktyg kvar för att låta dig optimera denna typ av fråga är minimal.
Med detta sagt skulle den mellanliggande databasen behöva ha synonymer eller vyer som abstraherar bort databaslänken. Så
På A:
- skapa databaslänk till B
På B:
- skapa databaslänk till C
- skapa synonym
table
för[email protected]
På A kan du sedan
SELECT *
FROM [email protected]